Site ELEC344/ELEC381

Partie interactive du site pédagogique ELEC344/ELEC381 de Télécom ParisTech (occurrence 2010).

Catégories

LCD, Led, Zigbee, IRQ, Buzzer : All good !

Bon, aujourd’hui est un jour plutôt cool puisque je suis arrivé au bout du TP, en ayant bien fignolé et modularisé les differentes parties, pour qu’il soit réutilisable facilement. Voici un petit bilan :

  • Les écritures sur le LCD se font simplement soit sur la ligne 1 soit sur la ligne 2, et sont thread safety. Si le message est plus long que 16 caractères, il défile sur l’écran, sans perturber l’affichage sur l’autre ligne. Le rétroéclairage est contrôlé par un timer en PWM et oscille entre differentes intensités.
  • Pour le buzzer, une fonction permet de jouer une note à une fréquence donnée.
  • Pour le Zigbee, l’initialisation se fait de façon à envoyer son prénom, recevoir des messages broadcastés, et jouer en streaming une musique diffusée sur les ondes. Le fichier zigbee.c présente deux fonctions génériques, une de lecture, et une d’écriture
  • Pour les interruptions, un bouton permet de figer l’intensité du rétroéclairage du LCD, l’autre de rendre muet le buzzer. Le fichier bouton.c met à disposition deux sémaphores réutilisables ailleurs pour exploiter les IRQ sur les boutons.

Maintenant, je vais essayer de jouer avec la carte inertielle pour apprendre à manipuler l’accéléromètre via bus SPI.

3 comments to LCD, Led, Zigbee, IRQ, Buzzer : All good !

  • Daniel

    Quand tu dis qu’un message plus long que 16 caractères défile sur la ligne 1 sans perturber l’affichage sur la ligne 2, est-ce que ça veut dire que tu peux avoir plusieurs messages sur la ligne 2 qui changent pendant que celle de la ligne 1 est en train de défiler ?

    Je dis ça car actuellement, lorsqu’un message est trop long chez moi il défile aussi mais pendant ce temps la ligne 2 ne peut pas changer de message (semaphore pour l’écriture). Ceci est d’ailleurs un peu embêtant si on imagine un message qui prend beaucoup de temps à défiler et qui bloque du coup l’affichage de la ligne 2.

  • Arnaud

    Tel que je l’avais fait, en effet, tu as raison.

    Je viens de corriger ça, il suffit de rendre le mutex avant de faire le vTaskDelay qui précède l’appel récursif.
    Ainsi, lors du vTaskDelay qui correspond au temps entre deux positions d’une ligne défilante, l’autre ligne du LCD peut être gérée ;)

  • Daniel

    Ok cool !
    Attention par contre il est préférable de modifier ton appel récursif en impératif car tu pourrais potentiellement ‘exploser’ ta pile (cf. Samuel)