Forum: Mikrocontroller und Digitale Elektronik PCF 8583 mit Atmega16 in c programmieren


von Carolin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
bin absoluter Programmierneuling, brauche aber dringend Hilfe.
Mein Problem: ich will den Uhrenbaustein PCF 8583 mit dem Atmega16
zusammen benutzen und mein Problem ist nun, wie kann ich die aktuelle
Zeit über den MC an meine 72 LED´s (Kreis mit 60 LED´s für Minuten und
Sekunden und zweiter Kreis mit 12 für Stunden) ausgeben. Meine Idee,
das ganze mit 72 if Schleifen  zu machen ist sicher sehr schlecht, aber
ne bessere Idee ist mir noch nicht gekommen.

Ich habe mal den Schaltplan in Eagle als Anhang rangehängt, damit
vielleicht mein Problem deutlicher wird.

Wäre toll, wenn mir jemand eine Idee geben könnte.
Ich mach das ganze übrigens in C
Vielen Dank, Caro

von Tobi (Gast)


Lesenswert?

wie gibt der 8583 dir denn die zeit zurück, d.h in welchem format. hab
gerad keine lust datenblätter zu lesen

von Carolin (Gast)


Lesenswert?

als 8 bit Wort in Hexadezimal -> bei z.b. 15 Minuten: 0001 0101
bei Sekunden genauso, nur bei Stunden ist es xx10h 1h
Glaube das heißt BCD Code

von StephanW (Gast)


Lesenswert?

Schau mal in die Codesammlung. Dort findest du meinen C-Treiber für
dieses IC. Ist zwar für einen PIC, aber das portieren dürfte nicht
allzu schwierig sein.

Gruß Stephan

von Andreas Hesse (Gast)


Lesenswert?

Hallo,

ich glaube nicht, das es um einen Treiber für das IC geht.
Vielmehr geht es darum, wie man den BCD-Code aus dem IC in einen "1
aus 60" Code der Minuten (Sekunden) oder "1 aus 12" Code der Stunden
überführt.

@Carolin:

Du könntest auch Zeit und Kalender im AVR direkt programmieren (Code
gibts im Forum). Dann kannst Du auf den Uhrenbaustein verzichten. (Wenn
Du kein Batterie Backup benötigst).
Dann könnntest Du die LEDs mit Schiebeoperationen ansteuern.

Wenn Du den Uhrenbaustein Uhrenbaustein unbedingt verwenden willst,
dann könntest Du das vielleicht über eine Tabelle lösen. (Also Anzahl
der Sekunden ermitteln und in einer vorher angelegten Tabelle unter
Punkt 15 dann die Bitkombination speichern.)

Das ist mal so ins unreine gesprochen.

Gruss
Andreas

von Tobi (Gast)


Lesenswert?

über schieberegister gehts auch noch einfacher. alle hintereinander
hängen bei 0 ein sgnal anlegen und einmal takten und danach nur noch
bei jeder veränderung der zahl (die eigentlich zahl ist dann egal) eins
weiterschieben. sollte ja eigentlich syncron laufen

von Carolin (Gast)


Lesenswert?

Hallo, danke für die vielen Tipps.

@Stephan: Habe mir deinen Code angeschaut. Nur mein Problem ist, dass
ich nicht weiß, wie ich jetzt dieses BCD Wort in eine c schleife oder
ähnliches verpacke um dann die LED´s blinken zu lassen.

Den Uhrenbaustein brauche ich denke mal schon, weil ich mit dieser Uhr
noch was machen möchte, und zwar, ist Sinn dieser ganzen  Sache eine
Uhr zu bauen, die je nachdem wie rum der Stecker in der Steckdose
steckt(analogteil jetzt nicht ersichtlich) einmal vorwärts und einmal
rückwärts laufen soll.
Und dafür muss ich ja öfter die aktuelle Zeit auslesen.

Hoffe auf weitere gute Tipps und Ideen, Danke

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.