PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tasterbetätigung



yoyoba
19.04.2009, 13:40
Guten Tag,

vorweg, ich bin ein totaler neueinsteiger in Sachen AVR-Programmierung, ich habe mir das AVR-Avaluationboard bei Pollin bestellt, nun habe ich bereits die 2 LED's zum abwechselnden blinken gebracht und das die LED's leuchten solange der Taster betätigt wird (alles noch auf dem Simulationsboard), ich habe das mit einer "if-funktion" realisiert, nun meine Frage, wie kann ich dort eine Art Selbsthaltung einbauen, sodass wenn ich den Taster einmal betätige die LED's anbleiben und sobald ich ihn nocheinmal drücke wieder ausgehen? Programmieren tue ich mit Bascom!

Danke im vorraus :)

MfG yoyoba

Dirk
19.04.2009, 14:51
Sieh dir in der Bascom-Hilfe mal den Befehl "Toggle" an.
Hilft das?

Gruß Dirk

yoyoba
19.04.2009, 15:34
mh, dort sehe ich nur, dass es diesen Befehl gibt aber wie bzw wo ich ihn einsetze, darüber kann ich nichts finden :(

MfG yoyoba

Lync
19.04.2009, 16:23
In der Form
Toggle LED ändert den wert von 0 auf 1 bzw umgekehrt.

yoyoba
19.04.2009, 16:57
ok, dankeschön :)

Dirk
19.04.2009, 19:12
... dort sehe ich nur, dass es diesen Befehl gibt aber wie bzw wo ich ihn einsetze, darüber kann ich nichts finden
Wie bei (fast) jedem Bascom-Befehl auch, ist bei "Toggle" ein kurzes Beispielprogramm angegeben.

Gruß Dirk

yoyoba
19.04.2009, 21:28
also bei mir siehts so aus und es funktioniert immernoch nicht, die led geht beim loslassen des Tasters sofort wieder aus, wobei sie doch anbleiben soll bis der Taster erneut gedrückt wird :(


$regfile = "m8def.dat"
$crystal = 12000000

Config Pinb.1 = Input
Config Portd.5 = Output
Config Portd.6 = Output


Do

If Pinb.1 = 1 Then
Toggle Portd.5
End If

Loop

Dirk
19.04.2009, 21:46
die led geht beim loslassen des Tasters sofort wieder aus
Das könnte am Prellen des Tasters liegen.
Sieh dir in der Bascom-Hilfe mal den Befehl "Debounce" an.

Gruß Dirk

yoyoba
19.04.2009, 21:49
wo denn da? :( wenn ich die suchfunktion von firefox benutze und debounce eingebe sehe ich nur, dass es die funktion gibt, wie ich sie anwende oder sonstiges, finde ich nicht, wo steht denn das ? :(


mfg

Dirk
19.04.2009, 21:52
wo steht denn das ?
Bascom-IDE:
Help -> Index -> BASCOM Language Reference

for_ro
19.04.2009, 23:31
die led geht beim loslassen des Tasters sofort wieder aus
Das könnte am Prellen des Tasters liegen.
Sieh dir in der Bascom-Hilfe mal den Befehl "Debounce" an.

Gruß Dirk
Sein µC braucht etwa 1,5µs (!) für einen Schleifen Durchlauf.
Ob mit oder ohne Prellen wird der wohl ein paar mal togglen, bevor er loslässt.

Gruß

Rolf

stefan_Z
20.04.2009, 01:00
Also du solltest dir einige Dinge mal ansehen/durchlesen:
1 - Bascom-Hilfe (Das Fragezeichen im Programm oder online beim Hersteller) Ist englisch, aber da musst du durch!
2 - Ein paar einfache Beispielprogramme hier in der Roboternetz-Codesammlung.
3 - Das Beispiel von der Pollin-Homepage: http://www.pollin.de/shop/downloads/D810038S.ZIP
Da werden alle wichtigen Funktionen benutzt und erklärt. Benutzt wird ein Mega16, aber das kann man auch für andere µC umschreiben.

Lync
20.04.2009, 12:40
kannst auch ein einfach ein waitms einbauen.. z.b. waitms 100
dann wird der Zustand des Tasters nicht sooft abgefragt.

omega1951
20.04.2009, 13:19
Hallo alle miteinander,ich hätte auch noch einen Lösungsvorschlag,der
bei mir wunderbar funktioniert.


[$regfile = "m8def.dat"
$framesize = 52
$swstack = 62
$hwstack = 72
$crystal = 8000000
Config Portc.0 = Output
Config Pinb.0 = Input
Portb.0 = 1

Declare Sub Taste1

Do
Debounce Pinb.0 , 1 , Taste1 , Sub 'Tastenentprellen
Loop

Sub Taste1
Portc.0 = Not Portc.0 'geht auch mit mehreren Ports
End Sub]

yoyoba
21.04.2009, 14:41
woher weiß das programm, dass taster1=pinb.0 ist?

könntet ihr mir bitte einmal die Zeile "Debounce Pinb.0 , 1 , Taste1 , Sub" genauer erklären?

mfg

omega1951
23.04.2009, 15:13
Hallo yoyoba
über den Befehl config Pinb.0 = Input weiß das Programm wo der Taster
angeschlossen ist. Debounce ist der Befehl zum Tastenentprellen
an Pinb.0 (oder an jedem anderen Port) ist der Taster angeschlossen
,1 oder ,0 sagt aus ob der Taster mit High oder Low betätigt wird.
Taste1,Sub gibt an in welche Subroutine gesprungen wird.
Gruss Dieter

yoyoba
23.04.2009, 16:30
danke, aber das programm hat nirgens einprogrammiert das es taster1 ist, könnte ich in die zeile jeden beliebigen namen für taster1 einsetzen? dann würde für mich diese stelle keinen sinn ergeben und man könnte sie weglassen....

omega1951
23.04.2009, 17:59
Hallo yoyoba,
du kannst in der Zeile jeden beliebigen Namen nehmen du musst nur
den Namen in der Subroutine wieder verwenden.
Gruss Dieter

python_rocks
23.04.2009, 22:41
wenn ich den Taster einmal betätige die LED's anbleiben und sobald ich ihn nocheinmal drücke wieder ausgehen
Hallo yoyoba!

Vielleicht kannst du mit dieser Erklärung etwas anfangen:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/taster_entprellen/
Noch besser wäre es, wenn du von vorne beginnst:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/

mfg
Gerold
:-)