Cześć, od jakiegoś czasu zajmuje się zagadnieniem generowania impulsu do sterownika silnika krokowego,
mam zewnętrzny sterownik reagujący na impuls >2,5us i chce zrobić aby silnik startował i zatrzymywał się z rampą.
Obecnie jedyne rozwiązanie które udało mi się zrealizować opiera się na dwóch timerach, 1 - 16bit 2-8bit
Timer 1 zajmuje się generowaniem "częstotliwości nośnej" a timer 2 reguluje długość impulsu,
za każdym przerwaniem timera 1 zmieniam wartość OCR1A na wartość z tablicy która jest uzupełniana przy inicjalizacji programu(nie byłem w stanie wykonywać tych działań w przerwaniu bo się nie wyrabiałem) dzięki czemu zwiększam częstotliwość oraz uruchamiam timer 2 który po odliczeniu 4us wykonuje przerwanie w którym się wyłącza.
Działa to zgodnie z założeniami, tylko może ma ktoś pomysł jak zrobić to wykorzystując tylko Timer 16 bitów, albo jak zwiększyć ilość kroków ramy którą obecnie ogranicza wielkość tablicy.
Oto mój kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozdrawiam
KoreX