Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Cartes à micro-contrôleurs > Autres plateformes > Carte AVR mySmartControl

Carte AVR mySmartControl

mercredi 17 décembre 2008, par Julien H.

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

myAvrControl ATmega8

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 !

Comparaison des connecteurs USB
Le mini-USB (ici sur une carte Sparkfun) est même plus petit que les connecteurs I/O !

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).

Patins de silicone

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 :

La carte est détectée automatiquement

Test de la communication peu pratique (non traduite) :

Test de la connexion automatique

Il faut faire le reset manuellement :

Reset manuel demandé lors de l’écriture

Même en allemand, l’utilisation du logiciel est intuitive grâce aux couleurs :

Rouge = erreur de chargement
Vert = upload OK

Connexion de notre analyseur Saleae Logic :

Connexion de l’analyseur logique

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 !

Alternance haut/bas toutes les 500 ms

Voici une archive du projet. N’hésitez pas à nous contacter pour des questions ou partager vos tests avec les cartes myAVR.

Projet WinAVR de test

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.