Forum: Mikrocontroller und Digitale Elektronik LPC2136 Problem UART ohne JTAG


von Thomas K. (thkusch)


Lesenswert?

Hallo!

Ich habe ein ganz kurioses Problem..
Rahmenbedingungen:
LPC2136
ARM-USB-OCD
Rowley Crossworks

In einem kleinen Testprogramm wird ein Zeichen über die UART0 des ARMs 
ausgegeben. Gleichzeitig, damit ich sehe, dass das Programm noch läuft, 
blinkt dabei eine LED. Das Programm funktioniert im Debugger 
anstandslos. Ich kann es auch flashen und es funktioniert ohne Debugger 
genauso. Leider geht über UART nichts mehr, wenn ich den Stecker vom 
JTAG entferne.

Also zum verdeutlichen (Programm läuft aus dem Flash und wird nicht 
über JTAG gedownloadet):
Szenario 1:
- JTAG dran, Crossworks usw. alles geschlossen
- Debug-Jumper vom Port 1.27 (TDO) entfernt
- Spannung dran
- Programm läuft: ich sehe die Zeichen und LED blinkt.

Szenario 2:
- JTAG nicht angeschlossen
- Debug-Jumper vom Port 1.27 (TDO) entfernt
- Spannung dran
- LED blinkt, es kommt aber nichts an!

Ich kann auch im laufenden Betrieb einfach den JTAG-Stecker einstecken 
und entfernen und ich sehe, wie die Zeichen ankommen bzw. nicht.

Die Hardware ist OK. Darauf läuft seit mehreren Jahren ein größeres 
Projekt, das aber bisher ohne UART ausgekommen ist.

Das aktuelle Programm ist sehr einfach gehalten. Keine Interrupts. Init 
von der LED und Implementierung von _delay_ms habe ich mal weggelassen. 
Daran liegt es nicht (schon geprüft). Hat jemand eine Idee wonach ich 
suchen soll??

Gruss
Thomas

main()
{
unsigned int divisor = 
liblpc2000_get_pclk(liblpc2000_get_cclk(OSCILLATOR_CLOCK_FREQUENCY)) / 
(16 * baud);
  U0LCR = 0x83; /* 8 bit, 1 stop bit, no parity, enable DLAB */
  U0DLL = divisor & 0xFF;
  U0DLM = (divisor >> 8) & 0xFF;
  U0LCR &= ~0x80; /* Disable DLAB */
  PINSEL0 = PINSEL0 & (~0xF)| 0x5;
  U0FCR = 1;

for(;;)
{
  LEDON;
  while(!(U0LSR & U0LSR_THRE));
  U0THR='#';
  _delay_ms(2);
  LEDOFF;
}
}

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Getestet, ob es auch ohne den JTAG-Adapter ein gemeinsames 
Bezugspotential (GND) an PC und µC gibt?

von Thomas K. (thkusch)


Lesenswert?

Hallo!

Dieser Hinweis war Gold wert! Da hängt ein USB-Seriell-Adapter dran an 
drei Leitungen (TX,RX,GND). An dem Board sind die Leitungen direkt an 
die Platine angelötet und GND hing am falschen Pad... War gestern wohl 
schon zu spät gewesen!

Vielen Dank Martin! Wünsche dir noch einen erholsamen 2. Feiertag!

Gruss
Thomas

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.