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 !!!
Wenn du das µblox-GPS mit LEA-4H an dem PC (Hyperterminal) anschliesst - klappt das?
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 !!!
Hast du schonmal gemessen, wie lange du für eine Bildschirmausgabe brauchst? vielleicht dauert das nur länger als dein interrupt...
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.
Ich hab nun mal alles weggelassen was vom Quellcode her nicht relevant ist für die serielle Übermittlung von µblox auf Display: ' ---------------RN-Mega128Funk übliche ------------------ $regfile = "m128def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud1 = 9600 'Baudrate für RS232 Config Ping.0 = Output 'Spannung an LCD aktivieren Lcdpower Alias Portg.0 Open "com2:" For Binary As #2 ' --------------------------------------------------- On Urxc1 Send Enable Urxc1 Enable Interrupts Config Pinf.6 = Output Lcd_rw Alias Portf.6 Lcd_rw = 0 Lcdpower = 1 Wait 1 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portf.3 , Db5 = Portf.2 , Db6 = Portf.1 , Db7 = Portf.0 , E = Portf.5 , Rs = Portf.7 Config Lcdbus = 4 Initlcd Cls Do Loop Send: Lcd Chr(udr1) Return End
Sind dap by MAT und Matthias Theiser zwei unterschiedliche Manifestationen der gleichen Person?
@ Stefan B. Das gleiche wie du habe ich ihm schon vor ein paar Tagen gesagt. Er begreift es einfach nicht ! Beitrag "Re: ublox CR4 - Empfang: wirres Zeug"
bas_ratte wrote:
> Software-UART ist mit bascom super einfach
Dann würde ich das doch direkt mal machen.
Kannste mir zu nem Software UART Hinweise geben oder mir sagen wo ich das ganze finde ???
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 !!!
Räum' die Katze vom RN-Board, geh' wie ich jetzt ein Bier trinken und morgen denkst du in Ruhe über den Thread nach. Du hast alles was du brauchst.
$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.
DANKE an ALLE !!! Habe von TX einfach direkt an den PIN vom Atmega128 gehängt (nun läuft alles wunderbar) DANKE !!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.