Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit serieller Komunikation
Hallo, ich bin neu hier und habe ein kleines Problem. Ich versuche mit einem Atmega8 einen GPS-Empfänger auszulesen.
Der GPS-Emfänger geht problemlos am pc über RS232 und mit dem Hyperterminal.
Der Atmega8 gibt leider nür müll aufsDisplay
Das ist mein Code:
$regfile "m8def.dat"
$crystal = 4000000
Baud = 9600
Dim B As Byte
Dim X As Byte
Dim Y As Byte
Open "comc.0:9600,8,n,1,inverted" For Input As #1
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portb.6
Cursor Off
Display On
Cls
Locate 1 , 1
X = 0
Y = 1
Do
X = X + 1
If X = 9 Then Gosub Voll
Get #1 , B
Locate Y , X : Lcd Chr(b)
Loop
Voll:
If Y = 2 Then Cls
X = 1
Y = Y + 1
If Y = 3 Then Y = 1
Locate Y , X
Return
Was mache ich falsch?
Hi, hier eine der ersten Fragen:
Sind die Fuse-Bits richtig gesetzt? Ist meist ein Hauptgrund der nicht funktionierenden LCDisplays und Schnittstellen.
Gruß
gomaman
NMEA Empfänger senden standardmäßig mit 4800 Baud und bei dem 'inverted' bin ich mir auch nicht ganz sicher :)
Hallo, ich bin neu hier und habe ein kleines Problem. Ich versuche mit einem Atmega8 einen GPS-Empfänger auszulesen.
Der GPS-Emfänger geht problemlos am pc über RS232 und mit dem Hyperterminal.
Der Atmega8 gibt leider nür müll aufsDisplay
Das ist mein Code:
$regfile "m8def.dat"
$crystal = 4000000
Baud = 9600
Dim B As Byte
Dim X As Byte
Dim Y As Byte
Open "comc.0:9600,8,n,1,inverted" For Input As #1
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portb.6
Cursor Off
Display On
Cls
Locate 1 , 1
X = 0
Y = 1
Do
X = X + 1
If X = 9 Then Gosub Voll
Get #1 , B
Locate Y , X : Lcd Chr(b)
Loop
Voll:
If Y = 2 Then Cls
X = 1
Y = Y + 1
If Y = 3 Then Y = 1
Locate Y , X
Return
Was mache ich falsch?
Hoffentlich ist der GPS Empfänger über einen RS232 <> TTL Wandler an den Mega angeschlossen! Ich sehe in dem Code nicht wo die GPS Daten eingelesen werden? also z.B.
dim A as string * 50
input #1, a
LCD a
Wie Du dann den string verarbeitest um die GPS Daten zu sortieren musst Du in der Bascom Hilfe nachschauen. Tipp INSTR und deren Untertietel wie split und pos......
Gruß Richard
Ps.: Setze code immer zwischen codetags.[/quote]
Wenn ich dein Programm in den Simulator lade und PinC.0 rumklimpere, dann funktioniert es.
Heißt für mich: Slein hat Recht mit seiner Vermutung, dass etwas an den Com Parametern nicht stimmt.
NMEA Empfänger senden standardmäßig mit 4800 Baud und bei dem 'inverted' bin ich mir auch nicht ganz sicher :)
PC RS232 Signale haben negative Logik "1" = -3...-15 V "0" = 3...15 V, da wäre 'inverted' schon richtig.. Allerdings müssen, wenn nicht ein rs232 zu TTl Wandler benutzt wird, aus diesem Spannungen noch 5/0 V gemacht werden. Im Einfachstem Fall reicht da eine Diode und ein ca. 1k8 R. Wobei die Diode die Negative Spannung gegen GND auf -0,6 V begrenzt und der 1k8 R den Strom Begrenzt (PC TX Seite). PC RX sollte auch mit 0 und 5 V klar kommen. Diese einfach lösung hat mit PIC's jedenfalls gut geklappt.
Gruß Richard
Ja pegelwandler ist dran, Display funktioniert. Am PC ist aber auch 9600 Baud eingestellt? ich werds mal mit 4800 testen.
Hat die Taktung vom µC darauf einfluß?
Ja pegelwandler ist dran, Display funktioniert. Am PC ist aber auch 9600 Baud eingestellt? ich werds mal mit 4800 testen.
Hat die Taktung vom µC darauf einfluß?
Ja, sehr die Baudrate wird aus dem Takt generiert der Interne Taktgenerator ist nicht gerade genau und funktioniert bei hohen Baudraten nicht gerade gut ...bis nicht. Ein externer Quarz ist da besser am besten welche mit krummer Frequenz die passen besser um Standard Baudraten zu erzeugen. Die Baudrate muss mit den Fuses eingestellt werden, die Einstellung in Bascom ist nur für den Interpreter und muss mit der im Chip eingestellten übereinstimmen sonst rechnet das Programm fasch.
Gruß Richard
mh klappt immer noch nicht... Mit dem Attiny13 und PC funktioniert die komunication mit 9600 baud perfekt. hab am mega16 auch mit 4800 probiert es kommt zum teil immer noch müll d.h. irgendwelche zeichen aber zwischendurch mal ein paar richtige zeichen.
Gibts nicht doch ne möglichkeit ohne ext. quarz das in den griff zu bringen auf welche frequenz soll ich takten?
Und wie stell ich die Baudrate mit den Fuses ein?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.