www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Zeit? Wie genau schafft das ein ausgelasteter AVR


Autor: screw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wie genau kann man mit einem AVR eine Uhr realisieren, wenn der AVR noch 
viele andere Aufgaben übernehmen muss?
Beispielsweise Ansteuerung eines Displays, WAV-Ausgabe, Kommunikation 
teilweise mit Software emulierten Protokollen.

Autor: Alexander Schmidt (esko) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indem man die Such bemüht.
AVR - Die genaue Sekunde / RTC

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  screw (Gast)

>Wie genau kann man mit einem AVR eine Uhr realisieren, wenn der AVR noch
>viele andere Aufgaben übernehmen muss?

Sehr genau, 1ppm wenn es sein muss. Das macht im wesentlichen ein Timer. 
Und wenn man die Grundlagen für den Interrupt  beachtet, passiert da 
nix.

AVR - Die genaue Sekunde / RTC

>Beispielsweise Ansteuerung eines Displays, WAV-Ausgabe, Kommunikation
>teilweise mit Software emulierten Protokollen.

Das sind alles Sachen, die in einem soliden Programm dennoch nicht dazu 
führen dürfen, dass Interrutps verschluckt werden.

MFG
Falk

Autor: hdd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Timern. Die laufen nebenher und zählen bei jedem Schritt ein 
Register hoch. Wenn das überläuft oder einen bestimmten Wert erreicht 
(z.B. jede Sekunde) wird ein Interrupt aufgerufen, der dann deine 
Uhrzeit um eins erhöht.
Wenn der Rest zeitkritisch ist, sollte dieser Interrupt natürlich 
möglichst kurz sein. Aber da der Controller sich "merkt" wenn ein 
Interrupt aufgetreten ist bis er dann wirklich ausgeführt wird, kannst 
du für bestimmte Sachen die Interrupts auch kurz aus- und dannach wieder 
einschalten und so schlimm ist es ja nicht, wenn die Sekunde mal 100µs 
später umschaltet ;)

Autor: screw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, dann kann ich das ja mit dem Hauptprozessor machen.

Ansonsten hätte ich nämlich einen extra Prozessor für die DCF77 
Dekodierung und Uhrenfunktion genommen. z.B. einen kleinen Tiniy, der 
dann vom Hauptprozessor einfach ausgelesen wird, wenn die Uhrzeit 
gebraucht wird.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von DCF war im Ursprungsbeitrag aber keine Rede... Mit der Dannegger 
Methode geht aber auch das noch nebenbei.

Autor: screw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das DCF 77 würde ich ohnehin nur bei einem extra "uhrenprozessor" 
realisieren. Damit es sich wenigstens lohnt.

Wenn ich nur den Hauptprozessor verwende, holt er sich mehrmals am Tag 
die Uhrzeit über die ISM Funkstrecke.
Sofern es grade keine technischen Probleme gibt.

Über die ISM Funkstrecke kann das Gerät nicht nur die Zeit holen, 
sondern auch ins Internet. Über ein am Server oder Router 
angeschlossenes Funk-RS232 Modul und ein Phyton Script.

Autor: screw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, der Internetzugang wird benötigt, um den Kalender zu 
synchronisieren.

Es wird ein ganz besonderer Wecker, der mir morgens beim Aufstehen auf 
dem Display schon anzeigt, was den Tag über so ansteht.
Er berücksichtigt ebenfalls Feiertage, meinen Schichtplan und 
Urlaubstage.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
screw schrieb:
> Das DCF 77 würde ich ohnehin nur bei einem extra "uhrenprozessor"
> realisieren. Damit es sich wenigstens lohnt.

Das muss ja nicht sein. Viele AVRs haben eine "Input Capture"-Funktion, 
wo man per Hardware den Zeitpunkt eines externen Ereignisses 
registrieren kann. Es ist dann nicht mehr nötig, zeitnah eine ISR zu 
starten, um den Timerwert auszuwerten. Ausgewertet wird, "wenn Zeit ist" 
- im günstigsten Fall halt nur einmal pro Sekunde.

Autor: screw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, diese Input Captur Funktion habe ich noch nicht verwendet.

Ich habe einen DCF77 Decoder programmiert. Solange das Signal auf Low 
ist, wird ein Zähler hochgezählt. Jenachdem in welchem Bereich der 
Zähler ist, wird es dann als 0 oder 1 Signal interpretiert. Kurze Spikes 
z.B. durch Funkenstörungen werden toleriert.
Die decodierten Bits werden dann in einen 64 Bit langen Speicherbereich 
reinkopiert. Kommt der Minutenimpuls, wird ausgewertet. Das Ganze wird 
mehrmals gemacht. Wenn dann die Empfangen Werte mehrere Minuten 
zusammenpassen, wird das dann in die Uhr übernommen.
De Uhr ist bei mir auch nur ein Timerinterrupt, der einen 
Millisekundenzähler hochzählt. Die Decodierung der Millsekunden seit 
Tagesbeginn in Stunde, Minute, Sekunde wird erst bei Bedarf gemacht.

Wenn der AVR sonst nix zu tun hat, klappt das wunderbar. Ich war mir nur 
nicht sicher, was passiert, wenn ich eine hohe Auslastung des AVR mit 
anderen Aufgaben habe.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlev T. schrieb:
> Viele AVRs haben eine "Input Capture"-Funktion,
> wo man per Hardware den Zeitpunkt eines externen Ereignisses
> registrieren kann.

Für DCF77 völlig ungeeignet. Wenn das Modul aufgrund von Störungen 
spinnt, legt es den ganzen Controller lahm. Das DCF77-Signal kann von 
einem ohnehin laufenden Timer-Interrupt kontrolliert werden.

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.