Aujourd’hui, on retrouve un circuit bien connu : un microcontrôleur ATmega8 de la famille AVR d’Atmel et juste le strict minimum autour. C’est similaire à ce que propose une Arduino ou une ICmega8.
Il s’agit de la carte "mySmartControl" de Devtronic, le distributeur français de la gamme myAvr. Ils nous ont gracieusement envoyé plusieurs de leurs cartes et on commence avec ce qu’on connait le mieux avant de tester leurs autres cartes.
Caractéristiques
Le principal atout de cette carte est son connecteur qui a été standardisé pour toutes les cartes de la famille "my", permettant de connecter sans fil une carte de contrôle, une carte de capteur I2C, une carte de relais, une carte LCD, etc.
Une autre différence par rapport à ses cousines est le peu de composant. Comme la carte est de taille standard (pour se connecter aux autres circuits), tous les trous sont présents pour avoir une alimentation externe ou un connecteur ISP, mais les composants ne sont pas installés par défaut, ce qui fait qu’au final on ne trouve que :
– le microcontrôleur en CMS
– le quartz en CMS
– le chip CP210x convertisseur USB-UART
– le port USB
– le bouton reset
– le connecteur I/O femelle à plat
– les leds et résistances CMS qui vont bien
Pour autant, la carte reste beaucoup trop haute par rapport à ce qu’elle pourrait être, car c’est un bon gros connecteur USB "B" et pas un mini-USB en CMS comme on en trouve de plus en plus !
La carte se rattrape en étant facile à manipuler. Petit détail qui a de l’importance pour un débutant, 4 petits patins en silicone permettent de garder la carte au-dessus de toute surface plane métallique (évitant les court-circuits) et très stable (ce qui est pratique quand on a l’habitude de développer avec un ordinateur portable sur les genoux et des circuits électroniques en équilibre sur un avant-bras.. si si on en a vu).
Le quartz
C’est un point intéressant : alors que la plupart des boards à base d’AVR (Arduino, EasyAVR, ICmega8, etc..) utilisent un quartz de la valeur maximale possible pour le microcontrôleur concerné (8 ou 16 MHz), les concepteurs teutons de la mySmartControl ont choisi un quartz à 3.6864 MHz. Cela réduit la vitesse disponible (inconvénient car votre code mettra plus de temps à s’exécuter, ce qui peut poser problème, surtout dans les interruptions), mais améliore les transmissions sur liaison série (taux d’erreur nul).
Avec cette fréquence, un tic d’horloge vaut 271 nanosecondes.
Découverte
Nous allons commencer par connecter la carte, écrire un programme ultrasimple et l’envoyer dans le microcontrôleur, puis vérifier son bon fonctionnement.
Test
Recherche du port série dans les propriétés de matériel Windows :
Détection automatique par le logiciel ProgTool :
Test de la communication peu pratique (non traduite) :
Il faut faire le reset manuellement :
Même en allemand, l’utilisation du logiciel est intuitive grâce aux couleurs :
Connexion de notre analyseur Saleae Logic :
Le code
Il faut bien penser à configurer le fichier global.h avec le bon quartz, un 3,6864 Mhz qui est assez inhabituel (ICmega8 et Arduino sont à 8 Mhz).
// CPU clock speed
//#define F_CPU 16000000 // 16MHz processor
//#define F_CPU 14745000 // 14.745MHz processor
//#define F_CPU 8000000 // 8MHz processor
//#define F_CPU 7372800 // 7.37MHz processor
//#define F_CPU 4000000 // 4MHz processor
#define F_CPU 3686400 // 3.69MHz processor
#define CYCLES_PER_US ((F_CPU+500000)/1000000) // cpu cycles per microsecond
Un code ultra-simple :
int main(void)
// port B all output
DDRB = 0xFF ;
PORTB = 0x00 ;
//
timerInit() ;
uartInit() ;
uartSetBaudRate(9600) ;
rprintfInit(uartSendByte) ;
vt100Init() ;
vt100ClearScreen() ;
//
while (1)
rprintf("Cool program\r\n") ;
PORTB += 1 ;
delay_ms(500) ;
return 0 ;
Et ça fonctionne !
Voici une archive du projet. N’hésitez pas à nous contacter pour des questions ou partager vos tests avec les cartes myAVR.