Forum: Mikrocontroller und Digitale Elektronik LPC1758 UART Problem


von Sebastian (Gast)


Lesenswert?

Hi,

hab hier grad einen Fehler und ich komm einfach nicht auf die Lösung :-(
1
#define  DMA_BUF_ADR 0x2008000
2
3
short *DataBuf = (short *)(DMA_BUF_ADR);
4
short DataOut = 0; 
5
6
//usart interrupt routine 
7
void UART3_IRQHandler(void)
8
{   
9
      unsigned char data=0;
10
11
     intsrc = (LPC_UART3->IIR & 0x03CF);       
12
     intsrc &= UART_IIR_INTID_MASK;    /* Interrupt ID mask */
13
14
    //THRE
15
    if (intsrc == UART_IIR_INTID_THRE)
16
    {
17
         data = DataBuf[DataOut++];
18
19
        pUart->THR  =data; 
20
        if(DataOut == 300)
21
        {
22
              DataOut = 0; 
23
      UART_IntConfig((LPC_UART_TypeDef *)pUart, UART_INTCFG_THRE, false);  //disable THRE  
24
       
25
26
        }
27
      
28
    }
29
}

Das Problem ist, dass nichts gesendet wird über den UART. Zwar steht in 
data der richtige Wert drinnen, aber es wird 0x00 gesendet.

Wenn ich jetzt statt
data = DataBuf[DataOut++];
einfach nur
data = 0xFF;
schreibe,dann wird auch oxFF ausgegeben....


Gruß
Seb

von lpcgast (Gast)


Lesenswert?

mich wundert, dass DataBuf und DataOut 16 Bit breit sind und data 8 Bit 
und Du ja auch Bytes sendest.

ändere mal bitte

short *DataBuf = (short *)(DMA_BUF_ADR);
short DataOut = 0;

in

unsigned char *DataBuf = (short *)(DMA_BUF_ADR);
unsigned char DataOut = 0;

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.