Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S - IRS wird doppelt ausgelöst


von Christian (Gast)


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
}

von vlad (Gast)


Lesenswert?

witrd die positive Flanke durch einen taster erzeugt?

von Christian (Gast)


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

von gerhard (Gast)


Lesenswert?

hallo christian,
der pio-interrupt reagiert auf beide flanken, daher erhältst du 2 
interrupts.

gruss
gerhard

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.