ARM AT91SAM7X USART IRQ Prob

OP #571615
Lesenswert?
• ▲
▼
Hi,
ich habe angefangen von AVR / HCS12 auf ARM uzusteigen, allerdings 
bleibe ich an er Interrupt Ecke hängen. Ich versuche nun schon seit 
längerem die Interrupts für die USART hin zu bekommen, allerdings 
parriert nüx.
Hat jemand eine idee was ich falsch mache? Ich habe auch ein Warning von 
wegen Incompatible Pointer Type bei AT91F_AIC_ConfigureIt, habe dann den 
code nochmals mit einem sample verglichen und nix gefunden.

Nu ja, hier mal der ausschnitt aus dem src:
1
__ramfunc void uart0handler (void){
2
  
3
    AT91F_US_PutChar(pUSART, 'R');
4
    pUSART->US_CR = AT91C_US_RSTSTA;  
5
}
6

7
void uart0_init (void) {                   /* Initialize Serial Interface */
8
  //volatile AT91S_AIC * pAIC = AT91C_BASE_AIC;
9
  /* mt: n.b: uart0 clock must be enabled to use it */
10

11
    *AT91C_PIOA_PDR = AT91C_PA0_RXD0 |        /* Enable RxD0 Pin */
12
                    AT91C_PA1_TXD0;         /* Enalbe TxD0 Pin */
13

14
    pUSART->US_CR = AT91C_US_RSTRX |          /* Reset Receiver      */
15
                  AT91C_US_RSTTX |          /* Reset Transmitter   */
16
                  AT91C_US_RXDIS |          /* Receiver Disable    */
17
                  AT91C_US_TXDIS;           /* Transmitter Disable */
18

19
    pUSART->US_MR = AT91C_US_USMODE_NORMAL |  /* Normal Mode */
20
                  AT91C_US_CLKS_CLOCK    |  /* Clock = MCK */
21
                  AT91C_US_CHRL_8_BITS   |  /* 8-bit Data  */
22
                  AT91C_US_PAR_NONE      |  /* No Parity   */
23
                  AT91C_US_NBSTOP_1_BIT;    /* 1 Stop Bit  */
24

25
    pUSART->US_BRGR = BRD;                    /* Baud Rate Divisor */
26

27
    pUSART->US_CR = AT91C_US_RXEN  |          /* Receiver Enable     */
28
                  AT91C_US_TXEN;            /* Transmitter Enable  */
29
    
30
    AT91F_US_EnableIt(pUSART,AT91C_US_FRAME | AT91C_US_RXRDY | AT91C_US_OVRE);
31
    AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_US0, 7, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, uart0handler);
32
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
33
 
34
    AT91F_US_PutChar(pUSART, 'I');
35
}

Danke mal im vorraus

MFG Florian
Gast #596136
Lesenswert?
• ▲
▼
Hallo,
habe ebenfalls das angesprochene Problem bei meinem SAM7X256 mit dem 
Timer! Auf die Lösung muss man erst auch einmal kommen...

Aber, wie setze ich das CPSR Register richtig?! Bei mir kommt nur 
Schwachsinn raus ;-) Vl. kann mir dies ja jemand kurz näher bringen!

LG
Michael

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