Hallo AVR User,
ich war lange nicht aktiv im Forum, nun ist aber endlich wieder Herbst und damit Zeit um ein wenig mit Bascom zu programmieren.
Im Folgenden vorab ein Teil von einem kleinem Projekt für die Regelung eines Saunaofens.
Es beinhaltet in erster Linie 4 Punkte
Einsatz eines
- Drehencoders mit Taster v. haupt+schuler Typ 427
- Feuchte und Temp. Sensor HYT 271 per I2C
- RTC DS 1307 per I2C
- Menuestruktur mit Drehencoder
Drehencoder
Ich habe zuerst versucht den Bascom 'enc' Befehl zu nutzen.
Das funktioniert leider nur sehr mäßig. Im Datenblatt des Encoder gibt es zwei Ablauf Diagramme für die Auswertung des Encoders. Mit und ohne Nutzung eines Interrupt.
Ich habe mich für die Nutzung mit Interrupt und Umschaltung der Flanke entschieden. Es funktioniert in allen Situationen absolut betriebssicher! (Auszug aus Datenblatt als pdf-Anlage).
HYT bzw. DS 1307
Ich habe einen Teil der Routine aus dem Internet übernommen, da das Datenblatt nicht sehr aussagekräftig ist.
Mit dem untenstehenden Quellcode funktionieren HYT und RTC sehr zuverlässig. Die RTC verliert etwa 1 Sec. in 24 Std, ein Quarz mit 10ppm und der von Maxim geforderten 12,5pF ist bestellt. Ich werde später berichten ob die Genauigkeit sich verbessert. Das I2T Handling ist in dem angefügten Quellcode noch nicht für die Nutzung von 2 Teilnehmern am Bus optimiert, es geht aber hauptsächlich um die prinziepelle Funktion.
Menuestruktur
Da meine früheren Projekte auf 4 Taster Steuerung basierten - links / rechts zum blättern und rauf / runter zum ändern der Werte - mußte für den Encoder etwas Neues her.
Ich hoffe es gibt einige Leser im Forum, die hierzu eine Aussage machen werden. Evtl. auch Vorschläge wie man das ganze vereinfachen kann. Es ist sicher nicht ganz einfach, den Ablauf und die Sprünge in einem fremden Quellcode nachzuvollziehen. Wenn gewünscht verkürze ich das gerne noch auf ein Minimum.
Die Uhreinstellung läßt sich sicher noch verbessern, aber auch hier war das Ziel eine Menuestruktur mit einem Untermenue aufzubauen.
Ausblick
Im Augenblick ist das System 'quick and dirty' zusammengelötet. Die Dimmerfunktion und die Regelung sind hier nicht aufgeführt weil
a. der Platz im Flash nicht reicht und b. es das ganze noch unüersichtlicher machen würden. Es gibt aber beides schon in einem vorherigem Projekt. Für den Dimmer sei noch einmal an dem hier im Forum vorgestellten 'Norkadosendeimmer' von Cassio erinnert!
Ich warte zur Zeit auf einen 168er mit mehr Flash und auf ein 4-zeiliges Display. Ich werde dann das Programm noch einmal
umstricken und mit den fehlenden Routinen vervollständigt hier einstellen.
Viele Grüße
hage
Dank der Begrenzung auf max. 15.000 Zeichen pro Beitrag folgt der Quellcode im näachsten....
ich war lange nicht aktiv im Forum, nun ist aber endlich wieder Herbst und damit Zeit um ein wenig mit Bascom zu programmieren.
Im Folgenden vorab ein Teil von einem kleinem Projekt für die Regelung eines Saunaofens.
Es beinhaltet in erster Linie 4 Punkte
Einsatz eines
- Drehencoders mit Taster v. haupt+schuler Typ 427
- Feuchte und Temp. Sensor HYT 271 per I2C
- RTC DS 1307 per I2C
- Menuestruktur mit Drehencoder
Drehencoder
Ich habe zuerst versucht den Bascom 'enc' Befehl zu nutzen.
Das funktioniert leider nur sehr mäßig. Im Datenblatt des Encoder gibt es zwei Ablauf Diagramme für die Auswertung des Encoders. Mit und ohne Nutzung eines Interrupt.
Ich habe mich für die Nutzung mit Interrupt und Umschaltung der Flanke entschieden. Es funktioniert in allen Situationen absolut betriebssicher! (Auszug aus Datenblatt als pdf-Anlage).
HYT bzw. DS 1307
Ich habe einen Teil der Routine aus dem Internet übernommen, da das Datenblatt nicht sehr aussagekräftig ist.
Mit dem untenstehenden Quellcode funktionieren HYT und RTC sehr zuverlässig. Die RTC verliert etwa 1 Sec. in 24 Std, ein Quarz mit 10ppm und der von Maxim geforderten 12,5pF ist bestellt. Ich werde später berichten ob die Genauigkeit sich verbessert. Das I2T Handling ist in dem angefügten Quellcode noch nicht für die Nutzung von 2 Teilnehmern am Bus optimiert, es geht aber hauptsächlich um die prinziepelle Funktion.
Menuestruktur
Da meine früheren Projekte auf 4 Taster Steuerung basierten - links / rechts zum blättern und rauf / runter zum ändern der Werte - mußte für den Encoder etwas Neues her.
Ich hoffe es gibt einige Leser im Forum, die hierzu eine Aussage machen werden. Evtl. auch Vorschläge wie man das ganze vereinfachen kann. Es ist sicher nicht ganz einfach, den Ablauf und die Sprünge in einem fremden Quellcode nachzuvollziehen. Wenn gewünscht verkürze ich das gerne noch auf ein Minimum.
Die Uhreinstellung läßt sich sicher noch verbessern, aber auch hier war das Ziel eine Menuestruktur mit einem Untermenue aufzubauen.
Ausblick
Im Augenblick ist das System 'quick and dirty' zusammengelötet. Die Dimmerfunktion und die Regelung sind hier nicht aufgeführt weil
a. der Platz im Flash nicht reicht und b. es das ganze noch unüersichtlicher machen würden. Es gibt aber beides schon in einem vorherigem Projekt. Für den Dimmer sei noch einmal an dem hier im Forum vorgestellten 'Norkadosendeimmer' von Cassio erinnert!
Ich warte zur Zeit auf einen 168er mit mehr Flash und auf ein 4-zeiliges Display. Ich werde dann das Programm noch einmal
umstricken und mit den fehlenden Routinen vervollständigt hier einstellen.
Viele Grüße
hage
Dank der Begrenzung auf max. 15.000 Zeichen pro Beitrag folgt der Quellcode im näachsten....