Phil Connors
09.10.2006, 20:21
Hallo
Ich beschäftige mich seit ein paar Tagen mit µControllern und hatte auch noch ein paar Attiny2313 zum Spielen rumliegen.
Vorweg:
Das Thema Microcontroller ist für Anfänger wirklich nicht sehr leicht nachvollziehbar, trotz diverser Tutorial-Versuchen hier im Board oder bei mikrokontroller.net und an vielen Stellen wo man glaubt einen Einstieg gefunden zu haben, endet es leider in einem Codeschnipsel und man ist verwirrter als vorher. Allein die drei Programmiersprachen tuen ihr übriges...
Zum Problem:
Ich habe an einen Attiny2313 an Port D2 ( ist der als Eingang überhaupt geeignet?) einen Taster über einen 10K Widerstand an VCC und an GND angeschlossen und an den Ports B1,2,3 jeweils eine LED über Vorwiderstand an VCC.
Ich möchte:
Mit dem Taster Led1 anschalten, wenn die Tastendrucklänge < 100 ist und diese sollte angeschaltet bleiben, bis zum nächsten Tastendruck (egal ob kurz oder lang)
Ist der Tastendruck > 100 sollen Led1 und Led3 eingeschaltet werden und ebenfalls eingeschaltet bleiben, bis zum nächsten Tastendruck.
Tja ich habe bislang ausprobiert:
$regfile = "attiny2313.dat"
$crystal = 4000000
Config Pind.2 = Input 'Taster Eingang
Config Portb.1 = Output 'Led1 aus
Config Portb.2 = Output 'Led2 aus
Config Portb.3 = Output 'Led3 aus
Taster Alias Pind.2 'Taster def.
Led1 Alias Portb.1 'Led 1 def.
Led2 Alias Portb.2 'Led 2 def.
Led3 Alias Portb.3 'Led 3 def.
Led1 = 1
Led2 = 1
Led3 = 1
Declare Sub Stelle1 'Status1
Declare Sub Stelle2 'Status2
Debounce Taster , 0 , Stelle1 , Sub
Do
Stelle1: 'Hauptschleife
If Taster = 0 Then Led1 = 0 Else Led1 = 1
If Taster = 1 Then Return Else Gosub Stelle2
Stelle2:
Waitms 80
If Taster = 0 And Led1 = 0 Then Led3 = 0 Else Led3 = 1
Loop
Schaltet die LED's eigenlich so, wie ich möchte, nur bleiben diese nicht eingeschaltet...
Mein neuer Ansatz, klappt irgendwie noch gar nicht :(
$regfile = "attiny2313.dat"
$crystal = 4000000
Config Pind.2 = Input 'Taster Eingang
Config Portb.1 = Output 'Led1 aus
Config Portb.2 = Output 'Led2 aus
Config Portb.3 = Output 'Led3 aus
Taster Alias Pind.2 'Taster def.
Led1 Alias Portb.1 'Led 1 def.
Led2 Alias Portb.2 'Led 2 def.
Led3 Alias Portb.3 'Led 3 def.
Led1 = 1
Led2 = 1
Led3 = 1
Dim Tastendrucklaenge As Word
Do
Pulsein Tastendrucklaenge , Pind , 2 , 0
If Tastendrucklaenge > 20 And Tastendrucklaenge < 100 Then Toggle Led1
If Tastendrucklaenge > 150 Then Led3 = 0 Else Led3 = 1
Loop
Ich hoffe, mir kann jemand von Euch Experten dabei behilflich sein [-o<
Ich beschäftige mich seit ein paar Tagen mit µControllern und hatte auch noch ein paar Attiny2313 zum Spielen rumliegen.
Vorweg:
Das Thema Microcontroller ist für Anfänger wirklich nicht sehr leicht nachvollziehbar, trotz diverser Tutorial-Versuchen hier im Board oder bei mikrokontroller.net und an vielen Stellen wo man glaubt einen Einstieg gefunden zu haben, endet es leider in einem Codeschnipsel und man ist verwirrter als vorher. Allein die drei Programmiersprachen tuen ihr übriges...
Zum Problem:
Ich habe an einen Attiny2313 an Port D2 ( ist der als Eingang überhaupt geeignet?) einen Taster über einen 10K Widerstand an VCC und an GND angeschlossen und an den Ports B1,2,3 jeweils eine LED über Vorwiderstand an VCC.
Ich möchte:
Mit dem Taster Led1 anschalten, wenn die Tastendrucklänge < 100 ist und diese sollte angeschaltet bleiben, bis zum nächsten Tastendruck (egal ob kurz oder lang)
Ist der Tastendruck > 100 sollen Led1 und Led3 eingeschaltet werden und ebenfalls eingeschaltet bleiben, bis zum nächsten Tastendruck.
Tja ich habe bislang ausprobiert:
$regfile = "attiny2313.dat"
$crystal = 4000000
Config Pind.2 = Input 'Taster Eingang
Config Portb.1 = Output 'Led1 aus
Config Portb.2 = Output 'Led2 aus
Config Portb.3 = Output 'Led3 aus
Taster Alias Pind.2 'Taster def.
Led1 Alias Portb.1 'Led 1 def.
Led2 Alias Portb.2 'Led 2 def.
Led3 Alias Portb.3 'Led 3 def.
Led1 = 1
Led2 = 1
Led3 = 1
Declare Sub Stelle1 'Status1
Declare Sub Stelle2 'Status2
Debounce Taster , 0 , Stelle1 , Sub
Do
Stelle1: 'Hauptschleife
If Taster = 0 Then Led1 = 0 Else Led1 = 1
If Taster = 1 Then Return Else Gosub Stelle2
Stelle2:
Waitms 80
If Taster = 0 And Led1 = 0 Then Led3 = 0 Else Led3 = 1
Loop
Schaltet die LED's eigenlich so, wie ich möchte, nur bleiben diese nicht eingeschaltet...
Mein neuer Ansatz, klappt irgendwie noch gar nicht :(
$regfile = "attiny2313.dat"
$crystal = 4000000
Config Pind.2 = Input 'Taster Eingang
Config Portb.1 = Output 'Led1 aus
Config Portb.2 = Output 'Led2 aus
Config Portb.3 = Output 'Led3 aus
Taster Alias Pind.2 'Taster def.
Led1 Alias Portb.1 'Led 1 def.
Led2 Alias Portb.2 'Led 2 def.
Led3 Alias Portb.3 'Led 3 def.
Led1 = 1
Led2 = 1
Led3 = 1
Dim Tastendrucklaenge As Word
Do
Pulsein Tastendrucklaenge , Pind , 2 , 0
If Tastendrucklaenge > 20 And Tastendrucklaenge < 100 Then Toggle Led1
If Tastendrucklaenge > 150 Then Led3 = 0 Else Led3 = 1
Loop
Ich hoffe, mir kann jemand von Euch Experten dabei behilflich sein [-o<