Hi @ all,
Die Tage hatte ich mal wieder etwas Zeit gefunden und ich habe an meiner RC5 Fernbedienung weitergebastelt. Den Code habe ich mit Bascom geschrieben, als µC nehme ich den ATTiny 2313 intern getaktet mit 4 MHz. Die Schaltung funktioniert soweit auf meinem Versuchsboard, d. h. beim Drücken eines Tasters wird der entsprechende RC5 Code gesendet, auswerten kann und überprüfen kann ich das mit einer anderen Schaltung, die ich mir vorher schon aufgebaut habe. Einen RC5 Tester mit LCD Anzeige, das die Geräteadresse sowie den Befehl anzeigt. Drücke ich eine Taste, so wird gesendet, die Kontroll-LED (an PB.0) geht für diese Zeit an. Parallel wird an PB.3 (OC1) die IR-LED geschaltet, zur Zeit noch als normale LED ausgeführt (IR sieht man so schlecht mit bloßem Auge) Diese LED bleibt dann aber an und geht nicht mehr aus. Die Fusebits scheinen richtig gesetzt zu sein, sonst würde ja die Kontroll-LED ebenfalls spinnen.
Gruß Michael
Hier mal das Bascom-Programm:
'***********************************************
'Schaltung :Fernbedienung *
'Compiler : BASCOM-AVR *
'Hardware : IR-LED an PB.3 (OC1) *
' Kontroll-LED an PB.0 *
'Last update : 08.11.2008 *
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 4000000
$lib "mcsbyte.lbx"
$framesize = 32
$swstack = 10
$hwstack = 40
Ddrd = &B00000000 'alle PortD Pins auf Eingang definieren
Portd = &B11111111 'alle PortD Pins auf High setzen
Config Pinb.0 = Output 'Kontroll-LED
Config Pinb.3 = Output 'IR-LED
Dim Togbit1 As Byte 'Variablenname und Typ festlegen
Dim Togbit2 As Byte
Dim Command As Byte 'Kommando - Funktion
Dim Address As Byte 'Geräteadresse
Togbit1 = 0 '0 or 32 zum Setzen des Toggle-Bits
Togbit2 = 32 '0 or 32 zum Setzen des Toggle-Bits
Address = 5 'Adresse für Videorecorder
Do 'Beginn Schleife
If Pind.0 = 0 Then 'Wenn Taste 1 gedrückt --> Empfänger 1 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 1 'sende RC5-Signal
Rc5send Togbit2 , Address , 1 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.1 = 0 Then 'Wenn Taste 2 gedrückt --> Empfänger 2 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 2 'sende RC5-Signal
Rc5send Togbit2 , Address , 2 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.2 = 0 Then 'Wenn Taste 3 gedrückt --> Empfänger 3 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 3 'sende RC5-Signal
Rc5send Togbit2 , Address , 3 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.3 = 0 Then 'Wenn Taste 4 gedrückt --> Empfänger 4 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 4 'sende RC5-Signal
Rc5send Togbit2 , Address , 4 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.4 = 0 Then 'Wenn Taste 5 gedrückt --> Empfänger 5 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 5 'sende RC5-Signal
Rc5send Togbit2 , Address , 5 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
Loop 'zum Beginn der Schleife
End
Die Tage hatte ich mal wieder etwas Zeit gefunden und ich habe an meiner RC5 Fernbedienung weitergebastelt. Den Code habe ich mit Bascom geschrieben, als µC nehme ich den ATTiny 2313 intern getaktet mit 4 MHz. Die Schaltung funktioniert soweit auf meinem Versuchsboard, d. h. beim Drücken eines Tasters wird der entsprechende RC5 Code gesendet, auswerten kann und überprüfen kann ich das mit einer anderen Schaltung, die ich mir vorher schon aufgebaut habe. Einen RC5 Tester mit LCD Anzeige, das die Geräteadresse sowie den Befehl anzeigt. Drücke ich eine Taste, so wird gesendet, die Kontroll-LED (an PB.0) geht für diese Zeit an. Parallel wird an PB.3 (OC1) die IR-LED geschaltet, zur Zeit noch als normale LED ausgeführt (IR sieht man so schlecht mit bloßem Auge) Diese LED bleibt dann aber an und geht nicht mehr aus. Die Fusebits scheinen richtig gesetzt zu sein, sonst würde ja die Kontroll-LED ebenfalls spinnen.
Gruß Michael
Hier mal das Bascom-Programm:
'***********************************************
'Schaltung :Fernbedienung *
'Compiler : BASCOM-AVR *
'Hardware : IR-LED an PB.3 (OC1) *
' Kontroll-LED an PB.0 *
'Last update : 08.11.2008 *
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 4000000
$lib "mcsbyte.lbx"
$framesize = 32
$swstack = 10
$hwstack = 40
Ddrd = &B00000000 'alle PortD Pins auf Eingang definieren
Portd = &B11111111 'alle PortD Pins auf High setzen
Config Pinb.0 = Output 'Kontroll-LED
Config Pinb.3 = Output 'IR-LED
Dim Togbit1 As Byte 'Variablenname und Typ festlegen
Dim Togbit2 As Byte
Dim Command As Byte 'Kommando - Funktion
Dim Address As Byte 'Geräteadresse
Togbit1 = 0 '0 or 32 zum Setzen des Toggle-Bits
Togbit2 = 32 '0 or 32 zum Setzen des Toggle-Bits
Address = 5 'Adresse für Videorecorder
Do 'Beginn Schleife
If Pind.0 = 0 Then 'Wenn Taste 1 gedrückt --> Empfänger 1 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 1 'sende RC5-Signal
Rc5send Togbit2 , Address , 1 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.1 = 0 Then 'Wenn Taste 2 gedrückt --> Empfänger 2 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 2 'sende RC5-Signal
Rc5send Togbit2 , Address , 2 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.2 = 0 Then 'Wenn Taste 3 gedrückt --> Empfänger 3 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 3 'sende RC5-Signal
Rc5send Togbit2 , Address , 3 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.3 = 0 Then 'Wenn Taste 4 gedrückt --> Empfänger 4 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 4 'sende RC5-Signal
Rc5send Togbit2 , Address , 4 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
If Pind.4 = 0 Then 'Wenn Taste 5 gedrückt --> Empfänger 5 AN / AUS
Set Portb.0 'Kontroll-Led an
Set Portb.3 'IR LED an
Waitms 500 'warte 500 Millisekunden
Rc5send Togbit1 , Address , 5 'sende RC5-Signal
Rc5send Togbit2 , Address , 5 'sende RC5-Signal
Reset Portb.0 'Kontroll-Led aus
Reset Portb.3 'IR LED aus
End If
Loop 'zum Beginn der Schleife
End