Hallo Zusammen Ich habe leider noch immer das Problem das bei der Ausgabe von Daten mit DMA-Puffer CHANNEL1 über UART1, unterschiedlich je nach Board (habe drei Stück,)Zeichen einfach verschluckt werden. Ich verwende vorerst einmal das Ethernet Starter Kit und werde mir dann einen eigenen Print machen wenn alle Funktionen getestet sind. Ich sende immer max 16 Byte's und z.B. bei einem Board wird die 191 nicht gesendet, d.h. es werden auch alle nachfolgenden Zeichen verworfen. Nun dachte ich das die Baud von 4MBPS zu hoch sei, war es nicht, auch mit 57600 verschluckt er die 191. Dann habe ich es einfach nur mit der UART1 ohne DMA versucht und hier werden alle 256 Zeichen die 8 Bit so hergeben gesendet. Interessant ist das jedes Board andere Zeichen ausläßt. Hatte jemand schon so ein Problem? Mit der nachfolgenden Routine (habe ich aus einem Beispiel von Microchip) sende ich die Zeichen. Lg. Johann K. void vWriteDmaPb(unsigned char ucDataSize){ /******************************************************************* erstellt am : 22.06.2012 Funktionsname: vWriteDmaPb Beschreibung: Diese Function schreibt über den DMA auf die UART1 zum Peripheriebus. PARAMETER: letzte Änderung: ******************************************************************/ DmaChannel chn=DMA_CHANNEL1; // DMA channel to use for our example ucModePb=1; //Mode schreiben DmaChnOpen(chn, DMA_CHN_PRI1, DMA_OPEN_MATCH); // reconfigure the channel // set the events: now the start event is the UART tx being empty // we maintain the pattern match mode DmaChnSetEventControl(chn, DMA_EV_START_IRQ_EN|DMA_EV_MATCH_EN|DMA_EV_START_IRQ(_UART1_TX_IRQ)); // set the transfer source and dest addresses, source and dest size and cell size DmaChnSetTxfer(chn, ucDmaBuffPbOut, (void*)&U1TXREG, ucDataSize, 1, 1); DmaChnSetEvEnableFlags(chn, DMA_EV_BLOCK_DONE); // enable the transfer done interrupt: pattern match or all the characters transferred INTEnable(INT_SOURCE_DMA(chn), INT_ENABLED); // enable the chn interrupt in the INT controller DmaChnStartTxfer(chn, DMA_WAIT_NOT, 0); // force the DMA transfer: the UART1 tx flag it's already been active } //vWriteDmaPb
Hallo Nochmals Anders gefragt hat jemand DMA und UART erfolgreich benutzt? Ich habe bei den Code-Beispiel von Microchip (z.B. uart_echo) das gleiche erfahren wie oben beschrieben, beim Senden und Empfangen. Bitte, bitte um eure Hilfe. Danke. Lg. Johann K.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.