Hallo zusammen, Bin gerade am C-Programmieren eines ATmega644p Hier gibt es offensichtlich zwei Möglichkeiten den Interrupt z. B. INT0 auf fallende Flanke auszulösen: 1. über das Register EICRA Also beispielsweise : IR soll auf fallende Flanke bei INT0 reagieren: EIMSK |= (1<<INT0)|(1<<INT1); // INT0 und INT1 reagieren mit IR EICRA |= (1<<ISC01); // INT 0 reagiert nun EICRA &= ~(1<<ISC00); // auf abfallene Flanke EIFR &= ~(1<<INTF0); // External Interrupt Flag Register zurücksetzen sei(); // interrupt enable 2. setzen des Registers MCUCR Hier finde ich aber keine Beschreibung der beiden Bits IVSEL und IVCE Geht das mit beiden Möglichkeiten ? bye Bernhard
Bernhard S. wrote: > 2. setzen des Registers MCUCR > > Hier finde ich aber keine Beschreibung der beiden Bits > IVSEL und IVCE > > Geht das mit beiden Möglichkeiten ? STOPP. Datenblatt nochmal lesen.
Hallo Sven, Nach ein wenig Nachdenken - IVSEL und IVCE kann die Flanken des INT0,1, und 2 nicht steuern. Dazu sind es zu wenige Bits. Da ich ein Programmbeispiel eines AT90S4434 vorliegen habe: MCUCR = 2; // MCU Control Register INT0 interrupt on falling edge Hier muss MCUCR wohl anders belegt sein. Aber was bedeuten IVSEL und IVCE ? Das Datenblatt des ATmega664p liegt vor mir. Siehe Seite 262. MCUCR: 7 JTD = is enabled when JTGGEN fuse programmed 4 PUD = ? 1 IVSEL ? vielleicht : Interrupt Vector select? 0 IVCE ? vielleicht : Interrupt Vector change enabled? Seite 263 beschäftigt sich schon mit dem nächsten Register MCUSR bye Bernhard
Bernhard S. wrote: > 1 IVSEL ? vielleicht : Interrupt Vector select? > 0 IVCE ? vielleicht : Interrupt Vector change enabled? Richtig geraten :-) Kieck mal so ab Seite 58 abwärts...
Hallo Sven, Steht auf Seite 60... Fall erledigt. Vielen Dank. bye Bernhard
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.