Hallo zusammen Ich hoffe ihr kennt euch etwas besser aus in sachen invertierte serielle Schnittstelle als ich. Ich habe ein GPS Empfänger, welcher mir mit 4800 Baud mit invertiertem TTL signal, die seriellen Daten liefert. Meinem Mikrocontroller macht das aber Probleme. Wie kann ich das Signal zu einem nicht-invertierten TTL Signal wandeln (Hardware-mässig)? Mit einem Inverter hab ichs schon versucht, geht aber nicht --> da kommen nur komische Zeichen. Liegt wohl am irgendwie Start bzw. am Stop-Bit.. Könnt ihr mir helfen? mfg Iguan
Iguan schrieb: > Mit einem Inverter hab ichs schon versucht, geht aber nicht Wie willst du die Signale sonst invertieren? Außerdem sind die seriellen TTL-Signale gegenüber RS232 i.A. immer invertiert. Der Fehler wird woanders liegen. Bist du dir mit den 4800Bd sicher?
Welchen GPS-Empfänger bzw. Mikrocontroller verwendest du?
Mit den 4800 Baud bin ich mir sicher! Ich arbeite mit einem Arduino Mega ADK. Wenn ich den GPS empfänger an einen Hardware-Uart-Eingang hänge, dann bekomme ich keine gescheiten Daten. Wenn ich die Arduino-Library "SoftwareSerial" verwende, kommen auch keine gescheiten Daten. Erst mit der neusten Version von der Arduino-Library "SoftwareSerial" kann man angeben, dass das Signal invertiert ist: SoftwareSerial gps_serial(GPS_RX_Pin, GPS_TX_Pin, true); Das "true" bedeutet invertiert. Auf diese Weise bekomme ich saubere GPS-NMEA-Datensätze. Nur blöd dass diese Library die interrupts kurzzeitig abschaltet und anschliessend wieder einschaltet. Dadurch entstehen Probleme mit anderen Interrupt-Librarys. Aus diesem Grund möchte ich das Signal hardwaremässig zu einem nicht-invertierten-TTL-uart konvertieren, damit ich den GPS-Empfänger an eine Hardware-UART hängen kann. Mit einem NAND-Baustein (Wo beide Eingänge zusammen gelegt sind) habe ich versucht das Signal zu einem nicht-invertierten TTL signal zu wandeln. Das hat aber nicht geklappt (Da kamen alles "0" als output"). Ich nehme an, dass das Start- bzw. das Stop bit nicht invertiert werden darf... bin mir aber nicht sicher... Ich weiss echt nicht mehr weiter... mfg Iguan
Iguan schrieb: > Ich weiss echt nicht mehr weiter... Dann fang mal an jetzt zu messen anstatt wild drauf rumzuprobieren. Oszi an die Datenleitung und dann messen wie das Signal aussieht. Ansonsten muss ein normaler Inverter aussreichen der macht kein Unterschied zwischen Daten und Start u. Stopbits. Also stimmen Baudrate,Parity und Anzahl der Stopbits?
nimm einen 7400 wenn du es Hardwaremässig machen möchtest. PP
Iguan schrieb: > Mit einem NAND-Baustein (Wo beide Eingänge zusammen gelegt sind) habe > ich versucht das Signal zu einem nicht-invertierten TTL signal zu > wandeln. Das hat aber nicht geklappt (Da kamen alles "0" als output"). Das hast Du den Chip offensichtlich falsch angeschlossen. > Ich nehme an, dass das Start- bzw. das Stop bit nicht invertiert werden > darf... bin mir aber nicht sicher.. NACK. Wenn UART invertiert, dann wird alles invertiert. Hast Du mal die Signalpegel des GPS geprüft? Inveritertes UART Signal deutet auf Pegelwandler wie MAX232 hin - das ist nicht mehr TTL.
Danke für die schnelle Antwort Einen Oszi habe ich leider nicht. Ich habe dennoch mal die Spannung des Daten-Pins (tx) vom GPS gemessen. Die Anzeige schwankt von 0V bis -5V. Das erstaunt mich, dachte es liefert TTL (0 bis +5V). Messe ich da was falsches? Auf die polarität des messgerätes (Mastech MY64) habe ich geachtet. Wie konnte ich dann überhautp daten auslesen? @pöserpursche: ich habs mit einem SN74LS00N versucht (pin 1+2 zusammen an TX pin vom GPS-Empfänger, und pin 3 an den uC RX-Pin)
Wie kriege ich nun den offset hin, damit ich 0..+5V habe anstelle 0..-5V?? mfg Iguan
Hi >Aber auch >unter unter PonyProg bekomme ich kein Kommunikation mit dem ATmega1284P >zustande. Schlieiß das Teil einfach richtig an. MfG Spess
>Die Anzeige schwankt von 0V bis -5V.
GND mit Vcc vertauscht?
GND und VCC sind nicht vertauscht. die LED des GPS-Empfängers leuchtet. Andersrum nicht. Ich verwende den GPS-Empfänger "GPS4" von Byonics: http://www.byonics.com/tinytrak/gps.php Beschreibung: This is the receiver module found inside the GPS4 (no case or DB-9 cable), for use in high altitude balloon applications up to 84KM. It weighes 0.7oz, comes with a 3" interface cable and outputs both TTL and RS-232. Wiring is 1:black:ground, 2:red:3.3V to 5V DC power, 3:yellow:TTL data from GPS, 4:white:RS-232 data to GPS, 5:green:RS-232 data from GPS, 6:blue:TTL data to GPS. Size is 32mm x 32mm x 9mm, 0.7 oz. Wobei ich die version mit Gehäuse und DB-9 kabel habe. Die Pinbelegung ist somit anders (diese habe ich per Mail erfahren...siehe weiter unten) Per Mail hiess es: The GPS4 is basically like this: http://www.navisys.com.tw/products/image/110103/GM-301_flyer-110105.pdf but with a 84KM altitude limit. You can connect the serial output to a computer as well as a microcontroller. und: >>1. In the datasheet you've mailed me, its not clear which pins of the DB-9 >> plug has which function (pin assignment). Pin 2 is RS-232 out Pin 3 is RS-232 in (not normally used) Pin 4 is +5V power in Pin 5 is ground Wie kriege ich nun den offset hin, damit ich 0..+5V habe anstelle 0..-5V??
Du hast kein TTL Signal. Probier das: http://forum.arduino.cc/index.php?topic=190459.0 oder einen Optokoppler.
Iguan schrieb: > outputs both TTL and > RS-232 Du hast negative Spannung und invertierte Logik? Dann hast du offensichtlich den RS-232-Output erwischt, und nicht den TTL.
:
Bearbeitet durch User
@hp-freund: Ich habe die Schaltung wie im Schema aufgebaut. Arduino sieht anstelle NMEA-Datensätze folgendes: "44444444444444444444444444442496913103671808277674449515053535346535257 4486444444444444444851494949514444447842" @Stefan Ernst: Ist der einzige Output, der auf den DB-9 Pol geführt ist. Bei den anderen Pins (ausschliesslich Speisung) messe ich 0V.
Die Spannung Am Arduino-RX-Pin schwankt jetzt zwischen 2.2V und 4.8V
Iguan schrieb: > @Stefan Ernst: Ist der einzige Output, der auf den DB-9 Pol geführt ist. Ein DB-9 führt normalerweise ein pegelgewandeltes Signal nach RS-232, das ist nicht direkt µC-geeignet, bzw. erst wieder, nachdem's durch 'nen zweiten Wandler zurückgewandelt wurde.
Im Mail des lieferanten hiess es ausserdem: >>1. In the datasheet you've mailed me, its not clear which pins of the DB-9 >> plug has which function (pin assignment). Pin 2 is RS-232 out Pin 3 is RS-232 in (not normally used) Pin 4 is +5V power in Pin 5 is ground >> 2. Doesn't it get destroyed if I connect it to a computers serial port >> (usually 12VDC)? >> - If no, can i simply plug it in and read the data with hyperterminal? The RS-232 pins are fine with computer serial voltages, but pin 4 should only be 5V. Computers do not provide 5V on pin 4, so you will need my GUA or GPAP or GPAC adapter cable to connect the GPS4 to a computer.
Ich habs nun hingekriegt: Mit dem nachfolgendem Schema unter verwendung einer Arduino-Hardware-Uart http://forum.arduino.cc/index.php?topic=190459.0 und dem Code: void setup() { Serial.begin(9600); Serial3.begin(4800); } void loop() { if (Serial3.available()) { Serial.print(Serial3.read()); } } kamen nur solche zeichen daher: "44444444444444444444444444442496913103671808277674449515053535346535257 4486444444444444444851494949514444447842" mit dem gleichen Schema, aber mit der Verwendung einer SoftwareSerial-Schnittstelle (Library AltSoftwareSerial) und dem code: #include <AltSoftSerial.h> // AltSoftSerial always uses these pins: // // Board Transmit Receive PWM Unusable // ----- -------- ------- ------------ // Teensy 2.0 9 10 (none) // Teensy++ 2.0 25 4 26, 27 // Arduino Uno 9 8 10 // Arduino Mega 46 48 44, 45 // Wiring-S 5 6 4 // Sanguino 13 14 12 AltSoftSerial altSerial; void setup() { Serial.begin(9600); altSerial.begin(4800); } void loop() { char c; if (altSerial.available()) { c = altSerial.read(); Serial.print(c); } } ...kamen richtige datensätze wie: $GPGGA,135718.551,,,,,0,00,,,M,0.0,M,,*5E $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,135718.551,V,,,,,,,031113,,,N*44 $GPGGA,135719.551,,,,,0,00,,,M,0.0,M,,*5F $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,135719.551,V,,,,,,,031113,,,N*45 $GPGGA,135720.551,,,,,0,00,,,M,0.0,M,,*55 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,135720.551,V,,,,,,,031113,,,N*4F $GPGGA,135721.560,,,,,0,00,,,M,0.0,M,,*56 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,135721.560,V,,,,,,,031113,,,N*4C $GPGGA,135722.563,,,,,0,00,,,M,0.0,M,,*56 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPGSV,3,1,12,11,84,268,,32,64,224,,01,60,298,,19,48,167,*7F heraus. vielen Dank für die Hilfe!! mfg Iguan
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.