Bist Du Dir da sicher bzw. woran machst Du das fest?Zitat:
Es muss am Timer liegen, denn der hat immer
den Wert 0
Druckbare Version
Bist Du Dir da sicher bzw. woran machst Du das fest?Zitat:
Es muss am Timer liegen, denn der hat immer
den Wert 0
Ich habe die Version 1.11.9.5
Ich habe den gleichen Satz ja schon auf einem Attiny24 laufen und da gehts
top. Darum verstehe ich das auch nicht.
Ja und den 100nF hab ich drin.
Das mit der LED hab ich schon versucht, das geht. Also laufen tut er.
Und woran ich festmachen, dass der Timer 0 zurückgibt, wenn ich
schreibe, dann geht Portb.0 auf low.Code:If Rc = 0 Then Portb.0 = 0
Also kommt aus den Timer nicht mal 1 oder 2 raus :-(
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.Zitat:
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
Leider ändert das nichts :-(
Ich muss immer noch Rc = 0 setzen, damit die LED angeht
Ich verstehe das nicht mehr. In meinem Attiny24 läufts superCode:If Rc = 0 Then
Portb.0 = 0
Else
Portb.0 = 1
End If
Mit 1.11.9.5 compiliert, im AVR Studio getestet und im Maschinencode schrittweise durchgegangen, der Code arbeitet einwandfrei.
Prüf, ob die Portpins wie gewünscht arbeiten:
und teste den Timer:Code:Do
If Pinb.4 = 0 Then
Portb.0 = 0
Else
Portb.0 = 1
End If
Loop
Mit Prescaler 64 muss eine angeschlossene Led dunkler leuchten. Für ein erkennbares Blinken den Prescaler auf 1024 erhöhen, dann sollte ein Blinken mit 4,5Hz zu erkennen sein.Code:Do
If Timer0 > 128 Then
Portb.0 = 0
Else
Portb.0 = 1
End If
Loop
Ausgang der Fernsteuerung korrekt mit Pin 3 des Tiny12 verbunden und positiver Impuls vorhanden ? Evtl. anderen Eingangspin nehmen.