Ich hab vor einiger Zeit mal die Frage gestellt wie man das am besten
macht wenn man viel I/O Zeugs dran hat, also z.B. 3 Relais, n' paar
Optokoppler unsw und man die z.B. wie bei einer Stereoanlage einen
Wecker programmieren kann um bestimmte Sachen in einer gewissen Zeit
schalten zu lassen.
Das Konzept mit dem internen Timer war mir immer irgendwie unsympathisch
da alles top sein sollte, z.B. Zeit bis zu Abschalten von ein paar
Tagen, mehrere Programmierungen, das Löschen von solchen etc.
Jetz bin ich auf eine neue Idee gekommen die - so denke ich - einfach zu
realisieren wäre:
Ich nehme einen normalen RTC der mir immer die aktuelle Zeit sagt (die
muss halt ggf auch vorher programmiert werden). Jetzt frage ich in der
main Schleife einfach immer über irgendwelche I/O Pins die Zeit ab. Wenn
ich jetzt programmiere dann nehme ich aktuelle Zeit + programmierte
Zeit, es wird in eine Art Tabelle geschrieben zu welchem Zeitpunkt was
geschehen soll. Dann schaut der uC ob für den jetzigen Zeitpunkt was zu
tun ist. Wenn nein geht es halt in den nächsten Schleifendurchgang, wenn
ja wird die Aktion ausgeführt und der Eintrag aus der Tabelle gelöscht.
Die Tabelle könnte sogar im EPROM gespeichert werden damit Programmieren
auch beim Herausziehen des Steckers und vor allem bei einem ungewollten
RESET nicht verloren gehen.
BTW: Der AT90S2333 hat eh n' EEPROM oder?
Gibts da einen RTC der relativ leicht anzusteuern ist und so wenig I/Os
wie möglich braucht, da ich ein LCD auch noch anschliessen will?
Der I2C Bus ist eh seriell über nur 2 Leitungen oder? Gibt es vielleicht
einen I2C RTC?
Ich könnte dann - komm ich grad drauf - wenn grad nichts auf dem LCD
anzuzeigen ist die aktuelle Uhr anziegen.
Das Programmieren stell ich mir in Menü-Basis vor.
Ein bestimmter Knopf auf der Fernbedieung aktiviert das Menü, dann gibt
es eine Taste "Neu" in der ich mittels einer Zahl das Gerät eingebe das
geschaltet werden soll und dann z.B. das Timeout in 10-Minuten
Schritten, nur so als Beispiel. Und währenddessen wird einem halt alles
am Display angezeigt....
Findet ihr das mit dem externen RTC überhaupt eine gute Idee und wenn
ja, was würde sich da eignen? Hat vielleicht schon jemand von euch sowas
in der Art gemacht??
Vielen Dank im Vorraus!
Niki
Hallo Niki!
Vielleicht kennst Du ja die AVR-Control-Platine von un serer Homepage:
http://www.mikrocontroller.com
Da ist schon fast alles drauf, was Du brauchst:
- Lcd
- Tastatur
- Relais und Treiber für 7 weirere Relais
- Infrarot-Empfänger
- Temperatursensor (Falls Du bei Frost 10min eher raus musst)
- AT90S8535 oder AT90S4434
- ...
Nur die I2C-Uhr fehlt. Aber der Stecker für I2C ist schon vorgesehen.
Gruss,
Holger
Hallo allerseits,
I2C-RTC=PCF8583, sogar mit 240 Byte freiem Ram drin, sollte optimal für
eine Zeitschaltung sein, da lassen sich die Daten im RAM speichern.
MvG Kurt
Also ich weiss nicht. Schon wieder so ein Ding mit 32.768 Kilohertz
Quarz. Dann kann man ja direkt via Zähler den Quarz des MC als Zeitbasis
nehmen, so genau wie diese Dinger sind. Gibt es nichts in dieser
Richtung mit einem 4.192 Mhz Quarz? Die sind nämlich wenigstens so
ganggenau, dass sie auch das Prädikat "Uhr" verdienen.
Gruss,
Peter
Hallo Peter,
der PCF 8583 läßt sich ja auch abgleichen - die Ganggenauigkeit ist für
einfache Schaltuhren, bei denen es nicht auf die 10tel Sekunde ankommt
ausreichend.
Ein Vorteil ist der eingebaute Ram, in den 240 Byte RAM lassen sich
prima die Schaltdaten speichern, das schont den AVR-EEPROM. Weiterhin
lässt sich das Teil auch prima mit einem Akku puffern und läuft trotzdem
weiter, auch bei Stromausfall. Willst Du den ganzen AVR akkugefuffert
laufen lassen ist das schon stromintensiv für den Akku. Außerdem kann
man den 8583 auch einen Interrupt erzeugen lassen z.B. einmal pro
Sekunde. Im Interrupt lassen sich sämtliche Schalt- und Anzeigeaufgaben
lösen- zwischendurch kann der AVR dann wieder schlafen - bis zum
nächsten Interrupt. Das spart auch n paar mA.
Also ich bastel gerne mit dem 8583.
Gruß Kurt
Hi Kurt!
Ich programmiere mit Bascom AVR und möchte die "Schaltdaten" setzen.
Der Interrupt soll einmal am Tag ausgelöst werden, oder auch jeweils
nach 24h .... egal wie! Aber wie gebe ich dem PCF diese Info?
mfG - Tobias
Hi,
anderes RTC IC DS1307.
@Tobias: Schau mal bei Kuehnels HP vorbei da ist ein Beispielsprg zum
PCF8583P. Das IC hat eine Alarmfunktion ich denke mal du meinst das.
Mfg Dirk
Hallo Dirk!
Ja, ich meine die Alarmfunktion.
Vielleicht bin ich zu blöd, aber ich finde dieses Beispiel auf
www.ckuehnel.ch nicht.
Könntest du mir da evtl noch weiterhelfen?
Mfg Tobias
Hi,
hier das File. Ich bin auch gerade dabei das Ding bei Bascom
einzubinden fuer eine Designer Lampe. Falls du nen paar Sachen hast
kannst ja mal hier adden.
Mfg
Diek
Ich weiß ja nicht, wo Du wohnst, aber hier in Berlin habe ich mehrere
Selbstbauuhren nur mit Netzbetrieb laufen, ohne daß sie ausfallen.
Und wenns sehr sehr selten doch mal Stromausfälle gibt, sind die so
kurz, daß man bequem auch den ganzen MC mit einer Batterie puffern
kann.
D.h. ein MC als Uhr ist in meinen Augen aber sowas von Tip Top.
Dagegen sind RTCs fast nur mit NF-Quarzen zu kriegen.
Quarze mit höherer Frequenz sind aber prinzipbedingt auch stabiler.
Das trifft besonders im Hinblick auf Temperaturschwankungen zu.
Ein Uhrenprogramm z.B. mit einem 4MHz-Quarz wird deshalb immer
wesentlich konstanter sein, als ein RTC mit 32kHz.
Abgeglichen werden müssen beide, wobei man eine Softwareuhr bequem in
Software abgleichen kann.
Auch kann eine Softwareuhr bereits die Sommerzeitregel beinhalten und
ist trotzdem im Code wesentlich einfacher, da sämtliche
Protokollwandlungen zu einem externen Chip entfallen. D.h. die Zeit
liegt schon fix und fertig in den entsprechenden Registern als Sekund,
Minute, ..., Jahr vor.
In der Codesammlung findest Du eine Menge Beispiele von mir, z.B. auch
für den RTC DS1994 oder für den hochgenauen DCF-77.
Peter
Hallo
habe sowas mit DCF77 Uhr gebastelt. Schalte damit aber momentan nur ein
Relais, um damit meinen PC zu starten. Das ganze habe ich mit C für
WinAvr gemacht, war mein erstes Projekt in C. Wenn Interesse besteht
kann ich es hier zu Verfügung stellen...
Gruß
Peter
Hallo,
habe auch mal eine Platine mit dem 1307 aufgebaut, Vorteil ist hals
selbstständig aktivierende Stützbatterie, leider dafür kein Interrupt.
Gruss
A. Arndt