Forum: Mikrocontroller und Digitale Elektronik ADuC 7060 UART


von M.K. (Gast)


Lesenswert?

Ich habe ein Problem mit der UART des ADuC 7060. Ich habe die 
Beispielprogramme von Analog mit IAR 5.5 getestet. Es funktionieren 
alle, bis auf diejenigen, die die UART verwenden. Dann hängt sich das 
Programm einfach auf. Leider habe ich keinen Hardwaredebugger um genauer 
nachzusehen. Ich habe mir natürlich das Datenblatt angeschaut, aber 
keine Konfigurationsfehler finden können.
Hat jemand etwas vergleichbares schon gesehen?

von Wadim P. (wadim)


Lesenswert?

Hallo M.K.

Ich hatte auch manchmal die Probleme mit der UART bei den ADuC7060 und 
7061... zwar habe ich da keine genauen Nachforschungen betrieben, aber 
ich habe öfters bemerkt, dass da Probleme in den folgenden Zeilen 
auftretten
1
COMTX = szTemp[i];
2
ucTxBufferEmpty = 0;
3
while (ucTxBufferEmpty == 0)  { }

und zwar der bleibt manchmal (zumindest bei mir) in der while Schleife 
hängen und der Interrupt wird nicht ausgelöst.

Ich habe da aber eine Lösung ohne Interrupts gefunden...
1
COMTX = szTemp[i];
2
while ((COMSTA0 & 0x40) == 0x00){}

Außerdemm, als ich angefangen habe die Baud 115200 mit fractional 
divider statt der üblichen 9600 zu verwenden, fing die UART bei mir 
stabiler zu funzen...

P.S.: Ich weiss, dass der Beitrag schon paar Tage alt ist, aber vllt. 
hast du noch immer dieses Problem

von M.K. (Gast)


Lesenswert?

Danke für die Antwort, es funktioniert aber trotzdem nicht, sowohl mit 
Interrupts als auch ohne.
Das Downloadtool von Analog funktioniert über die serielle Schnittstelle 
aber absolut problemlos, daher glaube ich nicht an einen Hardwarefehler.

von Wadim P. (wadim)


Lesenswert?

Hmmm...das ist ja komisch, bei mir funktionieren alle Beispielprogramme 
für IAR, die ich von analog runtergeladen habe. Ich habe zuerst alle 
ADC-Beispiele durchgeschaut, weil die auch UART verwenden und die gingen 
auf Anhieb. Erst der Beispiel in dem Ordner UART hat nicht funktioniert, 
weil eine Zeile im IRQ falsch ist:
1
if ((ucCOMIID0 & 0x1) == 0x1)

Da muss statt 0x01 eine 0x04 hin.

Wie guckst du, ob das Programm läuft? Verwendest du HyperTerminal? 
Vielleicht machst du da falsche Einstellungen?

Öffnest du auch die schon vorhandenen Projekte von ADI, oder erstellst 
du neues Projekt und kopierst einfach die main dahin? Es ist nur so, 
dass man in IAR auch ne Menge Einstellungen ändern soll, bis das Projekt 
richtig läutf...

mfg
Wadim

von M.K. (Gast)


Lesenswert?

Ich habs mit dem Oszilloskop probiert... Kein Beispielprogramm hat an 
den UART-Pins (P1.0/P1.1) überhaupt etwas gemacht.
Ich habe gehofft, dass die Beispielprogramme (incl .Einstellungen) 
korrekt sind, aber man wird ja immer wieder enttäuscht...

von M.K. (Gast)


Lesenswert?

Danke Wadim für die Hilfen, es war doch ein Hardwareproblem.

von Wadim P. (wadim)


Lesenswert?

Ja kein Problem...Was war denn genau los? War der ADuC im Eimer?

von M.K. (Gast)


Lesenswert?

Vermutlich war wirklich was mit dem Chip, nach dem Austauschen gings 
problemlos.

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.