Gast
#355234
Hallo! Ich versuche seit ein paar Tagen eine Frequenzmessung mit dem AVR zu machen. Grundidee war folgende: - Timer 0 löst nach Ablaufen einer Torzeit von 100msec ein Interrupt aus - In der Interrupt-Routine werden die fallenden Flanken mit Timer 1 als Zähler gezählt - Anschließend werden die Pulse mit 10 multipliziert und fertig Um einen gescheiten Rechteckgenerator zu haben, verwendete ich Timer 2 und schloss ihn direkt an den ext. eingang des Zählers. Das Problem ist nun folgenedes: bei einer errechneten (!!!) Frequenz von 976Hz an OC2, also am Ausgang des Timer 2 bekomme ich eine Frequenz von 780Hz am Display angezeigt. Hingegen bei einer Frequenz von 100Hz an OC2 den Wert 100 am Display. Der Fehler ist dann nocht nichtmal linear, dass man ihn einfach auskorrigieren könnte. Kann denn der Fehler darin liegen, dass beim Auftreten eines Interruptes die ISR zu lange ist, und dadurch Flanken/Pulse verloren gehen? Ich hänge mal die C-Datei an, in der aber Timer 1 als Zeitgeber und Timer 0 als Zähler funktionieren. Habe das auch andersherum probiert, das ergebins war aber genau das selbe.