Hallo, obwohl hier Bascom nicht den besten Ruf hat hoffe ich doch mal auf einen Tip. Ich verwende einen ATTiny13. Ein Kontakt soll einen Interrupt (an pin5 entspr. PBO) auslösen, dann soll LED im 0,5s Takt blinken. Der Kontakt schließt nach Masse. Meine LED blinkt aber dauernd,ohne, daß die Taste gedrückt wird. Was ist falsch ? Folgendes Script: $regfile = "attiny13.dat" $crystal = 1000000 Config Portb.4 = Output ' hier ist die LED dran Config Int0 = Falling 'hier ist der "Schaltkontakt" dran, also pin5 On Int0 Int0set Enable Interrupts Enable Int0 Do Loop Int0set: Toggle Portb.4 Waitms 500 Return Vielen Dank vorweg Maxx
Hallo, versuch mal das hier. Das ist ein klein bischen sinnvoller um nen Interrupt zuüben als deine Aufgabenstellung. $regfile = "attiny13.dat" $crystal = 1000000 set portb.5 'Pull-Up aktivieren Config Portb.4 = Output ' hier ist die LED dran Config Int0 = Falling 'hier ist der "Schaltkontakt" dran, also pin5 On Int0 Int0set Enable Interrupts Enable Int0 Do Loop Int0set: set Portb.4 'Led gegen GND! Waitms 100 Return
Ups so natürlich Int0set: set Portb.4 'Led gegen GND! Waitms 100 reset Portb.4 Return
Hallo nochmals, danke für die schnelle Antwort! Es hat sich aber nicht viel getan, d.h. die LED leuchtet dauernd und ist auch mit PB0 (pin5) nach Masse legen nicht schaltbar. Ich habe einen externen Pullup immer an PB5 dran. Mit "set " und dann mit "reset" hatte ich schon versucht--brachte aber auch keinen Erfolg. Woran könnte es denn noch liegen ? Gruß Maxx
> Woran könnte es denn noch liegen ? Falsches Konzept... - Taster gehören nicht an den Interrupt (Sonderfall: Wecken aus Power- Down-Sleep) - Taster prellen und müssen entprellt werden - Warteschleifen im Interrupt sind tödlich Vorschlag: - Taster einlesen und entprellen (Debounce) - Wurde Taster betätigt, dann ein Flag setzen - Wurde zweiter Taster betätigt, dann das Flag löschen (ein Flag ist eine Bitvariable, auch Merker oder Boolean genannt) - In Mainloop Flag abfragen, ist es gesetzt, dann - LED-Portpin toggeln - Wartezeit aufrufen Später, wenn das verstanden ist, die Zeitbasis mittels Timer-Interrupt erzeugen. Das ist besser, da der Controller dann während des Blinkens noch andere Dinge tun kann. Ich hänge mal ein Programm für Tiny13 an, in dem unter Anderem auch Taster abgefragt werden und LEDs blinken. ;-) ...
Hallo, ich danke für die Tips. Das Programm ist nat. ein ganz schöner "Brocken". Ich bemühe mich alles zu verstehen ansonsten melde ich mich nochmal. Gruß Maxx
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.