Guten Abend allerseits!
Ich verzweifle beim Versuch meinen ATMega2561 per externem Interrupt aus
dem Power Down Mode aufzuwecken! Und zwar hab ich das Problem nur mit
dem INT7?!
Da meine Folientastatur an 4 Interruptleitungen hängt mache ich im
Program also viermal dasselbe, mit INT4,INT5,INT6 und INT7.
Hier ein kleiner Ausschnitt aus dem Code
1 | // Init Interrupt Ports input
|
2 | DDRE = ( (0<<DDE7) | (0<<DDE6) | (0<<DDE5) | (0<<DDE4));
|
3 | /* Ports output */
|
4 | DDRD = ( (1<<DDD7) | (1<<DDD4) );
|
5 | DDRG = ( (1<<DDG3) | (1<<DDG0) );
|
6 | /* Pullup resistance Interrupt Ports active */
|
7 | PORTE = ( (1<<PE7) | (1<<PE6) | (1<<PE5) | (1<<PE4));
|
8 | /* Pullup resistance output Ports inactive */
|
9 | PORTD = ( (0<<PD7) | (0<<PD4) );
|
10 | PORTG = ( (0<<PG3) | (0<<PG0) );
|
11 |
|
12 | EIMSK |= _BV(INT5); //Enable INT5
|
13 | EIMSK |= _BV(INT4); //Enable INT4
|
14 | EIMSK |= _BV(INT6); //Enable INT6
|
15 | EIMSK |= _BV(INT7); //Enable INT7
|
16 | EICRB |= _BV(ISC71); //Raising Edge Interrupt
|
17 | EICRB |= _BV(ISC70); //
|
18 |
|
19 | while (1)
|
20 | {
|
21 | ...
|
22 |
|
23 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
24 | sleep_enable();
|
25 | sei();
|
26 | sleep_mode();
|
27 | ...
|
28 | }
|
29 |
|
30 | ISR(INT5_vect)
|
31 | {
|
32 | }
|
33 | ISR(INT4_vect)
|
34 | {
|
35 | }
|
36 | ISR(INT6_vect)
|
37 | {
|
38 | }
|
39 | ISR(INT7_vect)
|
40 | {
|
41 | }
|
an was kann es also liegen, dass der Controller bei Tasten reagiert,
welche an INT4:6 hangen aber nicht auf diese an INT7???Ist für mich
unbegreifbar^^