Hauptuhr mit ATMega8

Gast #2082331
Hallo Leute,

ich plane eine Nebenuhr über einen ATMega8 anzusteuern. Die Uhr erwartet 
jeweils einen Impuls je Minute mit wechselnder Polarität.

Ich plane einen ATMega und einen L293 einzusetzten um die Polwendung zu 
erreichen. Dazu einen 32khz bzw. einen DS32khz Quarz Oscillator um die 
Genauigkeit zu erreichen.

Ich hab aktuell einen Probeaufbau mit einem 1Mhz Quarz und lass in 
Bascom einen Timer jede Sekunde zählen sodass ich bei 60 dann die Pole 
ändern kann.

Mein Problem ist noch das ich ja nicht dauerhaft Strom auf die Spule 
geben kann. Wenn ich allerdings den ATMega ein paar Sekunden anhalte ist 
meine Zeitzählung pfutsch.
Angehängte Dateien:
#2082354
Du willst z.B. bei Stromausfall oder bei Feierabend die Uhren ausmachen, 
in der Früh bei "Arbeitsantritt" wieder korrekte Zeit haben?

Häng doch eine externe Echtzeituhr wie z.B. eine DS1307 dran. In dem 
1307-Uhrenchip ist zusätzlich ein Batteriegepuffertes Non-Volatile RAM.

Der Atmega speichert nach jedem Stellbefehl/Impuls die angezeigte 
Uhrzeit im NV-RAM. Wenn nun der Strom ausfällt, geht im DS1307 die Uhr 
trotzdem weiter und der Speicher bleibt erhalten. Der Atmega liest bei 
wiedereinschalten die zuletzt gestellte Zeit aus dem NV-RAM aus und gibt 
solange Stellimpulse, bis die Uhrzeit der Nebenuhren wieder korrekt ist.

Lösung mit internem EEPROM des Atmega würde zwar funktionieren, aber den 
EEPROM zu stark "ausleiern".

mfg mf
Gast #2082387
Okay Nein also das mit der RTC hab ich mir dann auch schon überlegt aber 
erst als 2ten Schritt. Hab auch schon fleißig Datenblatt gelesen DS1307 
und DS32khz.

Mein aktuelles Problem/Frage ist das der Schaltkreis erst nach jeder 
Minute den Impuls sendet was aber kein Impuls ist sondern ein 
Dauer-"An".

Portx.0 = 0 'Spule'
Portx.1 = 1 'Spule'
Portx.2 = 1 'An'
Bei der nächsten Minute:

Portx.0 = 0
Portx.1 = 1
Portx.2 = 1

Das funktioniert auch wunderbar allerdings brennt mir irgendwann die 
Spule in der Uhr durch wenn ich 60 Sekunden lang Strom drauf gebe. Ich 
wollte halt was einbauen wie waitms 1000 und dann Portx.2 = 0 Strom aus 
-> Impuls.

Wenn ich nun den µC 1000ms warten lass dann ist die Timer geschichte 
hinfällig.

MfG
#2082393
Patrick schrieb:
> Wenn ich allerdings den ATMega ein paar Sekunden anhalte ist
> meine Zeitzählung pfutsch.

Warum willst Du ihn denn anhalten?

Die RTC macht man mit nem Timerinterrupt.
Ob nun 32kHz oder 10MHz Quarz, ist egal.
32kHz lohnt sich nur bei Batteriebetrieb (weniger Stromverbrauch).


Peter
#2082409
Patrick schrieb:
> Wenn ich nun den µC 1000ms warten lass dann ist die Timer geschichte
>
> hinfällig.

Wieso das denn?

Lasse den Atmega mit internem Takt laufen und schliesse an den 
Oszillator-eingang einen Uhrenquarz an. Dann stellst für Timer2 den 
asynchronen Takt ein und fertig ist deine Uhr. Der Timer2 läuft sogar im 
Sleepmode.

mfg.
Gast #2082422
Der Sekundenticker läuft doch eh rund.
Warum merkst du dir nicht die Zeit, wenn der Impuls zur Spule raus geht
und setzt die Spule eine Sekunde später wieder zurück?

Spule_an = Zeit_X
Spule_aus = Zeit_X + 1
Gast #2082505
Du hast noch einen kleinen Fehler im Programm.
Es gibt nur 59 Einheiten in der Zeit. Also nur 59 Sekunden.
Musst also deine Bedingung ändern in if sekunden > 59 then sekunden = 0.
Sonst zählst du pro Minute jeweils eine Sekunde zuviel.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.