O ile pamiętam (a robiłem coś podobnego na AVR 18 lat temu, tak że mogłem coś pomieszać), to normalne wejście timera wyrobi się tylko do około 1/3 częstotliwości zegara, i to by się zgadzało z twoimi osiągnięciami. Zegar masz 16 MHz a / 3 = 5,3 MHz. Maksymalny zegar ATmega328 to 20 MHz tak że wiele nie przyspieszysz zmieniając zegar. Natomiast przypomina mi się, że można było to obejść poprzez tryb asynchroniczny timera, który umożliwiał taktowanie timera z zewnętrznego pinu i dzięki temu można było liczyć wyższe częstotliwości. Wtedy nie liczysz cykli na pinie, tylko liczysz cykle zegara tym timerem. Niby to samo a nie to samo.
Zmiana na STM32 by pewnie pomogła, natomiast to jest zupełnie inny procesor, z dużo bardziej rozbudowanymi peryferiami, i przeniesienie kodu może nie być takie łatwe. |