Grüße euch!
Hab vor einiger Zeit schon mal über mein Problem geklagt... nun komme
ich wieder zu euch um mir Hilfe zu holen!
Kurz und bündig geht es um folgendes:
Habe mir für meine Diplomarbeit ein µblox-GPS mit LEA-4H zugelegt und
versuche nun die Datensätze über mein RN-Mega-128 auf ein Display zu
übertragen. Mache das ganz üblich mit Interrupt. Irgend einen Fehler
muss ich machen, da ich nur misst und wirres Zeug am Display lese. Habe
bereits mehrere Nachtschichten eingelgt ... ohne Erfolg!
Sende ich (sogar sehr große) Datensätze über Hyperterminal auf das Board
klappt alles wunderbar und mir wird JEDES (bis auf ein paar kleine
Fehler) Zeichen am Display ausgegeben.
Nun habe ich bereits mein µblox so konfiguriert das nur mehr $GPGGA über
TX ausgegeben wird ... OHNE ERFOLG !
Im Anhabg findet ihr mein ganzes Programm dazu!
ICH BITTE EUCH ALLE ... HELFT MIR !!!
GROßEN DANK !!!
Schließe ich das ja eigentlich für USB ausgelegte GPS-Modul über USB an
meinen Laptop an und starte u-center Application, bekomme ich alle Daten
wunderbar herein (Sateliten werden ebenfalls empfangen)!
Auf RS232 kann ich leider nicht anstecken, da dafür ein MAX erfordelich
wäre. Das Modul ist aber zu 99% in Ordnung.
Ich bin echt ratlos !!! BITTE UM HILFE !!!
In deinem Quelltext kann ich keinen Kommentar dem µblox-GPS mit LEA-4H
zuordnen. Dort lese ich nur was zu einem Funkmodul und einem MAX (den du
nicht hast). Von beiden Baudraten (19200 und 9600) ist beim Atmega128
Empänger UART 9600 Baud bei der Verbindung zum GPS zu wählen.
Einen MAX... für den Anschluss an den PC würde ich mir auf jeden Fall
zulegen oder eine einfache Transistorschaltung. Wie kann man anders
herausfinden, ob das GPS-Modul überhaupt am vorsehenen Pin das Erwartete
sendet?
BTW. hast du TXD1 am GPS/RX am Atmega128 direkt gekreuzt verbunden über
den RS232 TTL Stecker
(http://www.roboternetz.de/wissen/index.php/RN-Definitionen#RS232_TTL_Stecker)?
http://www.u-blox.com/products/lea_4h.html
max. 3,6V (aber 5V tolerante Eingänge), TXD1 und RXD1 müssen benutzt
werden (TXD2 und RXD2 sind reserved)
Du siehst, eine Menge Fehlerquellen. Kannst du näher beschreiben, wie
und wo dein µblox-GPS mit LEA-4H an dem RN-Mega-128 hängt
(Schaltplanskizze)?
Habe im Moment wenig Zeit... trotzdem mal GROßEN DANK !!!
Im Anhang findest du Bilder die dir den Anschluss meines GPS-Moduls gut
visualisiert !
Also ich schließe einfach den nach ausen geführten PIN TX an den Atmega
RX !
Jo.
Du hast das GPS Modul an die PC kompatible (!) RS232 Schnittstelle
vom RN-Mega128FUNK Modul gehängt. Zwischen der und der TTL
kompatiblen UART Schnittstelle des Atmega128 steckt noch ein
Pegelwandler MAX 232 CPE, d.h. es passt so nicht.
Das GPS Modul liefert nämlich sowas wie TTL Pegel (bei 3,6V
Betriebsspannung) und die RS232 vom RN-Mega-Board erwartet RS232-Pegel,
d.h. andere Spannungen und invertierte Signale...
Du hast mehrere Möglichkeiten:
1/ GPS => 2. MAX... für 3,6V => Board (RS232 => MAX 232 CPE =>
ATmega128)
2/ GPS => andere IO-Pins am Board und Software-UART. Könnte in BASCOM
spassig werden, das zu programmieren
3/ GPS => Board, aber "hinter" MAX 232 CPE direkt an Atmega128. In der
mir zugänglichen Beschreibung des RN... kann ich nicht erkennen, ob das
real machbar ist. Eine Steckleiste scheint es nicht zu geben und mit
Challenger-Clips
(http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=C171;GROUPID=3244;ARTICLE=63457;START=0;SORT=artnr;OFFSET=16;SID=42)
am MAX willst du nicht dauerhaft arbeiten ;-)
Eine Möglichkeit 4/ ist anscheinend durch das Funkmodul blockiert. Ein
RN-Mega128 ohne Funkmodul hat nämlich eine 2. UART mit RS232TTL
Anschluss. Dort könnte man direkt dran.
Der sicherste Weg ist 1/ mit dem Zusatznutzen, dass du das GPS so auch
an die Serielle Schnittstelle des PC hängen kannst.
BTW. auf keinem deiner Bilder ist eine elektrische Verbindung sichtbar.
Frau Google spuckt z.B. DAS aus
http://www.qsl.net/pa3ckr/bascom%20and%20avr/rs232/index.html u.a. aber
auch warnende Stimmen bzgl. der Stabilität bei IRQ Unterbrechungen.
BTW. Die Schaltung unter "Simple MAX" auf obiger Seite könntest du statt
dem 2. MAX... benutzen. GND/5V kannst du vom RN-Board holen. der
Transistor macht dann die Signalinvertierung und Signalanhebung. Du
kannst damit dann auf den jetzigen RS232 Eingang gehen. Den Tip "Simpler
Yet" kannst du auch anwenden, damit sparst du den rechten Transistor und
die Bauteile drumherum (2 Widerstände, Diode).
Also ich bin "dap by MAT" ... JA !!!
Habe mich eben erstmal angemeldet!
Also erstmal GROOOOßEN DANK ... aber ich kann dieser Beschreibung nicht
wirklich entnehmen das der Software-UART so einfach zu realisieren ist.
BITTE kann mir mal jemand die Codeschnipsel posten die man dazu benötigt
... wäre echt super !!!
Wenn ich das ganze jedoch mit nem externen zusätzlichen MAX machen würde
... naja, was brauche ich denn da alles ?
Diese Beschreibung ist eindeutig zu komplex für mein Wissen. Also bitte
mal ne zusammengefasste simple Beschreibung posten
DANKE !!!
$regfile = "m128def.dat" ' specify
the used micro
$crystal = 4000000 ' used
crystal frequency
$baud = 9600 ' use baud
rate
$hwstack = 40 ' default
use 32 for the hardware stack
$swstack = 40 ' default
use 10 for the SW stack
$framesize = 40 ' default
use 40 for the frame space
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 ,
Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 ,
Databits = 8 , Clockpol = 0
'setup to use a serial output buffer
'and reserve 20 bytes for the buffer
Config Serialout = Buffered , Size = 255
'It is important since UDRE interrupt is used that you enable the
interrupts
Enable Interrupts
Print "Hello world"
Print "test1"
Do
Wait 1
'notice that using the UDRE interrupt will slown down execution of
waiting loops like waitms
Print "test"
Loop
End
>mal ne zusammengefasste simple Beschreibung posten
Zieh den MAX232 auf deinem Board aus dem Sockel
und verbinde dein GPS mit dem Pin am MAX232
der zu RX an deinem ATMEga128 führt.
SofwareUART, na danke schön.