Forum: Projekte & Code GPS - A/V- LED - MONITOR (Assembler) Software USART ATtiny12


von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ein kleiner 8-PIN µC ATtiny12 (1MHz) liest die Daten einer seriellen

GPS-Mouse ein und gibt den "A" bzw "V" -Zustand des GPS Empfängers

an zwei LESs aus.


Mich hatte es geärgert, dass bei einem µ-BLOX (u-BLOX) GPS-MS1E Modul
dieser Zustand nicht angezeigt wird, daher suchte ich nach einer ganz
einfachen Lösung.

Die grüne LED leuchtet, wenn sich der Empfänger im Aktiv-Zustand
befindet und die rote Lede blinkt (ca. 1...3s Takt), wenn der Empfänger
ein Warnung signalisiert.

Die Software sucht nach dem "GPRMC-String und wertet das Zeichen
A bzw V aus.

$GPRMC,213926.206,V,0000.0000,N,00000.0000,E,,,140606,,*18
                  ^

Eingestellt habe ich 4800Bd (8N1).

Das größte Problem habe ich mit dem Software USART gehabt, der der
ATtiny12 kein Harware-USART besitzt.

Man kann diese Schaltung auch ohne Quarz betreiben.

Bei Programmstart wird der interne RC-Oszillator (Register OSCCAL) auf
den niedrigsten Wert eingestellt.

Die ersten empfangen Zeichen verursachen natürlich einen
Empfangs-Error, da die Abtastung der einzelnen Bits überhaupt nicht
plausibel ist.
Bei jedem Empfangs-Error wird die Oszillator-Frequenz leicht nach oben
korrigiert, bis kein Empfangs-Error mehr auftritt.

Diese Syncronisation ist nach wenigen ms..s abgeschlossen.
Man erkennt es am gleichzeitigen leuchten der beiden LEDs.

Wird ein Quarztakt gewünscht, die erforderlichen PINS habe ich mit
freigehalten.

Bei 9600Bd muss nur der Takt auf 2MHz hochgesetzt werden


Anmerkungen zum Software USART:

Ein externer Interrupt wird im µC ausgelöst, wenn sich der PEGEL am PIN
PB1 von HIGH auf LOW ändert.

Dieser Interrupt aktiviert den Timer0 und deaktiviert den externen
Interrupt.

Nun ist für 10 Timer-Interrupts nur der TIMER0 aktiv und tastet nach
104ms (Start-BIT), nach jeweils 208ms die Datenbits und das STOP-Bit ab
und setzt daraus das Empfangszeichen zusammen.

Eine Fehlerprüfung wird beim Start- und STOP-Bit vorgenommen.


Angefügt habe ich:
- Schaltplan
- FUSE-BITS
- Assembler-Code
- hex-File


Bernhard

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.