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