Hallo zusammen,
ich habe das Problem, dass die externen Interrupts auf einem Atmega16
nicht auslösen. Meiner Meinung nach sollte Softwareseitig soweit alles
stimmen. An den Pins hängen Taster nach GND.
1 | void init(void)
|
2 | {
|
3 | DDRA = 0xff; //PortA
|
4 | DDRB = 0xff; //PortB
|
5 | DDRC = 0xff; //PortC as Output
|
6 | DDRD = 0x00; //PortD as Input
|
7 | PORTD = 0xff; //PullUps on PortD
|
8 |
|
9 | TCCR1B = 1; // Timer1 runs full system clock
|
10 | TIMSK |= (1<<OCIE1A); // enable Timer1
|
11 |
|
12 | MCUCR |= (1<<ISC01); //INT0 on falling edge
|
13 | MCUCR |= (1<<ISC11); //INT1 on falling edge
|
14 | GICR &= (1<<INT0); //enable INT0
|
15 | GICR &= (1<<INT1); //enable INT1
|
16 |
|
17 | sei();
|
18 | }
|
19 |
|
20 | ISR(INT0_vect)
|
21 | {
|
22 | pwm_setting[0] = 0xff;
|
23 | }
|
24 |
|
25 | ISR(INT1_vect)
|
26 | {
|
27 | pwm_setting[0] = 0x00;
|
28 | }
|
Die PWM an sich funktioniert, deswegen hier nur die relevanten Auszüge
aus dem Code. Die Main-Loop ist zum Testen komplett leer. In der ISR
soll testweise eine LED an- bzw. ausgeschaltet werden.
Jemand eine Idee, woran es hängt?
Danke und Gruß
Dominique Görsch