Ik ben wat aan het experimenteren met een atmega16 maar heb een probleem met interrupts. Als ik port D2 0 maak gebeurt er helemaal niets. De led op port A.0 zou 10x achter elkaar snel moeten knipperen.
Mijn programma ziet er zo uit:
Mijn programma ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| #include <mega16.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
unsigned int x,y;
for(y=0; y < 10; y++) {
for(x = 0; x < 0xff; x++);
PORTA = PORTA ^ 0x1; // toggle bit0 van portA
}
}
int main(void) {
unsigned x;
DDRA = 0x01; // bit 0 port A output
GICR = 0x40; // enable externe interrupt bit INT0
MCUCR = 0x02; // ISC0 bit (neergaande flank)
#asm("sei"); // zet interrupt flag
while(1){
for(x = 0; x < 0xffff; x++);
PORTA = PORTA ^ 0x1; // toggle bit0 van portA
}
return 0;
} |