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