Si l'environnement de construction iDreamMicro prend en charge les cartes de développements Arduino Uno et Arduino Mega2560 depuis le début ou presque, la carte Arduino Leonardo avait été oubliée... La création d'un nouvel environnement de construction comble cette lacune. Celui-ci est très […]
Mot-clé - AVR
samedi 22 septembre 2012
Environnement de construction pour Arduino Leonardo
samedi 22 septembre 2012.
SCons et les méthodes d'environnement
samedi 22 septembre 2012.
""" Build project. """ def BuildProject(env, sources, target_name): # Build program. env.Program(target = target_name + '.elf', source = sources) AddMethod(Environment, BuildProject)
L'environnement de construction de la plateforme iDreamMicro permet de compiler en une seule fois plusieurs projets et plusieurs bibliothèques. Par conséquent, le principe de construction est le même d'un projet à l'autre ou d'une bibliothèque à l'autre.
Jusqu'ici on s'est contenté de dupliquer les scripts de construction. Mais cette situation ne peut perdurer, à plus forte raison quand SCons offre le nécessaire pour factoriser et éviter la duplication. La solution consiste à utiliser les méthodes d'environnement.
SCons et les variables de construction
samedi 22 septembre 2012.
env = Environment() env.Append(NEW_VARIABLE = 'added') print "NEW_VARIABLE =", env['NEW_VARIABLE']
Les précédents articles autour de SCons ont amené à concevoir un environnement de construction relativement complet, avec la construction de bibliothèques et de projets. Cet environnement utilise plusieurs fichiers SConstruct et SConscript qui doivent s'échanger des paramètres. Certains paramètres sont relatifs à un environnement en particulier. Par conséquent et afin d'éviter de les passer à tord et à travers, il semble judicieux d'en faire des variables de construction.
SCons permet justement d'ajouter des variables à un environnement de construction. Cet article a pour objectif de présenter cette fonctionnalité ainsi que son intégration dans les environnements de la plateforme iDreamMicro.
Construction de plusieurs projets
samedi 22 septembre 2012.
L'article précédent a abordé la construction d'un projet et des bibliothèques qu'il utilise. Dans le cas d'une plateforme telle qu'un réseau de capteurs, on peut vouloir construire plusieurs projets et leurs bibliothèques en une seule fois. Cet article propose une solution permettant de répondre à ce besoin.
mercredi 25 juillet 2012
EKitsZone W5200 Ethernet Shield
mercredi 25 juillet 2012.
La plateforme de développement Arduino bénéficie d'une large communauté et d'un grand nombre de modules, shields ou breakout boards divers et variés. Il existe notamment des shields permettant d'ajouter une connexion réseau Ethernet tels que l'Arduino Ethernet Shield.
Le shield officiel embarque un contrôleur Ethernet WIZnet W5100. Le W5200 Ethernet Shield d'EkitsZone est quant à lui basé sur un contrôleur Ethernet WIZnet W5200.
Cet article présente la mise en œuvre du W5200 Ethernet Shield sur une carte de développement Arduino Uno. L'environnement de développement utilisé est Arduino en version 1.0.1.
mardi 24 juillet 2012
Les assertions avec Arduino
mardi 24 juillet 2012.
void foo(char* p_string) { // Check the preconditions. assert(NULL != p_string); // ... }
En informatique, une assertion est une expression qui doit être évaluée à vrai. Si le résultat de l'évaluation est faux, c'est qu'il y a un problème, une erreur qui ne doit pas se produire. Les assertions peuvent par exemple être utilisées pour s'assurer qu'une valeur est bien comprise entre deux bornes, qu'un pointeur n'est pas nul, etc...
Arduino utilise AVR-GCC et l'AVR Libc qui propose de prendre en charge les assertions via la bibliothèque assert définie dans le fichier d'entête assert.h.
Cet article propose de découvrir les assertions de l'AVR Libc puis de les mettre en œuvre sur Arduino.
mardi 26 juin 2012
ATmega TWI Bit Rate Generator Unit
mardi 26 juin 2012.
La plupart des microcontrôleurs megaAVR d'Atmel, dont l'ATmega328P, dispose d'un module I2C ou TWI. Celui-ci se décompose en plusieurs sous ensembles ou units :
- Bit Rate Generator Unit ;
- Bus Interface Unit ;
- Address Match Unit ;
- Control Unit.
Cet article se focalise sur le Bit Rate Generator Unit et propose d'apprendre à le configurer sur un ATmega328P. Par conséquent, il n'a pas pour objectif de proposer une bibliothèque TWI complète, cette dernière étant en cours de développement.
Le Bit Rate Generator Unit contrôle la période du signal SCL en mode maître ou master. Cette période est déterminée par la configuration du bit rate dans le registre TWBR et du prescaler dans le registre TWSR.
Le bit rate est le débit binaire, c'est à dire le nombre de bits par seconde envoyés ou reçus sur le bus TWI. Le prescaler est un diviseur de fréquence. Il permet de diviser la fréquence CPU pour atteindre la fréquence SCL du bus TWI.
mercredi 9 mai 2012
Construction d'une bibliothèque
mercredi 9 mai 2012.
Après les deux précédents articles sur la configuration d'un environnement de construction SCons pour AVR-GCC, celui-ci propose de construire un logiciel recourant à des bibliothèques.
Comme dans l'article précédent, le projet servant de support fait basculer le niveau d'une sortie du microcontrôleur mais plutôt que de la piloter en direct, il propose de développer une bibliothèque digital_io réalisant cette tâche.
L'environnement de construction mis en place dans l'article précédent servira de base pour ce nouveau projet. Toutefois l'arborescence évolue et comporte désormais différents sous-dossiers afin de le structurer.
Bibliothèque digital_io
mercredi 9 mai 2012.
// Configure pin direction. DDRB |= (1 << PB5); // Set pin level. PORTB |= (1 << PB5);
Ces quelques lignes de code ne parleront sans doute qu'aux personnes connaissant les microcontrôleurs, voire même seulement à celles connaissant les microcontrôleurs AVR d'Atmel. En effet, elles configurent le PORTB5 d'un ATmega en sortie et le mettent au niveau logique haut.
Certes, c'est le meilleur moyen de réduire l'empreinte mémoire du logiciel sans recourir à l'assembleur. Mais c'est loin d'être le plus parlant. Sans oublier que ce code n'est pas portable. C'est à dire que le jour où on souhaitera troquer l'AVR pour un autre microcontrôleur tel qu'un PIC ou un MSP430, il sera nécessaire de revenir sur l'ensemble du logiciel.
Afin de remédier aux inconvénients cités ci-dessus, iDreamMicro propose dans cet article de découvrir la bibliothèque digital_io. Elle permet de piloter les ports d'entrée/sortie numériques des microcontrôleurs AVR d'Atmel :
- configuration des ports d'entrée/sortie ;
- lecture du niveau d'entrée ;
- écriture du niveau de sortie.
La tout en offrant abstraction, portabilité et réutilisabilité. Les quelques lignes ci-dessous ne sont-elles pas plus parlantes ?
// Declare pin. digital_io__pin_position_t output = DIGITAL_IO__PORT_B | DIGITAL_IO__PIN_5; // Configure pin direction. digital_io__configure_pin(output, DIGITAL_IO__DIRECTION__OUTPUT); // Set pin level. digital_io__set_pin_level(output, DIGITAL_IO__LEVEL__HIGH);
Ouverture du dépôt idreammicro-avr
mercredi 9 mai 2012.
Un système de gestion de version permet de conserver l'ensemble des révisions d'un logiciel. iDreamMicro a choisi d'utiliser ce type de système, et plus particulièrement Subversion. iDreamMicro a ouvert un dépôt dédié à ses développements pour microcontrôleur AVR avec AVR-GCC. Celui-ci est […]
jeudi 5 janvier 2012
FreeRTOS sur ATmega328
jeudi 5 janvier 2012.
FreeRTOS est un noyau de système d'exploitation temps réel faible empreinte pour microcontrôleur. Il est publié sous licence libre GNU General Public License (GPL).
FreeRTOS propose différents portages, notamment pour ATmega323, mais pas pour ATmega328. En effet, certains registres et vecteurs d'interruption relatifs au Timer 1 ont été renommés. Cet article propose d'y remédier de manière didactique, en réalisant le portage pas à pas. Ainsi la démarche pourra être reproduite pour tout autre microcontrôleur ATmega.
L'ATmega328 étant relativement proche de l'ATmega323, le portage de ce dernier servira de base.
La cible utilisée dans cet article est une carte Arduino Uno R2 embarquant un microcontrôleur ATmega328P.
lundi 19 décembre 2011
Arborescence d'une bibliothèque
lundi 19 décembre 2011.
Par définition, une bibliothèque doit être réutilisable afin d'être intégrée au plus grand nombre de projets. Mais elle doit également être suffisamment indépendante pour permettre de l'évaluer et de la tester sans être parasité par un projet complet. C'est à dire qu'on doit pouvoir prendre uniquement le dossier de la bibliothèque.
Cet article présente l'arborescence définie par iDreamMicro afin de répondre à ces exigences.
lundi 11 juillet 2011
Environnement de construction SCons pour AVR-GCC (2/2)
lundi 11 juillet 2011.
Ce second article sur la configuration d'un environnement de construction SCons pour AVR-GCC introduit la notion de SConscript. Le logiciel de sortie de ce projet est exactement le même que celui de l'article précédent, seule la méthode change.
Désormais, le SConstruct est éclaté dans différents scripts, chacun ayant un rôle précis dans la construction du logiciel :
- configuration de l'environnement de construction ;
- adaptation de l'environnement de construction à la cible ;
- construction du projet.
Pour démontrer que cette méthode est bien plus que de la cosmétique, cet article propose également de construire le logiciel pour deux cibles distinctes.
jeudi 30 juin 2011
Environnement de construction SCons pour AVR-GCC (1/2)
jeudi 30 juin 2011.
Cet article présente la configuration d'un environnement de construction SCons minimal pour AVR-GCC.
Afin d'aller à l'essentiel, la configuration de l'environnement et la construction du logiciel se font dans un même fichier SConstruct. Même si ce n'est pas la solution la plus élégante, elle demeure la plus simple. Dans le même souci de simplicité, le projet servant d'exemple ne comporte qu'un seul fichier source et n'a recours à aucune bibliothèque.