US0 IRQ auf AT91SAM7256 einschalten

Gast #1060798
Lesenswert?

Hallo zusammen,
ich habe hier seit 2 Tagen ein Problemchen, das mich mittlerweile 
verzweifeln lässt:
Ich möchte an die RX-Leitung des Uart 0 am ARM ein Gerät hängen, das mir 
in unregelmäßigen Abständen Daten an den ARM schickt.
Das Lesen von RX soll über einen UART-Interrupt getriggert werden. Ich 
initialisiere diesen wie folgt:
1
//Config IOs
2
AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, AT91C_PA05_RXD0 );
3

4
// enable clock of USART
5
AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, 1<<AT91C_ID_US1 ) ;
6

7
uart.rdPos = 0;
8
/* Disable the DMA */
9
AT91F_PDC_DisableRx( AT91C_BASE_PDC_US0 ); //Disable the DMA
10

11
/* Reset transmitter and receiver */
12
AT91C_BASE_US0->US_CR =  AT91C_US_RSTRX; //rx and tx are then disabled
13
  
14
// config USART
15
AT91F_US_Configure( AT91C_BASE_US0, MCK, mode, baud_rate, 0 );
16
   
17
// enable rx 
18
AT91C_BASE_US1->US_CR = AT91C_US_RXEN;
19
   
20
AT91F_PDC_DisableRx( AT91C_BASE_PDC_US1 ); //Disable the DMA for receive
21
   
22
/* Set DMA Rx buffer*/
23
AT91C_BASE_US0->US_RPR = (uint)uart.rxBuf;
24
AT91C_BASE_US0->US_RCR = sizeof(uart.rxBuf);
25
AT91C_BASE_US0->US_RNPR = (uint)uart.rxBuf;
26
AT91C_BASE_US0->US_RNCR = 0;
27
   
28
AT91F_PDC_EnableRx( AT91C_BASE_PDC_US0 ); //Enable the DMA for receive
29

30
AT91F_AIC_ConfigureIt( AT91C_BASE_AIC, AT91C_ID_US0, IRQ_PRIORITY_PIO, AT91C_AIC_SRCTYPE_INT_LOW_LEVEL, isrUART );
31

32
//Enable IRQ on US0
33
AT91C_BASE_US0->US_IER = AT91C_US_RXRDY;
34
AT91F_AIC_EnableIt( AT91C_BASE_AIC, AT91C_ID_US0 );

Leider funktioniert die Sache nicht so recht --> Unknown Instruction, 
oder watchdog.
Kann mir jemand sagen, wo der Fehler zu suchen ist?

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