mikrocontroller.net

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


Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.