Hallo Leute, ich versuche gerade das datenblatt des AT90CAN32 zu lesen. Leider gibt es einen Satz den ich zwar sprachlich verstehe aber nicht inhaltlich. Ich hoffe ihr könnt mir helfen. Interrupt requests signals are all visible in the TIFRn. All interrupts are individually masked with the TIMSKn. Vielen Dank schonmal :-)
Hi In TIFRn befinden sich die Flags für die einzelnen Timer-Interruptquellen. Diese werden immer wenn ein entsprechendes Ereignis eintritt gesetzt. Ob sie dann einen Interrupt auslösen wird im Register TIMSKn eingestellt. MfG Spess
Die diversen Interrupt-Quellen setzen einzelne Bits im TIFR. Welche dieser Ursachen dann konkrete Interrupts auslösen wird vom TIMSK kontrolliert.
Sorry. ich verstehe leider nur Bahnhof. Es geht ja um einen 16-Bit-Timer. da geht es ja darum das ich ein compare wert vorgebe. habe ich ein compare match, als wurde beim hochzählen eben dieser wert erreicht wird ein interrupt ausgelöst, oder?
@ Jürgen (Gast) >Es geht ja um einen 16-Bit-Timer. da geht es ja darum das ich ein >compare wert vorgebe. habe ich ein compare match, als wurde beim >hochzählen eben dieser wert erreicht wird ein interrupt ausgelöst, oder? Ja, siehe Interrupt oder Soft-PWM. MFG Falk
Jürgen schrieb: > Sorry. ich verstehe leider nur Bahnhof. > > Es geht ja um einen 16-Bit-Timer. da geht es ja darum das ich ein > compare wert vorgebe. habe ich ein compare match, als wurde beim > hochzählen eben dieser wert erreicht wird ein interrupt ausgelöst, oder? Nein. Es geht in erster Linie nicht um einen Timer. Es geht darum wie Interrupts bearbeitet werden. Tritt etwas Interruptwürdiges auf, so wird das entsprechende Bit im TIFR Register gesetzt um dort festzuhalten, dass das Ereignis aufgetreten ist. Ob dieses Ereignis dann dazu führt, dass die zugehörige ISR aufgerufen wird oder nicht, entscheidet das TIMSK Register. Nur wenn das zugehörige Bit dort gesetzt ist, mündet das ganze in einem Aufruf der ISR. Alle Interrupt-Mechanismen auf dem AVR funktionieren so: Mit einem Bit wird festgehalten, dass das Ereignis aufgetreten ist Mit einem anderen Bit wird festgelegt, ob die dazu gehörende ISR aufgerufen wird. Das ein bestimmtes Ereignis aufgetreten ist, wird IMMER mit einem Bit festgehalten. Egal ob eine ISR dafür vereinbart wurde oder nicht. Egal ob die Interrupts generell freigegeben sind (sei()) oder nicht (cli()).
Hi >habe ich ein compare match, als wurde beim >hochzählen eben dieser wert erreicht wird ein interrupt ausgelöst, oder? Das Flag wird in TIFR gesetzt. Ein Interrupt wird aber nur ausgelöst, wenn je nach Compareregister das Bit OCIE1A, OCIE1B oder OCIE1C in TIMSK1 gesetzt ist. MfG Spess
Danke Leute. Ich komme dem Verständniss immer näher. Jetzt ist mir zwar noch die genaue zuordnung welcher Interrupt genau welches Bit setzt und wie die zuordnung zu einer ISR funktioniert unklar. Aber da lese ich erstmal das Dastenblatt weiter. ich bin ja erst am Anfang des Kapitels. Ich danke euch
Jürgen schrieb: > Danke Leute. > Ich komme dem Verständniss immer näher. Jetzt ist mir zwar noch die > genaue zuordnung welcher Interrupt genau welches Bit setzt und wie die > zuordnung zu einer ISR funktioniert unklar. > Aber da lese ich erstmal das Dastenblatt weiter. ich bin ja erst am > Anfang des Kapitels. Das wird dir alles spätestens im letzten Abschnitt des Kapitels (in deinem Fall Timer) klar, in dem alle Register mit allen Bits und was sie bedeuten genauestens aufgeschlüsselt sind.
mit den TIMSK-bits schaltet man den interrupt an und aus - grundsätzlich also. dann kommt je nach interrupt ein ereignis - wenn das eintritt wird das TIFR-bit gesetzt. jedes mal. dann kommt der interne interrupt-controller vom atmega ins spiel.. sofern interrupts erlaubt sind, schaut der nach ob TIFR gesetzt und TIMSK gesetzt ist, wenn ja dann wird das TIFR-bit gelöscht und der interrupt angesprungen.
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.