-
Hallo Lenox,
Ganz so einfach ist es mit RC5 nicht, wenn Du den Timer mit 36 kHz laufen hast und z.B. eine Logische 1 senden willst, mußt Du 32 Überläufe die Led senden lassen, dann 32 Überläufe nicht senden lassen, bei einer 0 ist es andersherum, das ganze mal 14 Bit .
Ich könnte Dir ein Codeschnipsel zukommenlassen ist aber in Assembler.
Sleepmodus am besten Powerdown und den Taster an Extint anschliessen.
Gruß Sebastian
-
Achso, oky hab ich jetzt verstanden, aber ich glaub das bekomm ich noch nicht hin.
Dafür hab ich einfach noch zuwenig Programmiererfahrung.
Ich denke mal die Subroutien müsste in etwa so aussehen (für 1 Bit)
If Schalter = 1
If I < 33
Portb.0 = 1
End if
If I >32 AND I < 65
Portb.0 = 0
End If
I = I +1
End If
-
So könnte man es machen, denke ich, jetzt nur noch alles mit 14 bits und gut ist...
Gruß Sebastian
-
Oky dann lasst uns doch mal den Code zusammenbasteln!
Code:
$regfile = "Attiny13.dat" ' the used chip
$crystal = 9600000
Config Portb.0 = Output 'LED
Config Portb.4 = Input 'Schalter gegen GND
Portb.4 = 1 'Pullup
Schalter Alias Portb.4
Config Timer0 = Timer , Prescale = 8
On Timer0 Timer_irq
Const Timervorgabe = 256 - 33
Enable Timer0
Enable Interrupts
Dim I As Byte
Do
Loop
Timer_irq:
If Schalter = 1
If I < 33 Then
Portb.0 = 1
End If
If I > 32 And I < 65 Then
Portb.0 = 0
End If
If I = 64 Then
I = 0
Else
I = I + 1
End If
End If
Return
Ist noch ein Fehler bei der Varibale I drin "Out of space?!"
Was fehlt hier sonst noch? ;)
-
Gute Frage was noch fehlt, meiner Meinung nach sieht es gut aus, ich weiß nicht wo die Variable out of space ist 8-[ sorry, wenn Du nicht weiter kommst kannst Du mein Asmprogramm haben, aber schau mal, das kriegst Du schon hin ...
Gruß Sebastian
-
Vielleicht wäre es doch ganz praktisch wenn du mir den Asm Code posten könntest, ich muss auch noch den ganzen RGB Kram fertig bekommen.
Dafür brauch ich PonyProg oder? (Asm)
-
-
Soo ich habs jetzt raus (ersten 3 Bits).
Aber ich habe schon 43% belegt, leider fällt mir keine Methode mit Schleife ein!
Code:
$regfile = "ATtiny13.dat"
$crystal = 9600000
$hwstack = 32
$swstack = 8
$framesize = 16
Config Portb.0 = Output 'LED
Config Portb.4 = Input 'Schalter gegen GND
Portb.4 = 1 'Pullup
Schalter Alias Portb.4
Config Timer0 = Timer , Prescale = 8
On Timer0 Timer_irq
Const Timervorgabe = 256 - 33
Enable Timer0
Enable Interrupts
Dim I As Byte
I = 0
Do
Loop
Timer_irq:
If I < 33 Then '1
Portb.0 = 1
End If
If I > 32 And I < 65 Then
Portb.0 = 0
End If
If I > 64 And I < 97 Then '2
Portb.0 = 1
End If
If I > 96 And I < 129 Then
Portb.0 = 1
End If
If I > 128 And I < 161 Then '3
Portb.0 = 1
End If
If I > 160 And I < 193 Then
Portb.0 = 1
End If
Return
PS: irgentwo ist da noch ein Fehler drin, die IR Led blink viel zu langsam.