Forum: Mikrocontroller und Digitale Elektronik Uhr programmieren AT90S8535


von Christian Dresel (Gast)


Lesenswert?

hi

wie programmier ich am einfachsten eine uhr? hab gedacht mit 3
Variablen (sek min std) und pro sekunde die sek eins hochzählen bei
mehr als 59 dann eben min um eins erhöhen usw.

nur wie bekomm ich einen 1sekunden takt? hab gedacht mit nem quarz so
um ca. 1khz den am interuppt eingang anlegen dann ne zählervariable und
wenn die bei 1000 ist sek um eins erhöhen.

was meint ihr bessere ideen oder ist die idee schon gut?

mfg

Christian

von Oliver K. (oliver-tmp)


Lesenswert?

Schau mal in die Codesammlung da gibt es eine gutes Beispiel.

von akw (Gast)


Lesenswert?

Einfach nen Timer nehmen, je nach Quarz mit Prescaler und Preset auf
eine Sekunde stellen und beim Overflow die Sekundenvariable um eins
erhöhen...

von akw (Gast)


Lesenswert?

Achso noch was: ist net so übel genau, wenns wirklich genau werden soll
DCF77 Empfänger nehmen!

von Christian Dresel (Gast)


Lesenswert?

hi

mir reicht es auf 10 minuten /jahr genau locker.

DCF77 ist denk ich mal zu kompliziert.

@akw

meinst du ohne extra quarz einfach mit nem timer und das klappt und
wird rel. genau? wie genau wird es denn in etwa?

mfg

chrisi01

von Paul Baumann (Gast)


Lesenswert?

@Christian
Ich habe hier eine Uhr mit ATTINY2313 und 4Mhz-Quarz dran. Die läuft
jetzt ein halbes Jahr und geht 3 Sekunden nach. Ich denke, daß diese
Genauigkeit reicht.

MfG Paul

von Christian Dresel (Gast)


Lesenswert?

hi

aber dann muss ich ja jede flanke zählen bis 4 millionen und bei nen
8mhz controller ist die halbe leistung des controller schon
"verbraten" oder gibts da nen schaltungstechnischen trick?

ich mein der controller muss ja bei jeden 2 takt dann in die
interuptfunktion

reichen würde die genauigkeit LOCKER

mfg

Christian

von akw (Gast)


Lesenswert?

Warum Flanken zählen? Du hast deinen Controller mit 4 Mhz. Dann hast du
nen Timer der hochzählt. Der Quarz kommt nicht an nen Interupt. Du hast
ja beim Timer nem Prescaler, dein 16 Bit Timer geht nur bis zu ner
gewissen Zahl und dann stellst du den Timer per Preset schon so hoch,
dass es bis zum Overflow genau ne Sekunde dauert und zählst dann hoch.

Hoffe das war verständlich ^^

gruß

von akw (Gast)


Lesenswert?

Hier noch was von mir:

On Timer1 Sekunde_plus
Config Timer1 = Timer, Prescale = 64
Enable Timer1
Enable Interrupts
Timer1 = 49910

Zuerst Prescaler auf 64 heißt bei nem Takt von 1 Mhz 1562,5.
Dann stellt man den Timer auf 49910 ein, dann dauerts bis zum Overflow
ungefähr ne Sekunde.

Hoffe du weißt was ich mein!

gruß

von Christian Dresel (Gast)


Lesenswert?

hi

ich denke das wärs wenn ich schonmal mit timer gearbeitet hätte ;)

ich hab mitlerweile so ziemlich alles verwendet aber timer hatten wir
noch nicht in der schule...

vllt. kannst du es nochmal für dummis erklären die zwar von uC Ahnung
haben aber och nie mit timer gearbeitet haben :)

notfalls wart ich noch 2 Wochen und dann werd ich das schon noch
erfahren in der Schule :)

mfg

Christian

von Christian Dresel (Gast)


Lesenswert?

achja mein atmel läuft mit 8mhz

von akw (Gast)


Lesenswert?

Also hier ist ein Link, dort ist alles sehr gut erklärt wie ein Timer
funktioniert und weiter unten auch wie man nen Sekundentakt erzeugt...
Ist zwar in Bascom aber übersetzen wirst du ja hinbekommen wenn du mal
weißt wies geht!

http://www.roboternetz.de/wissen/index.php/Bascom_und_Timer

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.