24.02.2020 (19:28:57)
8-bit
:
Ježiši kriste, vždyť na tom snad vůbec není co řešit. Jakou PWM? Myslel jsem, že chceš měřit frekvenci, ne? Nepotřebuješ PWM, potřebuješ jenom pro každý kanál jeden capture časovač. Normálně spusť 8 časovačů a nech je generovat input capture interrupt. K tomu ještě budeš potřebovat jeden co ti odpočítá těch 5 ms nebo kolik (ten negeneruje interrupt). Časovače se buď můžou resetovat nebo ne, je to jedno.
- Pokud ne, tak si v prvním interruptu poznamenej čas a v každém dalším inkrementuj počet period. Jak nastane další capture interrupt a už doběhl ten 5ms časovač, dostaneš dT (5 ms a něco) a celkový počet period;
- nebo pokud se mají resetovat při capture eventu (třeba pokud by to jinak mohlo přetéct), tak 1. capture interrupt ignoruj a v každém dalším inkrementuj počet period a přičítej dobu co zaznamenal časovač k celkové změřené době. Až doběhne 5 ms, budeš mít ve 2 registrech počet period a čas. Nebo alternativně můžeš změřenou dobu v každém interruptu průměrovat, pak to bude míň háklivé na jitter.
Jinak není důležitá frekvence jádra, ale frekvence periferií, tj. max. f jakou může počítat ten časovač.