Aller au contenu


Photo
- - - - -

envoyer du code RC5 avec un ATtiny45


  • Veuillez vous connecter pour répondre
1 réponse à ce sujet

#1 Mic*

Mic*

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male
  • Location:Sarthe

Posté 10 mars 2013 - 11:26

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]


#2 Mic*

Mic*

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male
  • Location:Sarthe

Posté 19 avril 2013 - 02:36

la LED IR d'emmission se connecte sur PB1 voir le schéma

Fichier(s) joint(s)






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users