W telegrafii wszystko rozbija się o prawidłowy timing.
Tutaj można znaleźć świetnie opisane relacje czasowe : https://morsecode.world/international/timing.html
Przy projektowaniu klucza należałoby się zastanowić jak szybko potrzebujemy próbkować stany dźwigni.
Przy ekstremalnym założeniu że ktoś pracowałby 100WPM (są tacy co odbierają takie tempa choć osobiście nie znam nikogo kto by je nadawał) jeden element (krótki dźwięk - "kropka") trwałby t=60/(50x100)=12ms
W keyerze sprawdzenie stanu czy dana łopatka jest wciśnięta nastąpi dopiero po cyklu 2t (gdzie t="kropka"), wtedy stwierdzi on czy jest ona dalej wciśnięta, zwolniona lub wciśnięty przeciwstawna łopatka.
Niestety moja pętla programu wykonuje się ~18-19ms co godnie z twierdzeniem Nyquista–Shannon-a powinno dać satysfakcjonujący efekt do 60 WPM - co i tak przewyższa umiejętności 95% populacji telegrafistów.
Można także spróbować wykorzystać wewnętrzny komparator ADS1115 oraz wyjście ALRT co sprowadziło by rolę mikrokontrolera jedynie do zadania wartości do rejestrów. Układ w trybie ciągłym może osiągnąć nawet 860 SPS (samples per second) co daleko wykracza poza nasze potrzeby, lecz zmusza do wykorzystania dwóch układów ADS.
EDIT:
Popełniłem drobny błąd - układ defaultowo ustawiony jest na 128SPS - co daje ok 8ms per shot, wraz z komunikacją dawało to ok 9-10ms - stąd cykl dla obu łopatek wyniósł ~18-19ms
Przestawiłem go na 860SPS (~1ms/shot) - całość obecnie wykonuje się w 5-6ms (z czego należy pamiętać że sama część benchmarkowa również zabiera parę cykli mikrokontrolera) - co daje na tyle dużą gęstość próbek że nawet owe 100 WPM nam nie straszne (a w zasadzie nawet 120).
Tutaj można znaleźć świetnie opisane relacje czasowe : https://morsecode.world/international/timing.html
Przy projektowaniu klucza należałoby się zastanowić jak szybko potrzebujemy próbkować stany dźwigni.
Przy ekstremalnym założeniu że ktoś pracowałby 100WPM (są tacy co odbierają takie tempa choć osobiście nie znam nikogo kto by je nadawał) jeden element (krótki dźwięk - "kropka") trwałby t=60/(50x100)=12ms
W keyerze sprawdzenie stanu czy dana łopatka jest wciśnięta nastąpi dopiero po cyklu 2t (gdzie t="kropka"), wtedy stwierdzi on czy jest ona dalej wciśnięta, zwolniona lub wciśnięty przeciwstawna łopatka.
Niestety moja pętla programu wykonuje się ~18-19ms co godnie z twierdzeniem Nyquista–Shannon-a powinno dać satysfakcjonujący efekt do 60 WPM - co i tak przewyższa umiejętności 95% populacji telegrafistów.
Można także spróbować wykorzystać wewnętrzny komparator ADS1115 oraz wyjście ALRT co sprowadziło by rolę mikrokontrolera jedynie do zadania wartości do rejestrów. Układ w trybie ciągłym może osiągnąć nawet 860 SPS (samples per second) co daleko wykracza poza nasze potrzeby, lecz zmusza do wykorzystania dwóch układów ADS.
EDIT:
Popełniłem drobny błąd - układ defaultowo ustawiony jest na 128SPS - co daje ok 8ms per shot, wraz z komunikacją dawało to ok 9-10ms - stąd cykl dla obu łopatek wyniósł ~18-19ms
Przestawiłem go na 860SPS (~1ms/shot) - całość obecnie wykonuje się w 5-6ms (z czego należy pamiętać że sama część benchmarkowa również zabiera parę cykli mikrokontrolera) - co daje na tyle dużą gęstość próbek że nawet owe 100 WPM nam nie straszne (a w zasadzie nawet 120).
Komentarze