AT91SAM7S - IRS wird doppelt ausgelöst

Gast #1313761
Lesenswert?

Hallo!

Gerade versuche ich, mit dem oben genannten Prozessor eine positive 
Flanke an 'PIN26' aufzuspüren. Das funktionert so weit auch ganz gut, 
bis auf die Tatsache, dass die ISR doppelt ausgelöst wird. Vielleicht 
könnt ihr mir bei der Fehlersuche helfen.

Ich habe versucht, im Quelltext alle Variablen so zu kommentieren, wie 
ich sie verstehe - es wäre nett, wenn ich mich korrigiert, falls ihr was 
falsches findet.
1
//Pin 26 als Input setzen
2
AT91C_BASE_PIOA->PIO_ODR = 1<<26;
3
AT91C_BASE_PIOA->PIO_PER = 1<<26;
4

5
//IR auf AIC Ebene konfigurieren, Quelle, Prio und ISR Handle zuweisen
6
AT91_BASE_AIC->AIC_IDCR = AT91C_ID_PIOA; //quelle
7
AT91_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = &IsrHandler; //Handler zu PIOA
8
AT91_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = ((0x3 <<  5)|6); //src. pos. edge, prio 6
9
AT91_BASE_AIC->AIC_ICCR = 1<<AT91C_ID_PIOA; //register leeren
10

11
//IR auf Peripherieebene einschalten
12
AT91C_BASE_PIOA->PIO_IER = 1<<26;
13

14
//IR auf AIC Ebene einschalten
15
AT91_BASE_AIC->AIC_IECR = 1<<AT91C_ID_PIOA;
16

17
void IsrHandler(void)
18
{
19
...
20
AT91C_BASE_AIC->AIC_EOICR = 0; //end of IR
21
}
Gast #1315425
Lesenswert?

Hallo!

Leider etwas spät, aber besser als nie :)

Der Pin liegt auf high (3V) und wird vom PPM Signal eines 
Modellbauempfängers auf low gezogen. Im Laufe der Signalperiode gibt das 
10 steigende Flanken. Ausgelöst wird der IR 20 mal

Gruß, Christian

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