mardi 20 octobre 2009

Décodage d'une trame RC5 (télécommande TV)


Ou comment utiliser une télécommande infra-rouge pour piloter un microcontrôleur

J'ai écrit cette fonction en langage C que j'utilise, une fois compilée avec avr-gcc sur des uC AVR ATmega
On suppose que le module récepteur IR est relié au pin7 du port D
  • Fonctions RC5 (code source en C, fichier texte, encodage des caractères en UTF8)

------------------------------------------------------------------------------------------------------------------------------

Des exemples d'utilisation sur mon site:
Documentation sur le codage RC5:
Silicium628

lundi 19 octobre 2009

Programmation des AVR en langage C, sous LINUX


Actuellement Les microcontroleurs AVR ATmega sont devenu très abordables. En particulier les ATmega32 qui possèdent suffisamment de mémoire de programme flash (32ko) nous donnent la possibilité de les programmer en langage de haut niveau comme le Pascal ou le Langage C.

Il est de plus possible de les programmer avec des logiciels libres (sous licence GNU) en travaillant sous LINUX, un OS libre également!

Le logiciel en question c'est Kontrollerlab. Je l'utilise régulièrement et j'en suis tout à fait satisfait. C'est en fait un tableau de bord qui permet de saisir et d'éditer le code source, de le compiler (en utilisant avr-gcc), de lier les fichiers, de programmer l'ATmega. Il y a même un mode simulation.

Ceci n'est pas de la publicité commerciale puisqu'il s'agit de logiciels et de codes sources libres et 100% gratuits.

Je donne plus de détails sur la page ATmega de mon site.

Silicium628

Comment relier électriquement une SD card à un ATmega


Les uC ATmega d'AVR disposent d'une SPI (Serial Peripheral Interface) tout comme les cartes mémoires SDcard. Donc la liaison peut se faire directement en reliant MISO àMISO, MOSI à MOSI etc... et paramétrant correctement la SPI, en particulier la fréquence de SCK à 125kHz.

sauf que...

Sauf que dans bien des cas des contraintes obligent à alimenter l'ATmega sous 5V alors que les SDcard doivent être alimentées en 3,3V et rien d'autre. Dans ce cas, une liaison directe détruirait la SDcard.

Il faut donc concevoir une alimentation 3V3 et un adaptateur de niveaux logiques.
  • Pour les signaux qui sortent de l'ATmega et entrent dans la SD card (MOSI, CS, SCK), il faut limiter la tension du niveau haut à 3,3V . Une solution consiste à utiliser une résistance en série et une diode à faible tension directe (diode schottky) reliée au 3V3.
  • Pour le signal qui sort de SDcard et entre dans l'ATmega (MISO =Maitre-In, Slave-Out) il faut au contraire augmenter la valeur du niveau haut de 3V3 vers 5V. (Le datasheet de l'ATmega32 indique que, alimenté sous 5V, le niveau haut en entrée doit se situer au dessus de 0,7 x VCC soit >3,5V ce qui est > à 3,3V). Certes une connexion directe PEUT fonctionner, mais ce n'est pas garanti. On peut donc utiliser soit deux transistors en montage émetteur commun (deux afin de ne pas inverser le signal logique), soit un seul transistor monté en base commune.
D'où le schéma proposé (et testé ok)

Pour le soft, c'est une autre histoire (voir APE2009 Goto pour téléscope sur mon site...)
Silicium628

Message de bienvenue


Bienvenue chez Silicium628.

Je crée ce blog pour permettre aux passionnés d'électronique comme moi, et plus particulièrement aux développeurs de logiciels en C pour les microcontrôleurs AVR d'échanger leurs remarques, critiques et informations.

Je dispose également d'un site ( http://www.silicium628.fr/ ) décrivant plusieurs réalisations personnelles à base de ces uC, mais ne permettant pas l'interactivité avec les internautes. Voilà qui est chose faite.

Je publierai aussi ici des notes de mises à jour concernant mes différents montages, ainsi que les bugs (et solutions!) éventuels.

Je vous laisse donc la parole.
Fred (Silicium628)