Bonjour,
voici un exemple permettant de simuler du code RC5 Phillips 36 ou 38 KHz avec un ATtiny 45, l'exemple est l'adaptation d' exemple pour ATtiny2313 et estécrit en BASCOM AVR, j'ai testé ce code avec les deux microcontroleurs et ça fonctionne bien.
sur l'ATtiny 45 on utilise le Timer0 et sur le 2313 on utilise le Timer1
attention ne pas oublier de programmer le FUSIBLE FuseBit Divide clock by 8 sur OFF
[code]'-------------------------------------------------------------------------------
'Name : 36KHzKey6.bas
'By Mic-Josi 2013/02 build 1.0
'Language BASCOM AVR build 2.0.7.5 Demo Version
'purpose :générer un code RC5 36KHz by Timer0 CTC mode
'micro : ATTINY45
'suited for demo : yes
'la démo est une adaptation de la démo pour ATTiny2313 nommée rc_tx1a.bas
'qui fonctionne avec un clavier 12 touches
'
'dans cette démo pour sélectionner une chaine il faut changer la valeur de Key
'pour sélectionner un appareil il faut changer la valeur de Rc5_address
'-----------------------------------------------------------------------------------------
'Dans les fusibles il faut mettre Divide clock by 8 sur OFF
$regfile = "attiny45.dat" ' micro utilisé
$crystal = 8000000 '8 Mhz oscillateur interne
'les valeures qui suivent sont compatibles avec l'ATTiny13 (non testé)
$hwstack = 16 ' use 16 for the hardware stack
$swstack = 16 ' use 16 for the SW stack
$framesize = 16 ' use 16 for the frame space
'*******************************************************************************
Dim Key As Byte Simule L 'appuie de la touche 6 pour la chaine TV M6
Dim Rc5_bit_nr As Byte ' pour l'adresse de l'appareil ici TV
Dim Toggle_bit As Boolean ' pour la répétionde la touche
Dim Rc5_address As Byte ' pour la sélection de la chaine 6
Dim Rc5_command As Byte
Const Carrier_on = &B01000000 'IR 36kHz carrierporteuse
Const Carrier_off = &B11000000 'IR 36 KHz porteuse off
Declare Sub Logic_0 'bit 0
Declare Sub Logic_1 'bit 1
Config Timer0 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1
Timer0 = 0
'110 = 36KHz 104 = 38 KHz
Ocr0a = 110 '36 KHz carrier
Tccr0a = Carrier_off
Toggle_bit = 1 ' demande de répétition
Rc5_address = 0 'TV sélectionnée
Do
Key = 6 ' chaine M6
Waitms 1
Ddrb.0 = 1
'set OC0 (Pb.1) = sortie de la porteuse
Logic_1 '1er start bit
Logic_1 'second start bit
If Toggle_bit = 0 Then Logic_0 Else Logic_1
Rc5_command = Lookup(key , Rc5_commands) 'lecture data commande RC-5
For Rc5_bit_nr = 4 To 0 Step -1 '5 bit addresse, msb en 1er
If Rc5_address.rc5_bit_nr = 0 Then Logic_0 Else Logic_1
Next
For Rc5_bit_nr = 5 To 0 Step -1 '6 bit commande, msb en 1er
If Rc5_command.rc5_bit_nr = 0 Then Logic_0 Else Logic_1
Next
Tccr0a = Carrier_off
Waitms 87 'delay entre trame
Loop
End 'end program
Sub Logic_0
Tccr0a = Carrier_on
Waitus 883
Tccr0a = Carrier_off
Waitus 884
End Sub
Sub Logic_1
Tccr0a = Carrier_off
Waitus 883
Tccr0a = Carrier_on
Waitus 884
End Sub
Rc5_commands:
Data 1 , 2 , 3 , 0 'données pour les chaines TV
Data 4 , 5 , 6 , 0
Data 7 , 8 , 9 , 0
Data 10 , 11 , 12 , 0[/code]
envoyer du code RC5 avec un ATtiny45
Débuté par Mic*, mars 10 2013 11:26
1 réponse à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users