Hallo
Ich brauche mal wieder eure Hilfe:
Ich will, dass ich die Abstände, in denen das Interrupt ausgeführt wird, ändern kann.
Das Problem ist jetzt, dass wenn ich den Taster langsam und regelmäßig drücke, der Wert auch erhöht wird, wie ich im Terminal gut sehen kann. Manchmal passiert es aber, dass der Wert plötzlich wieder bei 0 ist, oder krummer Werte wie 1045 kriegt, was eigentlich nicht sein kann. Hat jemand ne Idee?
Mfg und Danke fürs ansehenCode:$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 100 $swstack = 100 $framesize = 100 'LEDs konfigurieren Config Pind.5 = Output Led1 Alias Portd.5 Config Pind.6 = Output Led2 Alias Portd.6 'Taster konfigurieren Config Pind.2 = Input Config Pind.3 = Input Taster1 Alias Portd.2 Taster2 Alias Portd.3 'Pieper Config Pind.7 = Output 'Timer einstellen Config Timer1 = Timer , Prescale = 1024 On Timer1 Timer_irq Timer1 = 30000 Enable Timer1 Enable Interrupts 'Variablen Dim Tempo As Word '####################### 'Hauptprogramm # '####################### Do 'schalter entprellen Debounce Pind.2 , 1 , Langsammer , Sub Debounce Pind.3 , 1 , Schneller , Sub Loop End 'Interruptroutine Timer_irq: Timer1 = Tempo Print "Piep" Print Tempo Toggle Led1 Portd.7 = 1 Portd.7 = 0 Return 'entprell routinen Schneller: Tempo = Tempo + 1000 Return Langsammer: Tempo = Tempo - 1000 Return







Zitieren
Lesezeichen