Wenn der PinB.4 beim Start 1 ist, dann ist Rc beim ersten Durchlauf noch 0 (so schnell ist der Timer nicht), damit wird PortB.0 auf 0 gesetzt und das war's dann, denn auf 1 geht er laut Deinem Code nicht mehr.If Rc = 0 Then Portb.0 = 0 schreibe, dann geht Portb.0 auf low. Also kommt aus den Timer nicht mal 1 oder 2 raus
Probier mal folgendes:
Code:$regfile = "attiny12.dat" ' Controller = ATtiny12 $crystal = 1200000 ' Takt 1MHz $noramclear ' RAM nicht initialisieren $tiny ' Stack nicht initialisieren '$hwstack = 32 ' Stackinitialisierung wird durch $TINY unterdrückt $swstack = 0 ' Software 0 $framesize = 0 ' Framesize = 0 '################################################################################################################################# '# '# Hardware initialisieren '# '################################################################################################################################# Config Timer0 = Timer , Prescale = 64 ' 1,5mS x (1200000Hz / 64) = Schwellwert 28 Config Portb.0 = Output Config Pinb.4 = Input Portb.0 = 1 '################################################################################################################################# '# '# Variablen '# '################################################################################################################################# Dim Rc As Iram Byte ' Variablen als IRAM definieren '################################################################################################################################# '# '# Hauptprogramm '# '################################################################################################################################# Do 'Geberweg des Senders Minimum = 65 / Maximum = 110 / Mitte = 87 If Pinb.4 = 0 Then Bitwait Pinb.4 , Set 'Auf positive Flanke warten Timer0 = 1 'Zaehler starten Bitwait Pinb.4 , Reset 'Auf negative Flanke warten Rc = Timer0 End If If Rc > 20 Then Portb.0 = 0 Else Portb.0 = 1 End If Loop







Zitieren

Lesezeichen