hi, ich hab eine schaltung aufgebaut, die die länge eines Impules mist. Dazu verwende ich den 16-Bit Timer des AT90S2313. /*--------------------------------------- TIMSK = 0x08; //Timer Interrupt. TCCR1A = 0x00; TCCR1B = 0x70; ------------------------------------------*/ Der Interrupt wird auch ausgelöst, allerdings sind die TCNT1H/L sowie ICR1H/L leer. Im "AVR-GCC-Tutorial " steht allerdings noch folgendes: Wie bereits oben erwähnt, müssen vor dem Zugriff auf dieses Register alle Interrupts gesperrt werden. Zudem müssen Low- und Highbyte des Registers in der richtigen Reihenfolge bearbeitet werden: Wie ist das gemeint ? jeroen
Die meinen damit dass bei Lese-Zugriff zuerst das L Byte gelesen werden muss, dann das H Byte (das temporaer in einem Puffer gelagert wird)
>> Wie bereits oben erwähnt, müssen vor dem Zugriff auf dieses Register >> alle Interrupts gesperrt werden. Zudem müssen Low- und Highbyte des >> Registers in der richtigen Reihenfolge bearbeitet werden: >> Wie ist das gemeint ? der satz ist doch nicht schwer zu verstehen. 1. interrupts disablen 2. auf low-byte zugreifen 3. auf high-byte zugreifen 4. interrupts wieder zulassen die punkte 2 und 3 eventuell vertauschen (gibt sicher ein pdf zu dem controller in dem das steht). eine von zwei möglichkeiten ist jedenfalls falsch und führt nicht zu dem gewünschten ergebnis. btw: hat der controller keine capture/compare-einheit? mit sowas lassen sich impulse viel einfacher fangen als mit irgendwelchen timer-tricks
reicht es wenn ich TIMSK auf 0x00 setzte oder muss ich das "Global Enable Interrupt Flag" löschen (wie das auch immer gehen soll) ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.