meldano
29.03.2007, 07:03
Hallo,
als erstes möchte ich mich mal eben Vorstellen.
Mein Name ist Daniel. 26J, Energieelektroniker und auf dem Weg zum staatl. gepr. Elektrotechniker.
Programmierkentnisse: SPS- und Delphiprogrammierung. Beides nicht perfekt , aber man lernt ja immer dazu O:)
Vor zwei Tagen habe ich den µController Einstieg gewagt und mir bei Pollin das Evulation Board gekauft. Es war schön billig, so daß ich erst mal probieren kann. Jetzt habe ich hier die ganzen Tutorials gelesen um mir einen Überblick zu verschaffen. Einfache Programme, wie z.B. das Schalten einer LED auf Knopfdruck, laufen. Jetzt möchte ich aber doch mal eine "echte" Schaltung mit Programm entwickeln.
Folgendes Projekt hab ich im Auge:
Eine Radlampe über PWM gedimmt. Nach drei Sekunden Betätigen eines Schalters soll die Lampe in der kleinsten Dimmstufe einschalten. Nach drücken des Tasters soll man in die nächst höhere Dimmstufe wechseln können. Ist die dritte Stufe erreicht (Max Stufe), soll nach Betätigen des Tasters wieder in die erste Stufe gewechselt werden.
Wenn der Taster wieder 3 Sekunden betätigt wird, schaltet man die Lampe aus.
Folgenden Quelltext habe ich mal getippt (hier nur zwei PWM Stufen, und in den Sprüngen werden zum test nur led´s getogglet):
'Tell the compiler which AVR chip we use
$regfile = "m16def.dat"
'Tell the compiler which crystal frequency was used
$crystal = 16000000 '16.00000 MHz
'Specify baud rate for serial port
$baud = 9600
'################### Ausgänge ######################################
config portd.5 = Output 'Port D5 als Ausgang konfigurieren
led1 alias portd.5
config portd.6 = output 'Port D6 als Ausgang konfigurieren
led2 alias portd.6
'################### Eingänge ######################################
config pind.2 = input 'Pin D2 als Eingang konfigurieren
taster1 alias pind.2
'################### Variablen ######################################
Dim EIN as Bit
Dim A as Integer
do 'Beginn Hauptschleife
main:
if taster1=1 then 'Wenn Taster 3s gedrückt
waitms 3000
if taster1=1 then
goto schalten
end if
end if
if EIN =1 then 'Wenn EIN
if taster1=1 then 'Und Taster gedrückt
waitms 50
if taster1=1 then
incr A 'Variable um 1 erhöhen
end if
end if
end if
if A = 2 then 'Wenn Variable = 2
A = 0 'Variable wieder auf 0
end if
if EIN =1 then 'Wenn EIN
if A = 0 then ' UND A=0
goto PWM1 ' Gehe zu PWM1
end if
end if
if EIN =1 then 'Wenn EIN
if A=1 then ' UND A=1
goto PWM2 'Gehe zu PWM2
end if
end if
if EIN =1 then
led2 = 1
end if
loop 'ENDE
schalten: 'Eischalten
toggle EIN
A = 0 'Variable auf 0
goto main
PWM1:
toggle led1
goto main
PWM2:
toggle led2
goto main
Leider läuft es nicht so wie geplant, vielleicht kann mir ja hier jemand einen Tipp geben.
Ich wäre euch sehr dankbar!
Gruß
Daniel
als erstes möchte ich mich mal eben Vorstellen.
Mein Name ist Daniel. 26J, Energieelektroniker und auf dem Weg zum staatl. gepr. Elektrotechniker.
Programmierkentnisse: SPS- und Delphiprogrammierung. Beides nicht perfekt , aber man lernt ja immer dazu O:)
Vor zwei Tagen habe ich den µController Einstieg gewagt und mir bei Pollin das Evulation Board gekauft. Es war schön billig, so daß ich erst mal probieren kann. Jetzt habe ich hier die ganzen Tutorials gelesen um mir einen Überblick zu verschaffen. Einfache Programme, wie z.B. das Schalten einer LED auf Knopfdruck, laufen. Jetzt möchte ich aber doch mal eine "echte" Schaltung mit Programm entwickeln.
Folgendes Projekt hab ich im Auge:
Eine Radlampe über PWM gedimmt. Nach drei Sekunden Betätigen eines Schalters soll die Lampe in der kleinsten Dimmstufe einschalten. Nach drücken des Tasters soll man in die nächst höhere Dimmstufe wechseln können. Ist die dritte Stufe erreicht (Max Stufe), soll nach Betätigen des Tasters wieder in die erste Stufe gewechselt werden.
Wenn der Taster wieder 3 Sekunden betätigt wird, schaltet man die Lampe aus.
Folgenden Quelltext habe ich mal getippt (hier nur zwei PWM Stufen, und in den Sprüngen werden zum test nur led´s getogglet):
'Tell the compiler which AVR chip we use
$regfile = "m16def.dat"
'Tell the compiler which crystal frequency was used
$crystal = 16000000 '16.00000 MHz
'Specify baud rate for serial port
$baud = 9600
'################### Ausgänge ######################################
config portd.5 = Output 'Port D5 als Ausgang konfigurieren
led1 alias portd.5
config portd.6 = output 'Port D6 als Ausgang konfigurieren
led2 alias portd.6
'################### Eingänge ######################################
config pind.2 = input 'Pin D2 als Eingang konfigurieren
taster1 alias pind.2
'################### Variablen ######################################
Dim EIN as Bit
Dim A as Integer
do 'Beginn Hauptschleife
main:
if taster1=1 then 'Wenn Taster 3s gedrückt
waitms 3000
if taster1=1 then
goto schalten
end if
end if
if EIN =1 then 'Wenn EIN
if taster1=1 then 'Und Taster gedrückt
waitms 50
if taster1=1 then
incr A 'Variable um 1 erhöhen
end if
end if
end if
if A = 2 then 'Wenn Variable = 2
A = 0 'Variable wieder auf 0
end if
if EIN =1 then 'Wenn EIN
if A = 0 then ' UND A=0
goto PWM1 ' Gehe zu PWM1
end if
end if
if EIN =1 then 'Wenn EIN
if A=1 then ' UND A=1
goto PWM2 'Gehe zu PWM2
end if
end if
if EIN =1 then
led2 = 1
end if
loop 'ENDE
schalten: 'Eischalten
toggle EIN
A = 0 'Variable auf 0
goto main
PWM1:
toggle led1
goto main
PWM2:
toggle led2
goto main
Leider läuft es nicht so wie geplant, vielleicht kann mir ja hier jemand einen Tipp geben.
Ich wäre euch sehr dankbar!
Gruß
Daniel