Outils pour utilisateurs

Outils du site


tpir

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
tpir [2016/03/21 15:14]
bvandepo [Analyse]
tpir [2018/02/24 00:59]
bvandepo
Ligne 24: Ligne 24:
  
 ===Format des trames=== ===Format des trames===
-Pour rappel, une trame NEC étendue est constitué d'un train de bits modulé à 38Khz. Il existe 2 types de trames:+Une trame NEC étendue est constituée d'un train de bits modulé à 38Khz. Il existe 2 types de trames:
   - les trames complètes   - les trames complètes
   - les trames de répétition   - les trames de répétition
Ligne 30: Ligne 30:
 La trame complète contient: La trame complète contient:
   - un entête de trame   - un entête de trame
-  - une adresse sur 16 bits, octet de poids fort d'abord et bit de poids faible d'abord (identifiant la télécommande) +  - une adresse sur 16 bits (codant le numéro de la télécommande), octet de poids fort d'abord et bit de poids faible d'abord  
-  - une valeur sur 8 bits, bit de poids faible d'abord (identifiant la touche) +  - une valeur sur 8 bits (codant le numéro de la touche), bit de poids faible d'abord 
-  - le complément à 1 de la précédente valeur sur 8 bits+  - une valeur sur 8 bits codant le complément à 1 de la précédente valeur sur 8 bits (redondance pour la détection d'erreur)
   - l'envoi d'un bit à 1 et un retour à l'état de repos   - l'envoi d'un bit à 1 et un retour à l'état de repos
  
Ligne 51: Ligne 51:
   - La trame de répétition commence par un train d'impulsion à 38Khz (avec rapport cyclique 50%) pendant 9ms suivi par une inactivité de durée 2.25ms.   - La trame de répétition commence par un train d'impulsion à 38Khz (avec rapport cyclique 50%) pendant 9ms suivi par une inactivité de durée 2.25ms.
 ===Dessin des chronogrammes=== ===Dessin des chronogrammes===
 +A faire sur papier quadrillé et à faire noter par l'enseignant:  
 +  - Dessiner l'allure des chronogrammes pour l'envoi d'une trame complète depuis la télécommande 0x1234 pour la touche 0x56.
 +  - Dessiner l'allure des chronogrammes pour l'envoi d'une trame de répétition depuis la télécommande 0x1234 pour la touche 0x56.
  
-Dessiner l'allure des chronogrammes pour l'envoi d'une trame complète depuis la télécommande 0x1234 pour la touche 0x56. 
  
- +{{http://homepages.laas.fr/bvandepo/files/iut/tp_pic/validation.png}}
-Dessiner l'allure des chronogrammes pour l'envoi d'une trame de répétition depuis la télécommande 0x1234 pour la touche 0x56. +
- +
- +
  
  
  
-===Configuration du timer 2=== +===Configuration du timer 2 pour la génération du signal modulé à 38Khz=== 
-[[http://homepages.laas.fr/bvandepo/files/iut/Atmega328p_timer2.pdf]]+Consulter la documentation du timer 2 de l'ATMEGA328P: [[http://homepages.laas.fr/bvandepo/files/iut/Atmega328p_timer2.pdf]]
  
 L'Atmega328 dispose de 4 timers : L'Atmega328 dispose de 4 timers :
Ligne 69: Ligne 68:
  - Timer 2/3 : 8-bit avec PWM et possibilité d'horloge externe  - Timer 2/3 : 8-bit avec PWM et possibilité d'horloge externe
  
-Dans la suite des exercices nous utiliserons le Timer 2 en mode 7 "FAST PWM" (voir les différents mode en p 155!!!). +Dans la suite des exercices nous utiliserons le Timer 2 en mode 7 "FAST PWM" (voir les différents mode en p 155 de la documentation). 
  
  
-A l'aide de la documentation, nous allons définir l'algorithme de configuration du timer 2 pour pouvoir générer un signal à 38Khz sur une broche du microcontrôleur sans solliciter le processeur. Le timer 2 peut piloter la broche 3 (numnérotation Arduino) du micro-contrôleur. Cette broche peut recopier l'état d'un signal OC0B, que l'on peut décider de commuter à intervalle de temps fixé. La recopie ou non de ce signal sur la broche permet de générer facilement le signal modulé à 38Khz.+A l'aide de la documentation, nous allons définir l'algorithme de configuration du timer 2 pour pouvoir générer un signal à 38Khz sur une broche du microcontrôleur sans solliciter le processeur. Le timer 2 peut piloter la broche 3 (numérotation Arduino) du micro-contrôleur. Cette broche peut recopier l'état d'un signal OC0B, que l'on peut décider de commuter à intervalle de temps fixé. La recopie ou non de ce signal sur la broche permet de générer facilement le signal modulé à 38Khz.
  
 Pour configurer le timer, les registres TCCR2A et TCCR2B doivent être réglés en "Normal port operation" Pour configurer le timer, les registres TCCR2A et TCCR2B doivent être réglés en "Normal port operation"
Ligne 98: Ligne 97:
  
  
-Proposer l'algorithme pour la fonction **void setup(void)** qui permet de configurer le timer en réglant les registres TCCR2A, TCCR2B, OCR2A et OCR2B pour qu'il soit prêt à générer le signal à 38Khz. Vous penserez également à configurer la broche en sortie et à lui imposer un état bas. +Proposer l'algorithme pour la fonction **void setup(void)** qui permet de configurer le timer en réglant les registres TCCR2A, TCCR2B, OCR2A et OCR2B pour qu'il soit prêt à générer le signal à 38Khz. Vous penserez également à configurer la broche en sortie et à lui imposer un état bas.  
- +
-Proposer l'algorithme pour la fonction **void loop(void)** qui permet de piloter le timer pour activer la sortie à 38Khz pendant 200us puis la désactiver pendant 400us. Programmer la maquette et vérifier à l'aide d'un oscilloscope le signal généré. Faire valider.+
  
 Les fonctions **void mark(int time)** et **void space(int time)** sont fournies. Elles permettent respectivement d'activer (ou inhiber) le signal à 38 kHz pendant time us. Les fonctions **void mark(int time)** et **void space(int time)** sont fournies. Elles permettent respectivement d'activer (ou inhiber) le signal à 38 kHz pendant time us.
Ligne 123: Ligne 120:
 //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
 </file> </file>
 +
 +
 +Proposer l'algorithme pour la fonction **void loop(void)** qui permet de piloter le timer pour activer la sortie à 38Khz pendant 200us puis la désactiver pendant 400us.
  
  
Ligne 131: Ligne 131:
  
 Proposer l'algorithme pour la fonction **void  sendNECFrameRepeat()** qui permet d'envoyer la trame NEC de répétition. Proposer l'algorithme pour la fonction **void  sendNECFrameRepeat()** qui permet d'envoyer la trame NEC de répétition.
 +
 +
 +{{http://homepages.laas.fr/bvandepo/files/iut/tp_pic/validation.png}}
  
  
Ligne 136: Ligne 139:
 ==== Codage et tests ==== ==== Codage et tests ====
  
-Implémenter la fonction **void setup(void)** pour configurer la sortie PWM à 38Khz. <color #FF0000>**Vérifier à l'oscilloscope la fréquence du signal généré.**</color>+Implémenter les fonctions **void setup(void)** et **void loop(void)** pour configurer la sortie PWM à 38Khz. <color #FF0000>** Programmer la maquette et vérifier la fréquence du signal obtenu sur la broche 3 à l'aide d'un oscilloscope.**</color>
  
  
 +{{http://homepages.laas.fr/bvandepo/files/iut/tp_pic/validation.png}}
  
-Implémenter les fonctions **void TimerEnablePWM()** et **void TimerDisablePWM()** qui activent ou désactive la sortie PWM sur la broche 3. 
  
-Implémenter las fonction **void mark(int time)** qui active la sortie PWM pendant time microsecondes.+Implémenter les fonctions **void sendNECBYTE(unsigned char data)**, **void sendNECFrame(unsigned int adr, unsigned char cmd)** et **void  sendNECFrameRepeat()** et proposer un programme principal de test qui permette de balayer plusieurs adresses et numéros de commandes. Vous veillerez à assurer un temps d'attente entre l'émission de 2 trames consécutives pour obtenir au minimum une durée de 110ms entre chaque début de trame
  
-Implémenter las fonction **void space(int time)** qui déactive la sortie PWM pendant time microsecondes. 
  
-Implémenter les fonctions **void sendNECBYTE(unsigned char data)**, **void sendNECFrame(unsigned int adr, unsigned char cmd)** et **void  sendNECFrameRepeat()** et proposer un programme principal de test qui permette de balayer plusieurs adresses et numéros de commandes+{{http://homepages.laas.fr/bvandepo/files/iut/tp_pic/validation.png}}
  
  
 Programmer la carte Arduino et fermer le cavalier permettant de relier les Leds à la broche 3 de l'Arduino. Utiliser une caméra de téléphone portable pour visualiser l'activité de la Led infrarouge et demander à l'enseignant de valider avec le récepteur/démodulateur infrarouge. Programmer la carte Arduino et fermer le cavalier permettant de relier les Leds à la broche 3 de l'Arduino. Utiliser une caméra de téléphone portable pour visualiser l'activité de la Led infrarouge et demander à l'enseignant de valider avec le récepteur/démodulateur infrarouge.
 +  
 +
 +{{http://homepages.laas.fr/bvandepo/files/iut/tp_pic/validation.png}}
  
  
tpir.txt · Dernière modification: 2021/03/14 11:11 de bvandepo