Interrupt 8Bit AVR

Gast #4347289
Lesenswert?

Hallo,

nutze einen Atmega64M1

Versuche den Externen Interrupt 0 zu nutzen. Und zwar an PIN 14 (PD6)
1
ISR (INT0_vect) {
2
  cli();
3
  PORTB ^= 1 << PORTB3;
4
  sei();
5
}
6

7

8
void main(void) {
9
// Externer Interrupt
10
EICRA = (1 << ISC00);    // Any logic change...
11
EIMSK = (1 << INT0);    // External Interrupt Request 0 Enable
12
PCICR = (1 << PCIE2);    // Pin Change Enable 2 (PCINT23:16)
13
PCMSK2 = (1 << PCINT22);  // INT22 - PIN: PD6
14
DDRD &= ~(1<<6);    // PD6 als Eingang
15
PORTD|= (1<<6);      // Pullup aktivieren
16

17
PORTB = 0x00;
18

19
sei();        // Global Interrupts aktivieren
20
}

Was mache ich falsch? Kann das ganze kompilieren. Timer Interrupt 
funktioniert.

Würde mich über Hilfe sehr freuen.
Gast #4347312
Lesenswert?

Interrupt 8Bit AVR schrieb im Beitrag #4347289:
> Was mache ich falsch? Kann das ganze kompilieren. Timer Interrupt
> funktioniert.

Ohne zu erklären, was denn jetzt dein Problem ist, kannst du das auch in 
dein Tagebuch schreiben.
#4347323
Lesenswert?

Interrupt 8Bit AVR schrieb im Beitrag #4347289:
> EICRA = (1 << ISC00);    // Any logic change...
> EIMSK = (1 << INT0);    // External Interrupt Request 0 Enable
> PCICR = (1 << PCIE2);    // Pin Change Enable 2 (PCINT23:16)
> PCMSK2 = (1 << PCINT22);  // INT22 - PIN: PD6

Willst du jetzt den externen Interrupt benutzen oder den Pin Change 
Interrupt? Entscheide dich ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren