Forum: Compiler & IDEs IR auf INTx - MCUCR oder EICRA verwenden ?


von Bernhard S. (dk9nw)


Lesenswert?

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

von Sven P. (Gast)


Lesenswert?

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.

von Bernhard S. (dk9nw)


Lesenswert?

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

von Sven P. (Gast)


Lesenswert?

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...

von Bernhard S. (dk9nw)


Lesenswert?

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
Noch kein Account? Hier anmelden.