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:

Code:
$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

Code:
$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<