Gast
#269896
Sers Leute, ich programmiere in C mit Codevision. Der ATMega läuft mit 16MHz. Nun möchte ich den ICP nutzen, indem ich bei fallender Flanke den Zähler rücksetze und auf steigende Flanke umstelle (TCCR1B=0xC1). Kommt die steigende Flanke, wird der ICR-Register ausgelesen und gespeichert (ICRH zuerstm, dann low), dann wieder auf fallende Flanke umgestellt (TCCR1B=0x81). Wenn ich nun zum Test einen Low-Pegel von 90µs anlege, so müsste ich im ICR-Register so nen ungefähren Wert von 1440 haben. Mein tatsächlicher (gemessener) Wert ist jedoch viel niedriger (so ca.190). Die Ausgabe (ans Termianl) findet in einem anderen Timer statt. Lediglich habe ich noch eine Kontrollfunktion in dieser ICP-ISR eingebaut, indem ich einen PIN für die Dauer der ISR auf 1 setze. Somit kann ich am OSZI beobachten, ob die ISR überhaupt durchlaufen wird. -> Ja sie wird. Meine Frage: Wieso habe ich so eine große Differenz zwischen theoretischem und gemessenen ICR Wert?