Hallo Leute, Gibt es bei AVR eine änliche interne Uhr wie bei der CControll? Bei der CControll von Conrad konnte man ohne zusätzliche Bauteile, die Uhr stellen z.B.:hour = 0 minute = 0 und dann z.B. um 5.30 Uhr zu einen Unterpunkt springen.(if minute = 30 and hour = 5 then goto Licht) Ist sowas auch mit einem AVR möglich? Im vorraus danke für eure Antworten. MFG Michael
Nein. Es sei denn du proggst das komplett selbst dann ja. Aber von vornherein nein. Ist halt nur ne RISC MCU mit nen bischen Flash, EEPROM und ein paar Ein/Ausgängen. Grundsätzlich gilt aber: Alles ist möglich ;-) Du müsstest dir halt erstmal eine Uhr programmieren die dann regelmässig überprüft ob zur aktuellen Zeit eine Event zugeordnet ist. Viel Spass dabei. Cabal
Das mit der Schaltuhr ist etwas komplizierter, wenn sie auch nach Tagen noch genau gehen soll. Wenn man das über den eingebauten Timer programmiert, hat man eine schöne Uhr. Aber mit den handelsüblichen Quarzen und ohne weiteren Abgleich geht die ungefähr so genau wie eine PC-Uhr, nämlich gar nicht. Schon an einem Tag gibt es Abweichungen von ziemlich vielen Sekunden. Da daran nicht der AVR schuld ist, sondern der Quarz, muss man da noch einiges machen, wenn man es genauer braucht. Also, besserer Quarz, Quarz abgleichen, oder mit DCF77 synchronisieren, oder ... oder ... oder. Je nachdem, wie lange man das Ding alleine lassen will. Aber zum Nur-mal-rumspielen reicht es. So ne Rum-Spiel-Uhr gibt es auf meiner Webseite. MfG Gerd
Naja also so ganz kann ich dir da nicht zustimmen. Ich habe mir vor Jahren eine Uhr gebastelt aus reinen CMOS ICs. Ganz simpel von 1MHz 6x durch 10 geteilt = 1Hz und das dann in eine Zählstufe mit passender Zählumfangsbegrenzung. Als das Teil fertig war eingestellt und zwar synchron zu meinem Funkwecker und den ganzen Tag laufen lassen. Ergebniss: Nach 24 Stunden keine sichtbare Abweichung. Also mein Fazit diese Lösung ist zumindest im Privatbereich akzeptabel. Natürlich machts mehr Spass sowas mit DCF77 zu basteln. ;-) Es ist auf alle Fälle immer noch genauer wie die frühen Radiowecker die die Netzfrequenz als Taktgeber benutzt haben. Ich hatte mal so ein Teil wenns der Strom Nachts mal wieder besonders eilig hatte wurde man eine halbe Stunde zu früh geweckt. Cabal
Hi, meine Empfehlung: I2C-Uhren-IC z.B. PCF8583 separat mit einer Akkuzelle laufen lassen und an den AVR anbinden. Gelegentlich mit einem DCF77 Modul synchronisieren. mfg wolli_r (http://www.tec-shop.de)
Also mit einem Quarz viele Sekunden Abweichung an einem Tag halte ich für stark übertrieben. Es sei den man hat irgendwelche 3. Wahl Quarze. Die Fertigungstoleranzen üblicher Quarze sind doch heute mit +-50 ppm und die Temperaturstabilität mit +-30 ppm recht gut. Natürlich kann man noch einen Ab- gleich mit einem C-Trimmer vornehmen, sofern ent- sprechend genaue Messgeräte zur Verfügung stehen. Oder man entscheidet sich gleich, sofern es die Störfelder zulassen gleich für einen DCF77 Empfänger. Für normale Anwendungen dürfte ein normaler Quarz in Standard- Industriequalität ausreichen. Die Ungenauigkeit der PC-Uhr ist ja nicht auf die Ungenauigkeit des Takt- oszillators zurückzuführen, sondern dieser wird ja im normalen Timer-Interrupt 18,2 mal Sekunde aktualisiert. Leider wird dieser von etlichen Anwendungen und Treibern des öfteren blockiert. Daher liefert sie des öfteren nur "Schätzergebnisse". Die unabhängige RTC des PC die ja auch batteriegepuffert ist, wird ja im Normalfall nur beim booten des Rechners gelesen. Hier gibt es allerdings verschiedene Tools, die einen zyklischen Abgleich zwischen diesen beiden "Uhren" durchführen.
Also Quarze sind schon sehr konstant. Aber die Frequenz stimmt nicht immer. Man muß sie also abgleichen, am besten digital. Man schreibt z.B. .equ XTAL = 10000000 Daraus berechnet man dann im Kode die entsprechenden Timer-Reloadwerte und Korrekturwerte. Da der AVR-Assembler mit 32 Bit rechnet sind diese Werte ausreichend genau. Dann läßt man das ganze mindestens 1 Monat laufen und stopt möglichst genau, wieviel die Uhr abweicht. Dann berechnet man daraus die wirkliche Quarzfrequenz, z.B. .equ XTAL = 10000516 Nun nur noch neu assemblieren und brennen und die Uhr läuft danach sehr genau (bei Zimmertemperatur). Man kann ja nach genau einem Jahr die Frequenz noch mal korrigieren und hat dann auch die Jahreszeitlichen Temperaturschwankungen mit erfaßt. Peter
Das könnte man auch mit einer "Autokorrektur" machen. Mittels einer Synchronisierungstaste korrigiert man die Sekunden der AVR-Uhr in größeren Zeitabständen auf die volle Minute. Das Programm im AVR muss dann neben dem Rückstellen der Sekunden und ggf. aufrunden auf die nächste volle Minute einen Korrekturfaktor aus der Zeit seit dem letzten Korrekturvorgang und der Zeitdifferenz während dem Korrekturvorgang ermitteln. Dieser Korrekturfaktor kann dann zur Laufzeit eingebunden werden. Siegfried
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.