Forum: Mikrocontroller und Digitale Elektronik µblox + uart + rnmega128 + display + PROBLEM


von dap by MAT (Gast)


Angehängte Dateien:

Lesenswert?

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 !!!

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Wenn du das µblox-GPS mit LEA-4H an dem PC (Hyperterminal) anschliesst - 
klappt das?

von dap by MAT (Gast)


Lesenswert?

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 !!!

von Werner A. (Gast)


Lesenswert?

Hast du schonmal gemessen, wie lange du für eine Bildschirmausgabe 
brauchst? vielleicht dauert das nur länger als dein interrupt...

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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)?

von dap by MAT (Gast)


Lesenswert?

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 !

von dap by MAT (Gast)


Angehängte Dateien:

Lesenswert?

SRY .. Anhang vergessen !!!

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Matthias T. (Firma: HTBLuVA WY AUT) (poti)


Lesenswert?

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

von bas_ratte (Gast)


Lesenswert?

Software-UART ist mit bascom super einfach

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Sind dap by MAT und Matthias Theiser zwei unterschiedliche 
Manifestationen der gleichen Person?

von holger (Gast)


Lesenswert?

@ 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"

von Stefan B. (stefan) Benutzerseite


Lesenswert?

bas_ratte wrote:
> Software-UART ist mit bascom super einfach

Dann würde ich das doch direkt mal machen.

von Matthias T. (Firma: HTBLuVA WY AUT) (poti)


Lesenswert?

Kannste mir zu nem Software UART Hinweise geben oder mir sagen wo ich 
das ganze finde ???

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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).

von bas_ratte (Gast)


Lesenswert?


von Matthias T. (Firma: HTBLuVA WY AUT) (poti)


Lesenswert?

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 !!!

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von bas_ratte (Gast)


Lesenswert?

$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

von holger (Gast)


Lesenswert?

>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.

von Matthias T. (Firma: HTBLuVA WY AUT) (poti)


Lesenswert?

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
Noch kein Account? Hier anmelden.