Forum: Mikrocontroller und Digitale Elektronik LPC1758 UART Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.