Hallo zusammen,
ich versuche gerade einen attiny13 mit pinchange interrupts zu
betreiben, allerdings wird kein interrupt ausgelöst (oder vlt auch nur
nicht abgefangen)
Das hier ist mein Code
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include <avr/delay.h>
|
4 | #include <avr/sleep.h>
|
5 |
|
6 | volatile uint8_t auf;
|
7 | volatile uint8_t zu;
|
8 | ISR(PCINT){
|
9 | if(PINB & 0b00000001)
|
10 | auf=1;
|
11 | if(PINB & 0b00000010)
|
12 | zu=1;
|
13 | }
|
14 |
|
15 | void open(){
|
16 | PORTB &= ~(0b00000100);
|
17 | _delay_ms(500);
|
18 | PORTB |= 0b00000100;
|
19 | _delay_ms(50);
|
20 | }
|
21 |
|
22 | void close(){
|
23 | PORTB &= ~(0b00001000);
|
24 | _delay_ms(500);
|
25 | PORTB |= 0b00001000;
|
26 | _delay_ms(50);
|
27 |
|
28 | }
|
29 |
|
30 |
|
31 |
|
32 | int main(void)
|
33 | {
|
34 | DDRB |= 0b00001100; //set pins 2 and 3 as output
|
35 | PORTB |= 0b00001100; //set pins 2 and 3 high
|
36 | PCMSK = 0x03; //enable pcint0 and 1
|
37 | GIMSK |= PCIE;
|
38 | sei(); //enable interrupts
|
39 | while (1)
|
40 | {
|
41 | if(auf){
|
42 | open();
|
43 | auf=0;
|
44 | }
|
45 | if(zu){
|
46 | close();
|
47 | zu=0;
|
48 | }
|
49 | //set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
50 | //sleep_mode();
|
51 | }
|
52 | }
|
Hat jemand ne idee, woran es liegen kann?