Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S external interrupt oder PIO interrupts


von Lutz K. (husky22)


Lesenswert?

hallo an alle,

bin hier neu und hab mal ne frage.ich habe mir das datenblatt des AT91 
durchgelesen.so wie ich es verstehe,kann man da nur 2 externe interrups 
erzeugen lassen am FIQ und IRQ Input.stimmt das?
oder kann ich von jedem beliebigen I/O einen interrupt erzeugen?hab zwei 
taster,nicht wie auf dem evaluation board an den FIQ und IRQ 
angeschlossen,sondern an PA27/DTR1 und PA28/DSR1.kann ich über diese 
I/O's auch interrupts erzeugen?und wenn,was für eine interrupt-ID brauch 
ich dann da?

bin dankbar für eure hilfe!

von ibos (Gast)


Lesenswert?

ich moche machen pulse auf die pio number porta.2 and the richtung of 
the porta 15

wie macht the initial register ot the irq0

danke fur ihre helfe

von netseal (Gast)


Lesenswert?

man kann für jeden pio einen irq vergeben. mit den FIQs kenne ich mich 
nicht aus.
1
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOA);
2
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOB);
3
4
AT91C_BASE_PIOA->PIO_PER = ((BUTTON_MASK));   //Parallel Input/Output Enable Register
5
6
AT91C_BASE_PIOA->PIO_IFER = ((BUTTON_MASK)); //Glitch Input Filter Enable 
7
Register
8
9
AT91C_BASE_PIOA->PIO_IER = ((BUTTON_MASK));   //PIO Interrupt Enable Register
10
11
AT91C_BASE_PIOA->PIO_PPUDR = BUTTON_MASK;
12
13
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (unsigned int)(PIOAIrqHandler); //Source Vector Register
14
15
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 6; // priority (0=lowest and 7=highest)
16
17
AT91C_BASE_AIC->AIC_IECR  = 1 << AT91C_ID_PIOA; //Interrupt Enable Command Register

von ibos (Gast)


Lesenswert?

ya , ich habe gesen dies,haber das geht fur die FIQ interrupt .
wir haben zwei pulse low-> hight and hight->low

fur die external interrupt IRQ0  das ist equal ?
ich glaube ,gib andere strabe

so wir haben nur eine pulse ? haber das geht nicht "one result"

AT91C_BASE_AIC->AIC_SVR[AT91C_ID_IRQ0] = (unsigned int)(PIOAIrqHandler); 
//Source Vector Register

AT91C_BASE_AIC->AIC_SMR[AT91C_ID_IRQ0] = 
AT91C_AIC_SRCTYPE_INT_LOW_PULSE| 6; // priority (0=lowest and 7=highest)

danke fur ihre antwort

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.