kollimann
27.08.2012, 20:02
Hallo, steh etwas auf dem Schlauch...................
Ich baue eine RGB LED Steuerung mit einem Atmega8, soweit kein Problem.
Ich würde gern die eigestellten Parameter nach einer Zeit XX ins Eeprom speichern das beim nächsten anschalten alles so ist wie beim letzten ausschalten.
RGB LED bedeutet ja das ich beide Timer für 3 PWM Kanäle benötige, also hab ich keinen Timer über um nun angenommen 30 Sekunden zu zählen um dann zu speichern.
Kurze Projekt Info.
3PWM Kanäle für die RGB LEDs, 3 Taster, 1xheller,1xdunkler,1xFarbe.
Mein Gedankengang, wenn 1Taster gedrückt wird eine Startvariable auf 1 setzen, einen Zählwert auf 0 setzen, in die Hauptschleife dann wenn "Startvariable=1" dann incr Zählwert, wenn Zählwert = XXXXXXX dann Sekunde +1 und Zählwert wieder 0. Also einen "eigenen" Timer, wobei eigentlich völlig egal ist wie genau der geht, also ob nun da 30Sekunden am Ende rauskommen oder 40Sekunden ist ja wurscht.
Sinn des ganzen soll nur sein, man macht Licht an, stellt sich was hübsches ein wenn dann eingestell, also die in etwa 30Sekunden abspeichern.
Soweit zur Theorie.
Wie bekomm ich nun raus "bis wieviel" der Atmega in einer Do-Loop zählt? Weil irgendwie muss ich ja einen anhaltswert finden wieviel mal er in etwa pro Sekunde die Do-Loop durchrennt.
Hoffe es versteht jemand in etwa was ich hier schreibe,
Der Code in groben Zügen
Do
Taster1 überwachen, wenn gedrückt goto heller
Taster2 überwachen, wenn gedrückt goto dunkler
Taster3 überwachen, wenn gedrückt goto farbe
Compare1a = Farbwert1
Compare1b = Farbwert2
OC1a = Farbwert3
If Startzähler = 1 then
incr Zählwert
If Zählwert = XXXXX
Incr Sekunde
Zählwert = 0
End if
End if
If sekunde = 30 then
goto speichern
end if
Loop
Heller
bla bla
Zählwert = 0
Startzähler = 1
goto main
das dann auch bei dunkler und bei Farbe, also immer wenn ein Taster gedrückt Zeit von 0, wenn dann man X Sekunden ruhe ist speichern.
Atmega läuft bei 4Mhz
Also eigentlich brauch ich ja nur noch wissen eben bis wie weit zählt der Atmega in etwa pro Sekunde? Wie berechne ich das?
Oder wie sonst machen?????
Andere, bessere Vorschläge gern willkommen.
Danke Heiko
Ich baue eine RGB LED Steuerung mit einem Atmega8, soweit kein Problem.
Ich würde gern die eigestellten Parameter nach einer Zeit XX ins Eeprom speichern das beim nächsten anschalten alles so ist wie beim letzten ausschalten.
RGB LED bedeutet ja das ich beide Timer für 3 PWM Kanäle benötige, also hab ich keinen Timer über um nun angenommen 30 Sekunden zu zählen um dann zu speichern.
Kurze Projekt Info.
3PWM Kanäle für die RGB LEDs, 3 Taster, 1xheller,1xdunkler,1xFarbe.
Mein Gedankengang, wenn 1Taster gedrückt wird eine Startvariable auf 1 setzen, einen Zählwert auf 0 setzen, in die Hauptschleife dann wenn "Startvariable=1" dann incr Zählwert, wenn Zählwert = XXXXXXX dann Sekunde +1 und Zählwert wieder 0. Also einen "eigenen" Timer, wobei eigentlich völlig egal ist wie genau der geht, also ob nun da 30Sekunden am Ende rauskommen oder 40Sekunden ist ja wurscht.
Sinn des ganzen soll nur sein, man macht Licht an, stellt sich was hübsches ein wenn dann eingestell, also die in etwa 30Sekunden abspeichern.
Soweit zur Theorie.
Wie bekomm ich nun raus "bis wieviel" der Atmega in einer Do-Loop zählt? Weil irgendwie muss ich ja einen anhaltswert finden wieviel mal er in etwa pro Sekunde die Do-Loop durchrennt.
Hoffe es versteht jemand in etwa was ich hier schreibe,
Der Code in groben Zügen
Do
Taster1 überwachen, wenn gedrückt goto heller
Taster2 überwachen, wenn gedrückt goto dunkler
Taster3 überwachen, wenn gedrückt goto farbe
Compare1a = Farbwert1
Compare1b = Farbwert2
OC1a = Farbwert3
If Startzähler = 1 then
incr Zählwert
If Zählwert = XXXXX
Incr Sekunde
Zählwert = 0
End if
End if
If sekunde = 30 then
goto speichern
end if
Loop
Heller
bla bla
Zählwert = 0
Startzähler = 1
goto main
das dann auch bei dunkler und bei Farbe, also immer wenn ein Taster gedrückt Zeit von 0, wenn dann man X Sekunden ruhe ist speichern.
Atmega läuft bei 4Mhz
Also eigentlich brauch ich ja nur noch wissen eben bis wie weit zählt der Atmega in etwa pro Sekunde? Wie berechne ich das?
Oder wie sonst machen?????
Andere, bessere Vorschläge gern willkommen.
Danke Heiko