Incubator‎ > ‎Microcontrôleur‎ > ‎

Microcontrôleur séance 1

Architecture d'un processeur

Pour le premier TD, vous trouverez ci-dessous les documents de références :
  • Datasheet ATMEL Atmega328 : c'est le document de référence c'est la documentation constructeur qui fait plus de 400 pages et qui décrit en détail les possibilités du processeur. Tout est là, mais ce n'est pas très lisible pour un débutant.
  • Présentation processeur : le cours de la séance.
  • Arduino Uno pin mapping 328 : Schéma donnant la correspondance entre le nom des pins dans le monde Aduino et le nom réel des pins sur le processeur.
TD 1
Prise en main d'Atmel Studio

Dans l'onglet démarrer de Windows, sous Enseignement cherchez Atmel et Activez AVR Studio, après un temps long, long, long... comme Windows aime vous obtenez cet écran :


  • Ignorez la demande de mise à jour (Update)
  • Créez un nouveau projet (New Project à gauche de la fenêtre)
  • Dans la fenêtre de création :

  • vérifiez les 3 points :
    1. GCC Executable
    2. Un nom cohérent avec l'exercice
    3. un répertoire par projet, et faites un projet par exercice
  • Après une longue, longue réflexion, AVR Studio vous demande le nom du processeur utilisé, entrez 328 dans la fenêtre de choix cela réduira la liste et sélectionnez ATmega328, c'est le nom de notre processeur qui est cadencé par un quartz à 16Mhz.

  • Cliquez sur OK
  • Vous obtenez un écran avec un prototype de programme, vous pouvez voir qu'AVR génère d'office une ligne :
#include <avr/io.h>

Vous avez donc la bibliothèque qui connait le nom des registres et des ports de votre processeur.Quels sont les noms définis et à quoi correspondent-ils ? Voici l'exemple dans le document Les registres du processeur des mnémoniques des noms connus par le compilateur.
Une autre bibliothèque vous sera bien utile et sa documentation est là :

http://www.nongnu.org/avr-libc/user-manual/globals.html


Exercice 1

Sur la platine Parallax montée sur notre Arduino Uno, se trouve sur la pin digital 13 (notation Arduino) une led verte. Faites le programme en C qui la fera clignoter à 1hz.

Pour compiler, vous utiliser la commande Build solution de l'onglet Build.
Lorsque vous avez un résultat qui compile sans erreur, il faut alors téléverser le code obtenu vers la mémoire du processeur Atmel de la carte Arduino.


Ce qui suppose que la platine Arduino est connectée sur un port USB !

Dans Avr studio
  • Dans le menu Tools
  • Sélectionnez External Tools
  • Sur le pop-up faites Add
    • Title: Televerser
    • Collez la ligne suivante dans le champ Command:
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe
  • Collez la ligne suivante dans le champ Arguments:
-F -v -patmega328p -carduino -P\\.\COM3 -b115200 -D -Uflash:w:"$(ProjectDir)\Debug\$(ItemFileName).hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"

éventuellement, remplacer $(ItemFileName).hex par $(TargetName).hex
  • Cochez la case Use Output window
Vous obtenez l'écran suivant


  • Faites Apply
  • Faites OK
Une nouvelle ligne est apparue sous l'onglet Tools, Televerser qui permet de transférer le code résultant de la compilation vers l'Arduino.

Exercice 2

Montez une seconde led (schéma de montage Arduino connexion led) sur la patte que vous désirez utiliser. Faites clignoter la première toutes les secondes et la deuxième toutes les 350 ms.

Exercice 3

Pour bien comprendre ce que nous devons faire, démarrez la plateforme arduino et faites le programme suivant :
http://learn.parallax.com/node/132

Comprenez bien ce que vous venez de faire :
  • le processeur Atmel de la carte Arduino à transmis par le port USB, les caractères "Hello" qui sont affichés dans une fenêtre que l'on nomme souvent Moniteur série ou Terminal.
  • C'est la transmission la plus simple qui existe dans le monde des processeurs, on l'appel transmission série asynchrone.
Lisez ce petit document : Transmission série

Sur notre Arduino, tout caractère envoyé sur la pin TXD (Transmission de Data) PD1 suivant la norme décrite dans le document pourra être décodé et affiché sur le Serial Monitor de la plateforme Arduino.

Pourriez générer le bon signal qui transmette un A ?

Exercice 4

Pourriez vos généraliser cette méthode en écrivant une fonction qui prenne en entrée un caractère et le transmette ?

Exercice 5

Pourriez vous écrire une fonction qui prenne en entrée une chaîne de caractère et la transmette ?





Ċ
Pascal Vaxiviere,
4 sept. 2014 à 03:31
ą
Pascal Vaxiviere,
4 sept. 2014 à 07:08
Ċ
Pascal Vaxiviere,
4 sept. 2014 à 02:27
Ċ
Pascal Vaxiviere,
4 sept. 2014 à 07:06
Ċ
Pascal Vaxiviere,
4 sept. 2014 à 02:32
Comments