Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 15. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Hilfe, mein DUART spinnt.....

Postby geri » Mon Jun 09, 2008 12:00 am

Hallo Bernd, Hallo Peter

Ich habe , natürlich nach Anleitung des LB6, die Datei duart_1.c erstellt. Die Ausgabe der ASCII-Zeichen funktioniert einwandfrei, hingegen das Einlesen ab Lap-Top nicht. Bei erstmaligem Druck einer beliebigen Taste nach Hardware-Reset zeigt das LCD-Display immer zwei Vertikale Striche (in der gleichen Zeichen-Matrix) also ein Zeichen. Danach erscheinen bei Druck einer Taste am Lap-Top am LCD-Display immer zwei Zeichen! Zuerst das vorherig gedrückte, also nicht das, das ich eben gedrückt habe und dann das vor-vorherige Zeichen. So entstehen am LCD-Display 9 Zeichen bei 5 Tastendrücke . Ich habe versucht die Befehle der Initialisierung des Duart mit dem Datenblatt zu vergleichen und finde keinen Fehler. (So weit mein Englisch reicht)
Was mache ich falsch??

Gruss

Geri
geri
 
Posts: 56
Joined: Fri Jan 03, 2014 2:05 pm

Postby μtronix » Mon Jun 09, 2008 12:00 am

Hallo Geri,

wir werden morgen im Labor versuchen, die von Dir beschriebene Reaktion des Programms nachzuvollziehen und eine Lösung zu finden.

Bitte stelle dazu einmal Deinen vollständigen Quellcode ins Forum oder sende ihn an die Kontaktadresse(siehe LB1, S.128), sodaß auch der Quellcode geprüft und ein versehentlicher Programmierfehler ausgeschlossen werden kann.

Gruß,
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby μtronix » Wed Jun 11, 2008 12:00 am

Hallo Geri,

mit der Originalfassung Deines Programms tritt auch bei uns genau das beschriebene Problem auf.

Die Lösung ist folgende:

In der main-Funktion muß es
 
zeichen = DUART_B_empf();

statt
 
DUART_B_empf();
zeichen = RHRB;


heißen, da die Funktion selbst als Rückgabewert das empfangene Zeichen liefert.

Der Prototyp hierzu lautet:
 
extern char DUART_B_empf(void);


Nach der Änderung stellt das Display nun die auf der seriellen Schnittstelle empfangenen Zeichen dar.

Gruß,
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby geri » Thu Jun 12, 2008 12:00 am

Hallo Patrick

Vielen Dank für deine Bemühungen. Seit gestern sind jetzt auch die ergänzenden Dateien vom Lehrbrief 6 auf dem TFH-Bochum-Server. Ich habe am Abend, zwischen den beiden Fussbalmatch’s, natürlich euer Programm auf mein Board geladen und wie könnte es anders sein, die LCD Anzeige funktioniert so wie sie muss.

Gruss

Geri
geri
 
Posts: 56
Joined: Fri Jan 03, 2014 2:05 pm

Postby majo » Wed May 12, 2010 12:00 am

Hallo zusammen,

der Eintrag ist zwar schon älter, aber das Thema passt, deshalb häng ich mich mal hier dran.

Ich hab das Problem, dass die Zeichen, die ich über den DUART_B-Kanal einlese, nicht 100%-ig korreckt auf dem LCD-Display ausgegeben werden.

Bsp: Bei ständigen drücken der Taste "r" entsteht das Bild
im Anhang.

Am Programm kanns meiner Meinung nach nicht liegen. Ich habs schon aufs Minimum reduziert.

DUART_B_init();
dis_init();
dis_clear();


while(1)
{
dis_zei(DUART_B_empf());
}

Das ist die ganze Main-Funktion um diese "Phänomen" zu testen.

Hat jemand ne Erklärung dafür?

Gruss Mario
Attachments
DSC-0255.jpg
majo
 
Posts: 21
Joined: Fri Jan 03, 2014 1:56 pm

Postby μtronix » Wed May 12, 2010 12:00 am

Hallo Mario,

ich habe Deine Codezeilen selber mal testweise compiliert und konnte keine Probleme bei der Displayausgabe feststellen. Prüfe doch bitte mal, ob Du das Problem mit der Hexdatei im Anhang auch hast. Die Quelldatei liegt ebenfalls bei. Bei mit werden die Zeilen in der Reihenfolge 1-3-2-4 wiederholt beschrieben. Dauertastendruck, z.B. "r", ist kein Problem.

Eine andere Ursache könnte eine nicht korrekt eingestellte Schnittstelle im Hyperterminal sein. Verwendest Du eine native RS-232 - Schnittstelle zur Kommunikation oder einen USB-Wandler? Hier könnte auch eine Ursache des Problems liegen.

Zur Info:
Ich habe das Programm in einer virtuellen Maschine mit einer nativen RS-232 am PC getestet. Gastsystem ist ein XP-32 mit bekanntem Hyperterminal.


Viele Grüße
Patrick
Attachments
duart.zip
(1.21 KiB) Downloaded 56 times
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby majo » Fri May 14, 2010 12:00 am

Hi,

bei der Hexdatei im Anhang ist es auch nicht anders.

Ich hab keine richtige RS-232 Schnittstelle am Laptop, nur USB und benutze den Wandler von Reichelt

http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=C6993;GROUPID=17;ARTICLE=78847;START=0;SORT=artnr;OFFSET=16

aber ich werd mal schauen, ob ich noch mal n anderen Wandler ausprobiere.

Die Sache ist die, dass ich über die normale Schnittstelle mit dem Wandler keine Probleme hab.

Les ich quasi die Zeichen mit

while(1) dis_zei(seri_empf());

ein, werden die Zeichen korrekt auf dem Display dargestellt.

Allgemein zu meiner Vorgehensweise:
Ich hab mir nur einen RS233-USB-Wandler zu gelegt. Ich spiel das Program über die Programmier-Schnittstelle auf den CC03er. Und steck danach einfach das andere Kabel von der DUART_B-Schnittstelle an den Wandler. Dann start ich den Hyper Terminal, stell die Verbinung her und les einfach die zeichen ein. Ich kanns mir jetzt nicht vorstellen , aber kann da irgendwo ein Fehler liegen?

Die Einstellungen der Schnittstelle sind richtig. Benutze gerade für den Test bei beiden Schnittstellen 9600Baud, 8Datenbits, 1 Stoppbit, keine Parität.
majo
 
Posts: 21
Joined: Fri Jan 03, 2014 1:56 pm

Postby majo » Sun May 16, 2010 12:00 am

Hat sich erledigt.

Ich glaub ich hatte eine Verbindung zwischen, 2 pins im Stecker von dem selbstgebastelten Kabel.
Hab jetzt jedenfalls dei RS232-Buckse nochmal neu verlötet und jetzt funktioniert's wie es soll.
majo
 
Posts: 21
Joined: Fri Jan 03, 2014 1:56 pm


Return to Mikrocontroller-Fernlehrgang (TFH)

Who is online

Users browsing this forum: No registered users and 1 guest