PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie am Besten Ein- und Ausschaltverzögerungen realisieren?



Dane
14.12.2005, 06:38
Hallo,

ich werde in nächster Zeit eine Steuerung bauen, mit der ich verschiedene Lampen und 230V-Verbraucher mit Relais schalten kann. U.a. mit der Fernbedienung (RC5).
Ich habe schon so manches SPS Programm geschrieben (S5 und S7). Da ist eine Ein- bzw. Ausschaltverzögerung sehr einfach zu realisieren.

Meine eigentliche Frage: Wie macht man das am Besten in Bascom?

Das Problem bei waitms ist ja, dass der µC in dieser Zeit stillsteht und nichts "mitkriegt".

Ein einfaches Beispiel:
Wenn ein Eingang HIGH wird, soll nach 2s ein Ausgang HIGH werden.

Wie würdet Ihr das machen?

Gruß, Dane

Klaus_0168
14.12.2005, 07:42
Hi Dane,

wie wäre es, wenn Du Deinem Problem einen Interrupt spendierst, der z.B. auf 100ms eingestellt ist. In der Interruptserviceroutine kannst Du dann vorher gesetzte Variablen dekrementieren und auf 0 testen.

Wenn zB. die Variable X mit dem Wert 20 initialisiert und im 100ms dekrementiert wird, hast Du nach (20 x 100ms = ) 2 Sekunden einen 0 - Durchgang. Der Vorteil dieses Verfahrens ist, das die restlichen Routinen weiter arbeiten können.

Bevor Du jetzt Fragst, wie man einen Interrupt programmiert, dies habe ich bei AVR's selbst noch nicht gemacht, ich weis aber, das AVR's Hard - und Softwareinterrupts zur Verfügung stellen (-> siehe Datenblatt).

Grüße Klaus

Ratber
14.12.2005, 12:53
Moin


Was Klaus meint ist das du dafür den Timer nutzen kannst.

Vie Controller haben 2 oder mehr davon.

Der Timer wird wie ne Eieruhr Programiert und wenn der Zähler abgelaufen ist dann löst er einen IRQ aus.
Da das ganze unabhängig davon passiert was der Controller sonst noch alles veranstaltet kann man damit prima Zeit messen.