Forum: Compiler & IDEs ATtiny2313 - INT0 und INT1 gleichzeitig


von Chris (Gast)


Lesenswert?

Hi,

ich bin ziemlich unerfahren was die Programmierung von µC betrifft, da 
ich mir erst vor ein paar Tagen das Atmel Evaluationboard (von Pollin) 
bestellt habe, dazu einen ATtiny2313.

Nun versuche ich die LED die auf diesem Board ist zum Blinken zu 
bringen.
Das Blinken selbst ist nicht das Problem - mein Problem liegt darin:

Entferne ich all den Code, der zu INT1_vect "gehört", dann funktioniert 
das Schalten der LED per INT0_vect wunderbar (beim Drücken auf Taster1 
fängt die LED das blinken an).

Füge ich nun den Code für INT1_vect ein, compile und flashe, dann ist 
Taster1 nicht mehr funktionstüchtig, Taster2 dahingegen funktioniert.

Kann der ATtiny2313 nur einen Interrupt "verwalten" oder liegt mein 
Fehler wo anders ?

Ich nutze avr-gcc 4.3.2 unter Debian Lenny.
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <avr/interrupt.h>
4
5
volatile uint8_t led = 0;
6
7
ISR(INT0_vect)
8
{
9
  led = ~led; // Toggle "led"
10
}
11
12
ISR(INT1_vect)
13
{
14
  led = ~led;
15
}
16
17
int main(void)
18
{
19
  DDRD |= _BV(PD5); // PD5 -> Output
20
  DDRD &=~ _BV(PD2); // PD2 -> Input
21
  DDRD &=~ _BV(PD3); // PD3 -> Input
22
23
  GIMSK = _BV(INT0); // Enable INT0 at PD2
24
  MCUCR = _BV(ISC01); // INT0 at release of button
25
26
  GIMSK = _BV(INT1); // Enable INT1 at PD3
27
  MCUCR = _BV(ISC11); // INT1 at release of button
28
29
  sei(); // Enable INTs
30
31
  while(1)
32
  {
33
    if(led)
34
    {
35
      PORTD ^= _BV(PD5);
36
      _delay_ms(500);
37
    }
38
  }
39
  return 0;
40
}

Grüße Chris

von ??? (Gast)


Lesenswert?

Chris schrieb:
> GIMSK = _BV(INT0); // Enable INT0 at PD2
>   MCUCR = _BV(ISC01); // INT0 at release of button
>
>   GIMSK = _BV(INT1); // Enable INT1 at PD3
>   MCUCR = _BV(ISC11); // INT1 at release of button

Du überschreibst die Einstellungen vom INT0 bei der Initialisierung von 
INT1.
Mach es so wie bei den Ports mit "|=".

???

von Chris (Gast)


Lesenswert?

Hi,

ok, das wars doch tatsächlich schon...

Ewig lang danach gegoogled, und dann ists sowas banales womit ich nicht 
gerechnet habe.

Danke schön,

Chris

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.