Witam, próbuję zrobić cyfrowy metronom - póki co składa się on z wyświetlacza 7-segmentowego i dwóch przycisków służących do wyboru tempa (BPM). Zegar wewnętrzny ustawiony na 1MHz.
Mam jednak problem z napisaniem części kodu odpowiedzialnej za "piszczenie" buzzera w wybranym tempie.
Korzystam z timera 1 w trybie 4 (CTC) z preskalerem 8, co według moich obliczeń daje częstotliwość 1000Hz. W przerwaniu odbywa się zmiana stanu na przeciwny, czyli częstotliwość spada do 500 Hz. Aby uzyskać 60 BPM (1Hz) przerwanie musi wystąpić 500 razy.
Mam jednak pytanie, czy można to zrobić w jakiś inny sposób, aby zmiana tempa zależała tylko od zmiennej speed?
Poniżej zamieszczam fragment kodu
Mam jednak problem z napisaniem części kodu odpowiedzialnej za "piszczenie" buzzera w wybranym tempie.
Korzystam z timera 1 w trybie 4 (CTC) z preskalerem 8, co według moich obliczeń daje częstotliwość 1000Hz. W przerwaniu odbywa się zmiana stanu na przeciwny, czyli częstotliwość spada do 500 Hz. Aby uzyskać 60 BPM (1Hz) przerwanie musi wystąpić 500 razy.
Mam jednak pytanie, czy można to zrobić w jakiś inny sposób, aby zmiana tempa zależała tylko od zmiennej speed?
Kod: C / C++
Poniżej zamieszczam fragment kodu
Kod: C / C++