Witam.
Składam właśnie pewien układ w którym potrzebuję generować dwa przebiegi kwadratowe o zadanej częstotliwości (oczywiście przebiegi niezależne od siebie).
Najprostszym i oczywistym rozwiązaniem jest użycie timer'a w trybie CTC, jednak tutaj pojawia się pewien problem - AVR ma zegar 16MHz, a zakresy w jakich potrzebuję kontrolować obie częstotliwości to (mniej więcej) 10-400Hz.
Dla timera 16 bitowego to nie problem, ale w atmedze328, którą pierwotnie chciałem wykorzystać taki timer jest tylko jeden, a jak wynika z prostej matematyki timer 8-bitowy nawet przy maksymalnym preskalerze dla takiego zegara układu nie zejdzie mi poniżej ~30Hz.
I tutaj moje pytanie - jak obejść ten problem?
Zastosować jakiś zewnętrzny układ (I2C/SPI) służący do generowania przebiegów?
Wykorzystać jakąś większą AVRkę, która ma conajmniej 2 timery 16-bitowe? Jeżeli tak, to jaką (idealnie byłoby w DIP, ale pewnie jest to nierealne)?
Wrzucić na płytkę jakiś dodatkowy procek (ATTiny?) z timerem 16-bit i podawać mu wartość po SPI/I2C z mastera?
Czy może jest jakieś oczywiste rozwiązanie, które zrobi to czego oczekuję na atmedze328, tylko go nie dostrzegam?
Z góry dzięki za pomoc.
Składam właśnie pewien układ w którym potrzebuję generować dwa przebiegi kwadratowe o zadanej częstotliwości (oczywiście przebiegi niezależne od siebie).
Najprostszym i oczywistym rozwiązaniem jest użycie timer'a w trybie CTC, jednak tutaj pojawia się pewien problem - AVR ma zegar 16MHz, a zakresy w jakich potrzebuję kontrolować obie częstotliwości to (mniej więcej) 10-400Hz.
Dla timera 16 bitowego to nie problem, ale w atmedze328, którą pierwotnie chciałem wykorzystać taki timer jest tylko jeden, a jak wynika z prostej matematyki timer 8-bitowy nawet przy maksymalnym preskalerze dla takiego zegara układu nie zejdzie mi poniżej ~30Hz.
I tutaj moje pytanie - jak obejść ten problem?
Zastosować jakiś zewnętrzny układ (I2C/SPI) służący do generowania przebiegów?
Wykorzystać jakąś większą AVRkę, która ma conajmniej 2 timery 16-bitowe? Jeżeli tak, to jaką (idealnie byłoby w DIP, ale pewnie jest to nierealne)?
Wrzucić na płytkę jakiś dodatkowy procek (ATTiny?) z timerem 16-bit i podawać mu wartość po SPI/I2C z mastera?
Czy może jest jakieś oczywiste rozwiązanie, które zrobi to czego oczekuję na atmedze328, tylko go nie dostrzegam?
Z góry dzięki za pomoc.