Attiny13 INT0 Logical Change Problem

Gast #3131272
Lesenswert?

Hallo zusammen,

Ich kann in meinem Programm keinen Fehler finden. Lege ich an INT0 (PB1) 
ein Rechtecksignal an dann sollten doch PB4 und PB5 toggeln.

Hier der Code:
1
#include <avr/interrupt.h>
2
#include <avr/io.h>
3
#include <util/delay.h>
4

5

6
ISR (INT0_vect) {
7
  if (PINB & (1<<PINB1)) {
8
    PORTB &= ~(PB5);
9
    PORTB |= (1<<PB4);
10
  } else {
11
    PORTB &= ~(PB4);
12
    PORTB |= (1<<PB5);
13
  }
14
}
15
int main(void) {
16

17
  // Outputs
18
  DDRB |= (1<<PB4);
19
  DDRB |= (1<<PB5);
20

21
  // Inputs
22
  DDRB &= ~(1<<PB1);
23
  PORTB |= (1<<PB1);
24

25
  // Start Sequenze. Only for test
26
  PORTB |= (1<<PB4);
27
  _delay_ms(200);
28
  PORTB &= ~(1<<PB4);
29
  _delay_ms(400);
30
  PORTB |= (1<<PB4);
31
  _delay_ms(200);
32
  PORTB &= ~(1<<PB4);
33

34
  // Interrupts
35
  // INT0 = Pin Logical Change
36
  MCUCR |= (1<<ISC00);
37
  // INT0 = enable
38
  GIMSK |= (1<<INT0);
39

40
  // Enable Interrupts
41
  sei();
42

43

44
  while(1) {
45

46

47
  }
48
}

Idee? Danke

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