PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zeitgeführte Rücknahme von Schaltbefehlen



mat-sche
16.02.2008, 12:45
Hallo @all,

ich habe mal wieder einen Punkt erreicht, wo ich leider nicht ohne einige Gedanken von Euch weiter komme:

habe mir eine Menüsteuerung über Glcd und Touchfunktion gebaut. Wenn ich nun auf einen bestimmten Button drücke, springt mein Programm in eine Sub, setzt ein Flag und springt dann weiter in die nächste Sub wo geprüft wird, wie viele Flags dieser gesetzt sind.
Dann springt das Prog weiter in eine Sub in der ein Bit gesetzt wird und kehrt dann wieder zum Hauptprogramm zurück.

Nun möchte ich aber nach ca. 1min dieses Bit wieder auf Null setzen.
Ich benutze in meinem Prog auch eine DCF77 Routine, Timer 0/1 sind schon belegt.

Hintergrund:

möchte in getrennten Subs einzeln Fensterläden hoch und runter fahren und will dabei für die Auf/abfahrzeit ca. (1min) einen Befehl geben.
Dieser Befehl muss universal für alle Möglichkeiten einsetzbar sein:

ich sage Flag: Rolladen 1 =1 und nach einer min. Flag Rolladen 1=0

nur wie kann ich dies realisieren, über die DCF77 Uhr oder den Timer2?


Danke!!!

for_ro
16.02.2008, 14:28
Du kannst in der Sub anstatt nur ein Flag Rolladen1 auf 1 zu setzen auch einen Counter Rolladen1 auf 60 setzen.
In der DCF Sekunden Routine (Sectic, wenn du die benutzt) zählst du Rolladen1 dann runter bis auf 0.
In dem Rest deines Progs fragst du dann nicht, ob Rolladen1 = 1 sondern ob Rolladen1 > 0 ist.

Gruß

Rolf

mat-sche
16.02.2008, 14:41
Hallo fo_ro,

ich nutze die Routine von MSC. Mit der Sectic kenne ich mich nicht aus.
Aber ich werde das ganze anders lösen:

ich schicke ja den Befehl an einen anderen M32 auf dem Board wo dann auch die Relaise sitzen. Bei dem Controller lasse ich dann einen Timer im Sekundentakt bis zum Überlauf hochzählen.
Kommt nun ein Rolladen auf oder runterbefehl lesen ich den derzeitigen Timerstand ein und setze das Signal Timer + 60sec. wieder auf Null. Somit brauch ich keine weitere Rechenzeit bzw. Befehle über TWI schicken und auf dem anderen Board.

Oder hast Du noch einen anderen Vorschlag?

Gruß MAT

for_ro
16.02.2008, 15:11
Ich war davon ausgegangen, dass du das DCF Signal nur zum Synchronisieren der Zeit benutzt, z.B. einmal pro Stunde.
Dann hat man noch etwas anderes, um die Uhrzeit dazwischen laufen zu lassen. Wenn du die Softclock benutzt, nimmt BASCOM dir dabei die ganze Arbeit ab. Dann gibt es eine Interruptroutine, die Sectic heißt und einmal pro Sekunde aufgerufen wird. Dort kann man dann alle möglichen anderen Befehle angeben, die einmal pro Sekunde laufen sollen. Schau mal in die Help zu Config DCF77, da ist Gosub Sectic auch beschrieben.

Gruß

Rolf

mat-sche
16.02.2008, 15:40
Danke für den Hinweis!
Diesen werde ich bestimmt mal an einer anderen Stelle gebrauchen können!
Ich werde den andere Controller den Auf/abbefehl wieder zurück nehmen lassen.
Ich bin mir noch immer noch nicht so ganz schlüssig was ich alles in meiner Wohraumsteuerung mit einbringen will und habe somit dann noch etwas "Luft".

Wenn ich schon mal dabei bin, hast Du schon einmal eine ähnliche Aufgabenstellung gehabt, bei der Du irgendwelche Variablen vor Stromausfall sichern musstest und wenn, wie hast Du das Prob gelöst?

Ich bin immer noch am grübeln wie ich es machen kann (Hardwaretechnisch kein Problem). Ich werde mir einen Resetbaustein besorgen und ihn an einen Interuptpin legen. aber das Prob ist de Software dazu....

Gruß MAT

for_ro
16.02.2008, 15:47
Bei meiner Heizungssteuerung war neben den Konfigurationsdaten von Anfang klar, dass ich auch die Temperaturen und Schaltbefehle permanent aufzeichnen wollte.
Daher habe ich eine SD Karte für die Speicherung eingebaut.
Auf einem festen Sektor werden dann alle Konfigurationsdaten abgespeichert, und zwar jedesmal, wenn per Menü daran geändert wird.
Kleinere Datenmengen kannst du z.B. auch im EEProm abspeichern.
Wenn es nur einige Bytes sind, haben auch einige RTC Bausteine eine Speichermöglichkeit. Ansonsten gibt es Speicher, die du mit I2C ansprechen kannst.

Gruß

Rolf

mat-sche
16.02.2008, 15:56
Für den Programmteil für das Aufzeichnen auf SD Karte werde ich mich irgend wann mal interessieren können und melden 8-[ , bis dahin ist es aber bei mir mit der Programmierung noch lang hin!

Ich habe schon diverse Erfahrung mit I2C eeproms und eine I2C-Routine habe ich ja auch schon in meinem Prog mit dabei.

Wie verarbeitest Du Deine Daten von der SD dann weiter?

MAT

for_ro
16.02.2008, 16:08
Die Temperaturen werden auf dem Display als fortlaufende Kurve dargestellt.
Da sich die Werte unterschiedlich schnell ändern, kann ich die Auflösung ändern. Das geht von jedem Wert anzeigen bis hin zu Mittelwert über 3 Tage, dann habe ich ein ganzen Jahr in der Anzeige.
Theoretisch könnte man den File auch auf dem PC öffnen. Aber das sind insgesamt 750MB und da müsste man schon ein Programm schreiben, um die auszulesen. Habe ich bisher noch nicht gemacht.

Gruß

Rolf

mat-sche
16.02.2008, 20:23
Das hört sich richtig interessant an! Ich werde bei Gelegenheit Dich noch einmal dazu kontakten. Von Zeit zu Zeit in der ich mich mehr mit der Materie beschäftige, bekomme ich langsam eine Übersicht, was man(n) alles mit solch einen Microkontroller alles machen kann!

Danke für Deine Antworten und fröhliches weiterproggen :D

Gruß MAT