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
tpir [2018/02/24 00:59]
bvandepo
tpir [2019/03/13 10:22] (Version actuelle)
bvandepo [Analyse]
Ligne 44: Ligne 44:
 ===Codage des bits=== ===Codage des bits===
 Les bits sont codés de la manière suivante: ​ Les bits sont codés de la manière suivante: ​
-  - Le bit "​1"​ est représenté par un train d'​impulsion à 38Khz (avec rapport cyclique 50%) pendant 560us suivi par une inactivité ​pour une durée totale du bit de 2.25ms. +  - Le bit "​1"​ est représenté par un train d'​impulsion à 38Khz (avec rapport cyclique 50%) pendant 560us suivi par une inactivité. La durée totale du bit est de 2.25ms. 
-  - Le bit "​0"​ est représenté par un train d'​impulsion à 38Khz (avec rapport cyclique 50%) pendant 560us suivi par une inactivité ​pour une durée totale du bit de 1.12ms.+  - Le bit "​0"​ est représenté par un train d'​impulsion à 38Khz (avec rapport cyclique 50%) pendant 560us suivi par une inactivité. La durée totale du bit est de 1.12ms.
  
 Les entêtes de trames sont codés de la manière suivante: ​ Les entêtes de trames sont codés de la manière suivante: ​
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: ​  +A faire sur papier 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 complète depuis la télécommande 0x1234 pour la touche 0x56 en faisant apparaître la valeur des différents bits transmis et la correspondance avec les données à transmettre (adresse de A15 à A0, touche de B7 à B0).  
-  - 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 de répétition depuis la télécommande 0x1234 pour la touche 0x56 (attention au piège!).
  
  
Ligne 75: Ligne 75:
 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"​. ​
  
-Pour OC0A en "​disconnected":​+Pour OC0A en "​disconnected"​, les bits COM2A doivent être réglés à:
   COM2A=00 ​     COM2A=00 ​  
-Pour OC0B en "​disconnected": ​+Pour OC0B en "​disconnected"​, (initialement le timer ne doit pas générer de signal PWM) les bits COM2B doivent être réglés à
   COM2B=00 ​   COM2B=00 ​
-Pour OC0B en "Clear OC2B on Compare Match, set OC2B at BOTTOM, (non-inverting mode)": ​ 
-  COM2B=10  ​ 
 Le mode de fonctionnement doit être réglé à 7 (voir table 18-8, p155): ​ Le mode de fonctionnement doit être réglé à 7 (voir table 18-8, p155): ​
   WGM2 = 111: Fast PWM, TOP=OCRA   WGM2 = 111: Fast PWM, TOP=OCRA
Ligne 89: Ligne 87:
 Pour régler la valeur du TON pour obtenir un rapport cyclique de 50%: Pour régler la valeur du TON pour obtenir un rapport cyclique de 50%:
   OCR2B=OCR2A/​2   OCR2B=OCR2A/​2
 +  ​
 +
 +
 +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.  ​
 +  ​
 +  ​
 +  ​
 +Le signal modulé est obtenu en alternant les mode de fonctionnement "​disconnected"​ et "Clear OC2B on Compare Match, set OC2B at BOTTOM, (non-inverting mode)" pour OC0B. Pour activer le signal PWM en sortie du timer, OC0B devra être réglé en "Clear OC2B on Compare Match, set OC2B at BOTTOM, (non-inverting mode)": ​
 +  COM2B=10 ​     ​
 Pour autoriser la sortie PWM sur cette broche, il faut passer le timer en mode 10 en mettant ​ 1 le bit COM2B1: Pour autoriser la sortie PWM sur cette broche, il faut passer le timer en mode 10 en mettant ​ 1 le bit COM2B1:
   TCCR2A |= _BV(COM2B1);​   TCCR2A |= _BV(COM2B1);​
Ligne 95: Ligne 102:
 Dans la suite, pour maîtriser les durées, nous utiliserons la fonction **delayMicroseconds(time);​** Dans la suite, pour maîtriser les durées, nous utiliserons la fonction **delayMicroseconds(time);​**
  
- +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 ​une durée ​time exprimée en us.
- +
-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.   +
- +
-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.+
  
 <file cpp ir1.ino> <file cpp ir1.ino>
Ligne 111: Ligne 114:
 } }
 ////////////////////////////////////////////////////////////////////////​ ////////////////////////////////////////////////////////////////////////​
-void space(int time)+void space(int time) // pulse parameters in usec
 { {
   // Sends an IR space for the specified number of microseconds.   // Sends an IR space for the specified number of microseconds.
Ligne 145: Ligne 148:
  
  
-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 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 (pour cela calculer la durée minimum pour chacune des trame, et ajouter un délai à l'aide de la fonction Delay(time) ) 
  
  
tpir.1519430378.txt.gz · Dernière modification: 2018/02/24 00:59 par bvandepo