Räkneoperation atmega168
Postat: 3 december 2007, 21:34:21
Har ett problem med en atmega168 som ska mäta tiden mellan pulser och baserat på detta sedan presentera en frekvens.
För att få en exakt mätning använder jag mig av en DS32KHZ som genererar en stabil frekvens som räknas på timer1. En interrupt körs vid positiv flank på "räknar-pinnen" (alltså frekvensen som ska mätas) och timer1 kollas då av för att ta reda på förfluten tid mellan två pulser. Det är här problemen börjar.
För att konvertera denna mätning till en frekvens skulle jag vilja utföra följande räkneoperation med det tal (nedan kallat "count") som jag läser från timer1:
frekvens = 1/(count/32768);
Saken är den att mikroprocessorn inte verkar älska denna typ av beräkningar med decimala tal, och jag undrar hur jag enklast gör denna beräkning. Det känns som att lösningen är ganska enkel, men jag kommer helt enkelt inte fram till något vettigt själv.
Tack på förhand!
För att få en exakt mätning använder jag mig av en DS32KHZ som genererar en stabil frekvens som räknas på timer1. En interrupt körs vid positiv flank på "räknar-pinnen" (alltså frekvensen som ska mätas) och timer1 kollas då av för att ta reda på förfluten tid mellan två pulser. Det är här problemen börjar.
För att konvertera denna mätning till en frekvens skulle jag vilja utföra följande räkneoperation med det tal (nedan kallat "count") som jag läser från timer1:
frekvens = 1/(count/32768);
Saken är den att mikroprocessorn inte verkar älska denna typ av beräkningar med decimala tal, och jag undrar hur jag enklast gör denna beräkning. Det känns som att lösningen är ganska enkel, men jag kommer helt enkelt inte fram till något vettigt själv.
Tack på förhand!