Was stimmt an diesem Code nicht (Externe Interrupts)

Gast #2481564
Lesenswert?

Ich finde den Felher in meinem Code nicht. Könnt ihr mir helfen?
Es handelt sich btw um einen ATtiny2313 (auf dem Pollin Board).

Ich habe schon versucht den Fehler mithilfe des simulators zu finden, 
nur ich kann den Flag in EIFR nicht manuell (oder im Code) setzen.
1
/*
2
 * ext_interupt.c
3
 *
4
 * Created: 31.12.2011 14:39:53
5
 *  Author: Felix
6
 */ 
7

8
#include <avr/io.h>
9
#include <avr/interrupt.h>
10

11
int main(void)
12
{
13
  //Int0 = PD2 = Taster1 
14
  //Int1 = PD3 = Taster2
15
  MCUCR |= 0b00001111; //steigende flanke triggert INT0 und 1
16
  GIMSK |= 0b11000000; //INT0 und 1 enabled
17
  DDRD |= (1<<PD5) && (1<<PD6); //PD5 und 6 als Ausgang (LEDs)
18
  sei();
19
    while(1)
20
    {
21
    //nichts
22
    
23
    }
24
}
25
ISR(INT0_vect){
26
  PORTD ^= (1<<PD5); //toggle LED1
27
}
28
ISR(INT1_vect){
29
  PORTD ^= (1<<PD6); //toggle LED2
30
}
#2481567
Lesenswert?

KUGA schrieb:

> Ich habe schon versucht den Fehler mithilfe des simulators zu finden,
> nur ich kann den Flag in EIFR nicht manuell (oder im Code) setzen.

Documentation-Not-Read-Error: Die Bits im EIFR kann man nicht selbst 
setzen, die werden von der Hardware gesetzt und durch Schreiben von 1 
gelöscht.

Abgesehen davon wärs für Tipps nützlich, zu wissen was denn eigentlich 
nicht funktioniert. Und in welcher Umgebung, d.h. was hängt an INT0/1?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren