'--------------------------------------------------------------------------
' Tastensimulation fuer Funkfernbedienung ATtiny13.bas
' 2015 ,OE3FHA Hubert
'--------------------------------------------------------------------------
'Diese Tastensimulation mit ATtiny13 ermöglicht es mittels einer Schaltuhr,
' eine Taste einer Pollin Funkfernbedienung ein- und wieder auszuschalten.
' Da zwei Pin am HX2262-Chip der Fernbedienung gleichzeitig gegen Masse
' gezogen werden müssen und eine Pegelanpassung an die 12V des HX2262 notwendig
' ist muss eine Ansteuerung mittels Transistor-Matrix durchgeführt werden.
' Die Eingabe der Schaltzeiten für Port 0 erfolgt über die Zeitschaltuhr,
' auch hier ist eine Pegelanpassung mittels NPN-Transistor der Schaltuhr
' (1,5V zu Attiny13) notwendig, in meinem Fall low=ein high=aus.
'--------------------------------------------------------------------------
' Fuse Bits: Nur SUT0 hat Haken im PonnyProg
$regfile = "attiny13.dat" 'verwendeter Prozessor
$crystal = 128000 'Takt 128000 Hz
$hwstack = 15 'Stack-Reservierung im SRAM
$swstack = 15
$framesize = 15
' Strom reduzieren was geht, häng ja schließlich wochenlang an Mignon-Zellen.
' 1. Disable/Switch off, AD Converter
' 2. Disable/Switch off, Analog Comparator
' Strom ist jetzt bei 128kHz ~180µA, das würde bei standard Mignon ~3000mA/h
' für 2 Jahre Dauerbetrieb reichen
Stop Watchdog
Stop Adc 'Switch off ADC
Stop Ac 'Switch off the power to the Analog Comparator
Reset Acsr. Acbg 'Disable Analog Comparator Bandgap Select
Ddrb = &B0000_1110 'konf Port's B auf 0=Eingabe 1=Ausgabe
Portb = &B0000_0000 'setze Port's B auf 0
Pinb = &B0001_0001 'setze Pullup von Port 0&4 auf high
'Routine zum sicheren Ausschalten der Funksteckdosen nach Inbetriebnahme (Stromausfall)
Portb.3 = 1 'Spannungswandler fuer Sender ist ON am Pin 2
Portb.1 = 0 'Taste ON Kanal A ist OFF
Waitms 100
Portb.2 = 1 'Taste OFF von Kanal A, (ist ON)
Wait 1
Portb.2 = 0 'Taste OFF von Kanal A, (ist OFF)
Portb.3 = 0 'Spannungswandler fuer Sender ist OFF
'*********************************************************************************
Mainon: 'Hauptroutine
Do 'Warteschleife
If Pinb.0 = 0 Then Goto Switchon 'Wenn Eingabe Low dann gehe zu 'Switchon'
If Pinb.4 = 0 Then Gosub Power12v 'Wenn Eingabe Low dann gehe zu 'Power12v'
Loop
'Routine zum Einschalten der Funksteckdosen
Switchon: 'Einschaltroutine
Portb.3 = 1 'Spannungswandler fuer Sender ist ON
Portb.2 = 0 'Taste OFF Kanal A ist OFF
Waitms 100
Portb.1 = 1 'Taste ON von Kanal A, (ist ON)
Wait 1
Portb.1 = 0 'Taste ON von Kanal A, (ist OFF)
Portb.3 = 0 'Spannungswandler 12V fuer Sender ist OFF
Mainoff:
Do 'Warteschleife
If Pinb.0 = 1 Then Goto Switchoff 'Wenn Eingabe High dann gehe zu 'Switchoff'
If Pinb.4 = 0 Then Gosub Power12v 'Wenn Eingabe Low dann gehe zu 'Power12v'
Loop
'Routine zum Ausschalten der Funksteckdosen
Switchoff: 'Ausschaltroutine
Portb.3 = 1 'Spannungswandler 12V fuer Sender ist ON
Portb.1 = 0 'Taste ON Kanal A ist OFF
Waitms 100
Portb.2 = 1 'Taste OFF von Kanal A, (ist ON)
Wait 1
Portb.2 = 0 'Taste OFF von Kanal A, (ist OFF)
Portb.3 = 0 'Spannungswandler 12V fuer Sender ist OFF
Goto Mainon
'Routine um 12V an die Fernbedienung bei Tastendruck anzulegen
Power12v: 'Hilfsroutiner für Tasten der Fernbedienung
Portb.3 = 1 'Spannungswandler 12V fuer Sender ist ON
Do 'Warteschleife
Debounce Pinb.4 , 1 , Retour 'Wenn Eingabe High dann gehe zu 'Retour'
Loop
Retour: 'Hilfsroutine für Programmrückkehr
Portb.3 = 0 'Spannungswandler 12V fuer Sender ist OFF
Return