SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Les outils de programmation
                                                 Hello world !
C’est bien, mais comment je peux faire un VRAI programme ?
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                   Conclusion




                                          Programmation en C
                                             Pour avr 8 bits

                                          J´r´my Cheynet – INTech
                                           ee
                                          Yann Sionneau – MiNET

                                                  www.club-intech.fr
                                                  clubcode.minet.net
                                                    intlab.minet.net
                                               github.com/leroilion/avr
                                             www.slideshare.net/leroilion34


                                                   14 octobre 2010


         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                 Hello world !
C’est bien, mais comment je peux faire un VRAI programme ?
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                   Conclusion
       1     Les outils de programmation
               Quels sont les outils dont je dispose ?
               Exemple d’utilisation
               A vous de jouer
       2     Hello world !
               Structure d’un port
               Ecrire un 1 ou un 0
               Je te parle
               Tu me parles
               A vous de jouer
       3     C’est bien, mais comment je peux faire un VRAI programme ?
               Qu’est-ce qu’un registe ?
               Le fil rouge
               Le datasheet : la bible du programmateur bas niveau
               Tu me vois, tu me vois plus
               A vous de jouer
       4     Les pi`ges ` ´viter
                   e     ae
           J´r´my Cheynet – INTech Yann Sionneau – MiNET
            ee                                                   Introduction au C avr
Les outils de programmation
                                                 Hello world !   Quels sont les outils dont je dispose ?
C’est bien, mais comment je peux faire un VRAI programme ?       Exemple d’utilisation
                                           Les pi`ges ` ´viter
                                                 e    ae         A vous de jouer
                                                   Conclusion
       1     Les outils de programmation
               Quels sont les outils dont je dispose ?
               Exemple d’utilisation
               A vous de jouer
       2     Hello world !
               Structure d’un port
               Ecrire un 1 ou un 0
               Je te parle
               Tu me parles
               A vous de jouer
       3     C’est bien, mais comment je peux faire un VRAI programme ?
               Qu’est-ce qu’un registe ?
               Le fil rouge
               Le datasheet : la bible du programmateur bas niveau
               Tu me vois, tu me vois plus
               A vous de jouer
       4     Les pi`ges ` ´viter
                   e     ae
           J´r´my Cheynet – INTech Yann Sionneau – MiNET
            ee                                                   Introduction au C avr
Les outils de programmation
                                                 Hello world !   Quels sont les outils dont je dispose ?
C’est bien, mais comment je peux faire un VRAI programme ?       Exemple d’utilisation
                                           Les pi`ges ` ´viter
                                                 e    ae         A vous de jouer
                                                   Conclusion




       Les diff´rents outils
              e
            avr-gcc (pour la compilation)
               avr-objcopy (pour cr´er le fichier hex)
                                   e
               avrdude (pour flasher)




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                 Hello world !   Quels sont les outils dont je dispose ?
C’est bien, mais comment je peux faire un VRAI programme ?       Exemple d’utilisation
                                           Les pi`ges ` ´viter
                                                 e    ae         A vous de jouer
                                                   Conclusion



       avr-gcc
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       myfile1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       myfile2.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 myfile1.o
       myfile2.o -o myappli

       avr-objcopy
       avr-objcopy -O ihex -R .eeprom myappli main.hex

       avrdude
       sudo avrdude -P /dev/ttyUSB0 -c stk500v1 -p m328p -b 57600 -D
       -U flash :w :main.hex

         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                 Hello world !   Quels sont les outils dont je dispose ?
C’est bien, mais comment je peux faire un VRAI programme ?       Exemple d’utilisation
                                           Les pi`ges ` ´viter
                                                 e    ae         A vous de jouer
                                                   Conclusion


       T´l´charger les sources
        ee
       http ://github.com/leroilion/avr
       Et t´l´charger dans les exemples le code blink.c
           ee

       Compiler les sources
       avr-gcc -Wall -mmcu=atmega328p -O2 -DF CPU=16000000
       blink.c -o blink.out

       Cr´er le fichier hexad´cimal
         e                  e
       avr-objcopy -O ihex -R .eeprom blink.out blink.hex

       Flasher l’arduino
       sudo avrdude -P /dev/ttyUSB0 -c stk500v1 -p m328p -b 57600 -D
       -U flash :w :blink.hex
       sudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex
         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation      Structure d’un port
                                                 Hello world !   Ecrire un 1 ou un 0
C’est bien, mais comment je peux faire un VRAI programme ?       Je te parle
                                           Les pi`ges ` ´viter
                                                 e    ae         Tu me parles
                                                   Conclusion    A vous de jouer
       1     Les outils de programmation
               Quels sont les outils dont je dispose ?
               Exemple d’utilisation
               A vous de jouer
       2     Hello world !
               Structure d’un port
               Ecrire un 1 ou un 0
               Je te parle
               Tu me parles
               A vous de jouer
       3     C’est bien, mais comment je peux faire un VRAI programme ?
               Qu’est-ce qu’un registe ?
               Le fil rouge
               Le datasheet : la bible du programmateur bas niveau
               Tu me vois, tu me vois plus
               A vous de jouer
       4     Les pi`ges ` ´viter
                   e     ae
           J´r´my Cheynet – INTech Yann Sionneau – MiNET
            ee                                                   Introduction au C avr
Les outils de programmation      Structure d’un port
                                                 Hello world !   Ecrire un 1 ou un 0
C’est bien, mais comment je peux faire un VRAI programme ?       Je te parle
                                           Les pi`ges ` ´viter
                                                 e    ae         Tu me parles
                                                   Conclusion    A vous de jouer




       3 registres
            Le registre DDRx
            Registre de configuration du port
               Le registre PORTx
               Registre de sortie du port
               Le registre PINx
               Registre de lecture du port




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation      Structure d’un port
                                                 Hello world !   Ecrire un 1 ou un 0
C’est bien, mais comment je peux faire un VRAI programme ?       Je te parle
                                           Les pi`ges ` ´viter
                                                 e    ae         Tu me parles
                                                   Conclusion    A vous de jouer




       Ecrire un 1 logique
       monport |= ( 1 << monbit ) ;
       #ifndef sbi
       #define sbi(port,bit) (port) |= (1 << (bit))
       #endif

       Ecrire un 0 logique
       monport &= ∼( 1 << monbit ) ;
       #ifndef cbi
       #define cbi(port,bit) (port) &= ∼(1 << (bit))
       #endif



         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation      Structure d’un port
                                                 Hello world !   Ecrire un 1 ou un 0
C’est bien, mais comment je peux faire un VRAI programme ?       Je te parle
                                           Les pi`ges ` ´viter
                                                 e    ae         Tu me parles
                                                   Conclusion    A vous de jouer




       Configuration en sortie du port
       DDRB |= ( 1 << PORTB5 ) ;

       Ecriture sur un port
       PORTB |= ( 1 << PORTB5 ) ; //Pour mettre le bit 5 du port B
       `1
       a
       PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre ` 0
                                                   a




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation      Structure d’un port
                                                 Hello world !   Ecrire un 1 ou un 0
C’est bien, mais comment je peux faire un VRAI programme ?       Je te parle
                                           Les pi`ges ` ´viter
                                                 e    ae         Tu me parles
                                                   Conclusion    A vous de jouer




       Configuration du port en entr´e
                                   e
       DDRx &= ∼( 1 << PORTxN ) ;

       Lecture du port
       PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–up
       PORTx &= ∼( 1 << PORTxN ) ; //Pour d´sactiver le pull–up
                                                 e
       uint8 t etat = ( PINx & ( 1 << PINxN )) ;




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation      Structure d’un port
                                                 Hello world !   Ecrire un 1 ou un 0
C’est bien, mais comment je peux faire un VRAI programme ?       Je te parle
                                           Les pi`ges ` ´viter
                                                 e    ae         Tu me parles
                                                   Conclusion    A vous de jouer




       Objectif :
       Faire un programme qui ´claire une LED si un bouton est pouss´.
                              e                                     e
       D´tails techniques :
        e
       Utiliser le PORTB5 en sortie (PORTB7 pour arduino mega), et le
       PORTB0 en entr´e.e
       Attention
       Ne pas oublier le int main() dans le fichier principal.
       Penser ` rajouter l’include standard io.h
              a




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion
      §                                                                                                                ¤
  1   #include <avr/io.h>
  2   int main( void )
  3   {
  4          DDRB |= ( 1 << PORTB5 );
  5          DDRB &= ~( 1 << PORTB0 );
  6          PORTB |= ( 1 << PORTB0 );
  7          while(42)
  8          {
  9                 if( (PINB & ( 1 << PORTB0 )) )
 10                        PORTB |= ( 1 << PORTB5 );
 11                 else
 12                        PORTB &= ~( 1 << PORTB5 );
 13          }
 14          return 0;
 15   }
      ¦
                                                                                                                      ¥


         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion
       1     Les outils de programmation
               Quels sont les outils dont je dispose ?
               Exemple d’utilisation
               A vous de jouer
       2     Hello world !
               Structure d’un port
               Ecrire un 1 ou un 0
               Je te parle
               Tu me parles
               A vous de jouer
       3     C’est bien, mais comment je peux faire un VRAI programme ?
               Qu’est-ce qu’un registe ?
               Le fil rouge
               Le datasheet : la bible du programmateur bas niveau
               Tu me vois, tu me vois plus
               A vous de jouer
       4     Les pi`ges ` ´viter
                   e     ae
           J´r´my Cheynet – INTech Yann Sionneau – MiNET
            ee                                                   Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       C’est un octet en m´moire
                          e
       qui permet de configurer le microcontrˆleur.
                                            o

       SREG – AVR Status Register
               I (bit 7) – Global interrupt enable
               T (bit 6) – Copy storage
               H (bit 5) – Half carry
               S (bit 4) – Sign bit
               V (bit 3) – Overflow bit
               N (bit 2) – Negative bit
               Z (bit 1) – Zero bit
               C (bit 0) – Carry

         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       Objectif :
       Faire un programme qui fait clignoter une led en utilisant le
       TIMER1 sur 16 bits.
       Pour cela, on fera :
               On activera les interruptions d’overflow du TIMER1
               On fera compter le TIMER1 pour avoir une interruption
               toutes les secondes.
               On regardera l’´tat de la PIN associ´e ` la LED pour le
                              e                    e a
               changer.




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       http ://github.com/leroilion/avr

       TCCR1A – TCCR1B (page 132 – 134)
       Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas
       de comparaison (COMx = 0)

       TCNT1H – TCNT1L (page 136)
       Incr´mentation toute les 64µs
           e




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       http ://github.com/leroilion/avr

       TCCR1A – TCCR1B (page 132 – 134)
       Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas
       de comparaison (COMx = 0)

       TCNT1H – TCNT1L (page 136)
       Incr´mentation toute les 64µs =⇒ Compter jusqu’` 15625
           e                                          a




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       http ://github.com/leroilion/avr

       TCCR1A – TCCR1B (page 132 – 134)
       Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas
       de comparaison (COMx = 0)

       TCNT1H – TCNT1L (page 136)
       Incr´mentation toute les 64µs =⇒ Compter jusqu’` 15625 =⇒
           e                                          a
       Mettre 49910 = 65535 - 15625 dans TCNT.

       TIMSK1 (page 137)
       Activer l’interruption d’overflow



         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       http ://github.com/leroilion/avr

       TCCR1A – TCCR1B (page 132 – 134)
       Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas
       de comparaison (COMx = 0)

       TCNT1H – TCNT1L (page 136)
       Incr´mentation toute les 64µs =⇒ Compter jusqu’` 15625 =⇒
           e                                          a
       Mettre 49910 = 65535 - 15625 dans TCNT.

       TIMSK1 (page 137)
       Activer l’interruption d’overflow =⇒ Activer TOIE1



         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion
      §                                                                                                                ¤
  1   #include avr/io.h
  2   #include avr/interrupt.h
  3   ...
  4   TCCR1A = 0bxxxxxx00;
  5   TCCR1B = 0bxxx00101;
  6   TIMSK1 |= ( 1  TOIE1 );
  7   ...
  8   ISR( TIMER1_OVF_vect)
  9   { ...
      ¦
                                                                                                                      ¥




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                                 Qu’est-ce qu’un registe ?
                                                 Hello world !
                                                                 Le fil rouge
C’est bien, mais comment je peux faire un VRAI programme ?
                                                                 Le datasheet : la bible du programmateur bas niveau
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                                 A vous de jouer
                                                   Conclusion




       Objectif :
       Faire un programme qui permet de contrˆler la luminosit´ d’une
                                             o                e
       LED en utilisant le PWM.
       D´tails techniques :
        e
               Utiliser le port B5 pour la sortie de la LED (PORTB7 pour
               arduino mega).
               Utiliser le TIMER de votre choix en mode PWM

       Attention
       Ne pas oublier l’include avr/interrupt.h
       Penser ` g´rer TOUS les vecteurs d’interruption
              a e



         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                 Hello world !
C’est bien, mais comment je peux faire un VRAI programme ?
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                   Conclusion




       Les pi`ges
             e
            ´
            Economiser la m´moire (probl`me de la pile)
                           e            e
               Faire attention avec les float, les . et les double
               ´
               Economiser la puissance de calcul (calcul en 8 bits)
               Faire attention ` l’overflow
                               a
               Rajouter l’option volatile devant les variables




         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr
Les outils de programmation
                                                 Hello world !
C’est bien, mais comment je peux faire un VRAI programme ?
                                           Les pi`ges ` ´viter
                                                 e    ae
                                                   Conclusion




       Nous avons vu :
               Les outils de programmation
               Ce qu’est un registre, et comment le configurer ` l’aide du
                                                              a
               datasheet
               L’utilisation des interruptions
       Des exemples simple :
               http ://github.com/leroilion/avr
       Bibliographie :
               Microcontrˆleurs AVR : des ATtiny aux ATmega de Christian
                         o
               Tavernier



         J´r´my Cheynet – INTech Yann Sionneau – MiNET
          ee                                                     Introduction au C avr

Contenu connexe

Tendances

Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 
Chapitre iii circuits séquentiels
Chapitre iii circuits séquentielsChapitre iii circuits séquentiels
Chapitre iii circuits séquentielsSana Aroussi
 
Systèmes de logiques séquentielles-Bascules
Systèmes de logiques séquentielles-BasculesSystèmes de logiques séquentielles-Bascules
Systèmes de logiques séquentielles-BasculesHatem Jebali
 
144603938 exercices-capteur
144603938 exercices-capteur144603938 exercices-capteur
144603938 exercices-capteurMohammed moudine
 
Guide de présentation de la Soutenance
Guide de présentation de la SoutenanceGuide de présentation de la Soutenance
Guide de présentation de la Soutenanceracouh
 
Ppt mesure et analyse des vibrations
Ppt   mesure et analyse des vibrationsPpt   mesure et analyse des vibrations
Ppt mesure et analyse des vibrationsMaxime MIGNANWANDE
 
Automates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdfAutomates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdfMENNANIZinedine
 
Electricité : sécurité électrique (CM1)
Electricité : sécurité électrique (CM1)Electricité : sécurité électrique (CM1)
Electricité : sécurité électrique (CM1)Christophe Palermo
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODwebmasterref68
 
Exercices corriges en electricite triphase
Exercices corriges en electricite triphaseExercices corriges en electricite triphase
Exercices corriges en electricite triphasemorin moli
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulationPierre Maréchal
 
Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...
Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...
Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...Imed Frioukh
 
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.pptArchitecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.pptwafawafa52
 
cours_supervision_2018.pptx
cours_supervision_2018.pptxcours_supervision_2018.pptx
cours_supervision_2018.pptxssuser1eaf0b
 

Tendances (20)

Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Chapitre iii circuits séquentiels
Chapitre iii circuits séquentielsChapitre iii circuits séquentiels
Chapitre iii circuits séquentiels
 
Systèmes de logiques séquentielles-Bascules
Systèmes de logiques séquentielles-BasculesSystèmes de logiques séquentielles-Bascules
Systèmes de logiques séquentielles-Bascules
 
144603938 exercices-capteur
144603938 exercices-capteur144603938 exercices-capteur
144603938 exercices-capteur
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
machine asynchrone.pdf
machine asynchrone.pdfmachine asynchrone.pdf
machine asynchrone.pdf
 
Guide de présentation de la Soutenance
Guide de présentation de la SoutenanceGuide de présentation de la Soutenance
Guide de présentation de la Soutenance
 
Système d'exploitation
Système d'exploitationSystème d'exploitation
Système d'exploitation
 
Metrologie
MetrologieMetrologie
Metrologie
 
Ppt mesure et analyse des vibrations
Ppt   mesure et analyse des vibrationsPpt   mesure et analyse des vibrations
Ppt mesure et analyse des vibrations
 
Automates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdfAutomates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdf
 
Electricité : sécurité électrique (CM1)
Electricité : sécurité électrique (CM1)Electricité : sécurité électrique (CM1)
Electricité : sécurité électrique (CM1)
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
 
Serie2
Serie2Serie2
Serie2
 
Exercices corriges en electricite triphase
Exercices corriges en electricite triphaseExercices corriges en electricite triphase
Exercices corriges en electricite triphase
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulation
 
Chap05
Chap05Chap05
Chap05
 
Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...
Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...
Toutes les schémas de démarrage d'un moteur asynchrone par www.genie electrom...
 
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.pptArchitecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
 
cours_supervision_2018.pptx
cours_supervision_2018.pptxcours_supervision_2018.pptx
cours_supervision_2018.pptx
 

En vedette

Afficheur 7 segments
Afficheur 7 segmentsAfficheur 7 segments
Afficheur 7 segmentsMaha Achouri
 
Initiation à La Robotique NXT
Initiation à La Robotique NXTInitiation à La Robotique NXT
Initiation à La Robotique NXTFrançois Rivest
 
Etat agriculture urbaine arrondissement ville-marie
Etat agriculture urbaine arrondissement ville-marieEtat agriculture urbaine arrondissement ville-marie
Etat agriculture urbaine arrondissement ville-marieLouis-Alexandre Cazal
 
Plan de estudios 2011 educacion basica
Plan de estudios 2011 educacion basicaPlan de estudios 2011 educacion basica
Plan de estudios 2011 educacion basicaJuli C
 
Diapo médiathèque
Diapo médiathèqueDiapo médiathèque
Diapo médiathèqueIdril3
 
Jeu sur l'intégration continue - Partie 1 Traditional
Jeu sur l'intégration continue - Partie 1 TraditionalJeu sur l'intégration continue - Partie 1 Traditional
Jeu sur l'intégration continue - Partie 1 TraditionalOswald De Riemaecker ☁
 
08 la-vie-tendre-et-insolites
08 la-vie-tendre-et-insolites08 la-vie-tendre-et-insolites
08 la-vie-tendre-et-insolitesGerard Houdinet
 
Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)
Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)
Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)Claude-Diane Bergeron
 
Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...
Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...
Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...Louis-Alexandre Cazal
 
Un africain un arbre au Niger et partout en Afrique et dans le Monde.
Un africain un arbre au Niger et partout en Afrique et dans le Monde.Un africain un arbre au Niger et partout en Afrique et dans le Monde.
Un africain un arbre au Niger et partout en Afrique et dans le Monde.Patrice Piardon
 
Mi empresa
Mi empresaMi empresa
Mi empresajosue
 
Catalogues et outils de recherche pour les ressources documentaires à l’ULg ...
 Catalogues et outils de recherche pour les ressources documentaires à l’ULg ... Catalogues et outils de recherche pour les ressources documentaires à l’ULg ...
Catalogues et outils de recherche pour les ressources documentaires à l’ULg ...François Renaville
 
Assises du Tourisme 2009 - H. Germain, ALT Hotels
Assises du Tourisme 2009 - H. Germain, ALT HotelsAssises du Tourisme 2009 - H. Germain, ALT Hotels
Assises du Tourisme 2009 - H. Germain, ALT Hotelsfgchevrier
 

En vedette (20)

Formation en robotique
Formation en robotiqueFormation en robotique
Formation en robotique
 
Robotique
RobotiqueRobotique
Robotique
 
Afficheur 7 segments
Afficheur 7 segmentsAfficheur 7 segments
Afficheur 7 segments
 
Initiation à La Robotique NXT
Initiation à La Robotique NXTInitiation à La Robotique NXT
Initiation à La Robotique NXT
 
Mini projet 3t2i se
Mini projet 3t2i seMini projet 3t2i se
Mini projet 3t2i se
 
Etat agriculture urbaine arrondissement ville-marie
Etat agriculture urbaine arrondissement ville-marieEtat agriculture urbaine arrondissement ville-marie
Etat agriculture urbaine arrondissement ville-marie
 
Plan de estudios 2011 educacion basica
Plan de estudios 2011 educacion basicaPlan de estudios 2011 educacion basica
Plan de estudios 2011 educacion basica
 
Diapo médiathèque
Diapo médiathèqueDiapo médiathèque
Diapo médiathèque
 
Ganatura
GanaturaGanatura
Ganatura
 
Jeu sur l'intégration continue - Partie 1 Traditional
Jeu sur l'intégration continue - Partie 1 TraditionalJeu sur l'intégration continue - Partie 1 Traditional
Jeu sur l'intégration continue - Partie 1 Traditional
 
08 la-vie-tendre-et-insolites
08 la-vie-tendre-et-insolites08 la-vie-tendre-et-insolites
08 la-vie-tendre-et-insolites
 
Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)
Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)
Mettreenplaceunestrategiewebmarketing 150115102019-conversion-gate01 (1)
 
Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...
Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...
Etat de l'agriculture urbaine à Montréal - Présentation arrondissement pierre...
 
Un africain un arbre au Niger et partout en Afrique et dans le Monde.
Un africain un arbre au Niger et partout en Afrique et dans le Monde.Un africain un arbre au Niger et partout en Afrique et dans le Monde.
Un africain un arbre au Niger et partout en Afrique et dans le Monde.
 
C2I2E
C2I2EC2I2E
C2I2E
 
Mi empresa
Mi empresaMi empresa
Mi empresa
 
Tennis - présentation ville
Tennis - présentation villeTennis - présentation ville
Tennis - présentation ville
 
Catalogues et outils de recherche pour les ressources documentaires à l’ULg ...
 Catalogues et outils de recherche pour les ressources documentaires à l’ULg ... Catalogues et outils de recherche pour les ressources documentaires à l’ULg ...
Catalogues et outils de recherche pour les ressources documentaires à l’ULg ...
 
Artes Rupestre
Artes RupestreArtes Rupestre
Artes Rupestre
 
Assises du Tourisme 2009 - H. Germain, ALT Hotels
Assises du Tourisme 2009 - H. Germain, ALT HotelsAssises du Tourisme 2009 - H. Germain, ALT Hotels
Assises du Tourisme 2009 - H. Germain, ALT Hotels
 

Similaire à Programmation en C sur microcontrôleur avr

Programmation C pour AVR 8 bits
Programmation C pour AVR 8 bitsProgrammation C pour AVR 8 bits
Programmation C pour AVR 8 bitsYann Sionneau
 
Petit guide des possibilités d'utilisation du logiciel scratch en technologie
Petit guide des possibilités d'utilisation du logiciel scratch en technologiePetit guide des possibilités d'utilisation du logiciel scratch en technologie
Petit guide des possibilités d'utilisation du logiciel scratch en technologieخالد المشكوري
 
Algorythmes et programmation
Algorythmes et programmationAlgorythmes et programmation
Algorythmes et programmationMohamed Latifi
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
Fiche TD sur les systèmes informatiques
Fiche TD sur les systèmes informatiquesFiche TD sur les systèmes informatiques
Fiche TD sur les systèmes informatiquesATPENSC-Group
 
presentation_arduino.pdf
presentation_arduino.pdfpresentation_arduino.pdf
presentation_arduino.pdfMajidAmmar
 
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...Arthur Lutz
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)salmazen
 
Introduction&composants
Introduction&composantsIntroduction&composants
Introduction&composantsAnissa Teyeb
 
Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012Gonéri Le Bouder
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourJean-Laurent de Morlhon
 
Programation système-CHAPITRE1.pptx
Programation système-CHAPITRE1.pptxProgramation système-CHAPITRE1.pptx
Programation système-CHAPITRE1.pptxDanielATCHADE
 
manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...
manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...
manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...FootballLovers9
 

Similaire à Programmation en C sur microcontrôleur avr (20)

Programmation C pour AVR 8 bits
Programmation C pour AVR 8 bitsProgrammation C pour AVR 8 bits
Programmation C pour AVR 8 bits
 
Petit guide des possibilités d'utilisation du logiciel scratch en technologie
Petit guide des possibilités d'utilisation du logiciel scratch en technologiePetit guide des possibilités d'utilisation du logiciel scratch en technologie
Petit guide des possibilités d'utilisation du logiciel scratch en technologie
 
Algorythmes et programmation
Algorythmes et programmationAlgorythmes et programmation
Algorythmes et programmation
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Fiche TD sur les systèmes informatiques
Fiche TD sur les systèmes informatiquesFiche TD sur les systèmes informatiques
Fiche TD sur les systèmes informatiques
 
presentation_arduino.pdf
presentation_arduino.pdfpresentation_arduino.pdf
presentation_arduino.pdf
 
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)
 
Machine-learning-FR.pdf
Machine-learning-FR.pdfMachine-learning-FR.pdf
Machine-learning-FR.pdf
 
Le tbi
Le tbiLe tbi
Le tbi
 
Atelier robotique
Atelier robotiqueAtelier robotique
Atelier robotique
 
Introduction&composants
Introduction&composantsIntroduction&composants
Introduction&composants
 
Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012Fusioninventory journees-perl-2012
Fusioninventory journees-perl-2012
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTour
 
Programation système-CHAPITRE1.pptx
Programation système-CHAPITRE1.pptxProgramation système-CHAPITRE1.pptx
Programation système-CHAPITRE1.pptx
 
sys.pdf
sys.pdfsys.pdf
sys.pdf
 
Guide d'activité PRIMO - Fréquence Écoles
Guide d'activité PRIMO - Fréquence ÉcolesGuide d'activité PRIMO - Fréquence Écoles
Guide d'activité PRIMO - Fréquence Écoles
 
manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...
manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...
manuel-de-cours-culture-et-techniques-avancees-du-numerique-2eme-annee-31-08-...
 

Programmation en C sur microcontrôleur avr

  • 1. Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion Programmation en C Pour avr 8 bits J´r´my Cheynet – INTech ee Yann Sionneau – MiNET www.club-intech.fr clubcode.minet.net intlab.minet.net github.com/leroilion/avr www.slideshare.net/leroilion34 14 octobre 2010 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 2. Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion 1 Les outils de programmation Quels sont les outils dont je dispose ? Exemple d’utilisation A vous de jouer 2 Hello world ! Structure d’un port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer 3 C’est bien, mais comment je peux faire un VRAI programme ? Qu’est-ce qu’un registe ? Le fil rouge Le datasheet : la bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer 4 Les pi`ges ` ´viter e ae J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 3. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion 1 Les outils de programmation Quels sont les outils dont je dispose ? Exemple d’utilisation A vous de jouer 2 Hello world ! Structure d’un port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer 3 C’est bien, mais comment je peux faire un VRAI programme ? Qu’est-ce qu’un registe ? Le fil rouge Le datasheet : la bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer 4 Les pi`ges ` ´viter e ae J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 4. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion Les diff´rents outils e avr-gcc (pour la compilation) avr-objcopy (pour cr´er le fichier hex) e avrdude (pour flasher) J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 5. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion avr-gcc avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c myfile1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c myfile2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 myfile1.o myfile2.o -o myappli avr-objcopy avr-objcopy -O ihex -R .eeprom myappli main.hex avrdude sudo avrdude -P /dev/ttyUSB0 -c stk500v1 -p m328p -b 57600 -D -U flash :w :main.hex J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 6. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion T´l´charger les sources ee http ://github.com/leroilion/avr Et t´l´charger dans les exemples le code blink.c ee Compiler les sources avr-gcc -Wall -mmcu=atmega328p -O2 -DF CPU=16000000 blink.c -o blink.out Cr´er le fichier hexad´cimal e e avr-objcopy -O ihex -R .eeprom blink.out blink.hex Flasher l’arduino sudo avrdude -P /dev/ttyUSB0 -c stk500v1 -p m328p -b 57600 -D -U flash :w :blink.hex sudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 7. Les outils de programmation Structure d’un port Hello world ! Ecrire un 1 ou un 0 C’est bien, mais comment je peux faire un VRAI programme ? Je te parle Les pi`ges ` ´viter e ae Tu me parles Conclusion A vous de jouer 1 Les outils de programmation Quels sont les outils dont je dispose ? Exemple d’utilisation A vous de jouer 2 Hello world ! Structure d’un port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer 3 C’est bien, mais comment je peux faire un VRAI programme ? Qu’est-ce qu’un registe ? Le fil rouge Le datasheet : la bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer 4 Les pi`ges ` ´viter e ae J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 8. Les outils de programmation Structure d’un port Hello world ! Ecrire un 1 ou un 0 C’est bien, mais comment je peux faire un VRAI programme ? Je te parle Les pi`ges ` ´viter e ae Tu me parles Conclusion A vous de jouer 3 registres Le registre DDRx Registre de configuration du port Le registre PORTx Registre de sortie du port Le registre PINx Registre de lecture du port J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 9. Les outils de programmation Structure d’un port Hello world ! Ecrire un 1 ou un 0 C’est bien, mais comment je peux faire un VRAI programme ? Je te parle Les pi`ges ` ´viter e ae Tu me parles Conclusion A vous de jouer Ecrire un 1 logique monport |= ( 1 << monbit ) ; #ifndef sbi #define sbi(port,bit) (port) |= (1 << (bit)) #endif Ecrire un 0 logique monport &= ∼( 1 << monbit ) ; #ifndef cbi #define cbi(port,bit) (port) &= ∼(1 << (bit)) #endif J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 10. Les outils de programmation Structure d’un port Hello world ! Ecrire un 1 ou un 0 C’est bien, mais comment je peux faire un VRAI programme ? Je te parle Les pi`ges ` ´viter e ae Tu me parles Conclusion A vous de jouer Configuration en sortie du port DDRB |= ( 1 << PORTB5 ) ; Ecriture sur un port PORTB |= ( 1 << PORTB5 ) ; //Pour mettre le bit 5 du port B `1 a PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre ` 0 a J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 11. Les outils de programmation Structure d’un port Hello world ! Ecrire un 1 ou un 0 C’est bien, mais comment je peux faire un VRAI programme ? Je te parle Les pi`ges ` ´viter e ae Tu me parles Conclusion A vous de jouer Configuration du port en entr´e e DDRx &= ∼( 1 << PORTxN ) ; Lecture du port PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–up PORTx &= ∼( 1 << PORTxN ) ; //Pour d´sactiver le pull–up e uint8 t etat = ( PINx & ( 1 << PINxN )) ; J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 12. Les outils de programmation Structure d’un port Hello world ! Ecrire un 1 ou un 0 C’est bien, mais comment je peux faire un VRAI programme ? Je te parle Les pi`ges ` ´viter e ae Tu me parles Conclusion A vous de jouer Objectif : Faire un programme qui ´claire une LED si un bouton est pouss´. e e D´tails techniques : e Utiliser le PORTB5 en sortie (PORTB7 pour arduino mega), et le PORTB0 en entr´e.e Attention Ne pas oublier le int main() dans le fichier principal. Penser ` rajouter l’include standard io.h a J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 13. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion § ¤ 1 #include <avr/io.h> 2 int main( void ) 3 { 4 DDRB |= ( 1 << PORTB5 ); 5 DDRB &= ~( 1 << PORTB0 ); 6 PORTB |= ( 1 << PORTB0 ); 7 while(42) 8 { 9 if( (PINB & ( 1 << PORTB0 )) ) 10 PORTB |= ( 1 << PORTB5 ); 11 else 12 PORTB &= ~( 1 << PORTB5 ); 13 } 14 return 0; 15 } ¦ ¥ J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 14. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion 1 Les outils de programmation Quels sont les outils dont je dispose ? Exemple d’utilisation A vous de jouer 2 Hello world ! Structure d’un port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer 3 C’est bien, mais comment je peux faire un VRAI programme ? Qu’est-ce qu’un registe ? Le fil rouge Le datasheet : la bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer 4 Les pi`ges ` ´viter e ae J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 15. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion C’est un octet en m´moire e qui permet de configurer le microcontrˆleur. o SREG – AVR Status Register I (bit 7) – Global interrupt enable T (bit 6) – Copy storage H (bit 5) – Half carry S (bit 4) – Sign bit V (bit 3) – Overflow bit N (bit 2) – Negative bit Z (bit 1) – Zero bit C (bit 0) – Carry J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 16. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion Objectif : Faire un programme qui fait clignoter une led en utilisant le TIMER1 sur 16 bits. Pour cela, on fera : On activera les interruptions d’overflow du TIMER1 On fera compter le TIMER1 pour avoir une interruption toutes les secondes. On regardera l’´tat de la PIN associ´e ` la LED pour le e e a changer. J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 17. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion http ://github.com/leroilion/avr TCCR1A – TCCR1B (page 132 – 134) Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H – TCNT1L (page 136) Incr´mentation toute les 64µs e J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 18. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion http ://github.com/leroilion/avr TCCR1A – TCCR1B (page 132 – 134) Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H – TCNT1L (page 136) Incr´mentation toute les 64µs =⇒ Compter jusqu’` 15625 e a J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 19. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion http ://github.com/leroilion/avr TCCR1A – TCCR1B (page 132 – 134) Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H – TCNT1L (page 136) Incr´mentation toute les 64µs =⇒ Compter jusqu’` 15625 =⇒ e a Mettre 49910 = 65535 - 15625 dans TCNT. TIMSK1 (page 137) Activer l’interruption d’overflow J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 20. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion http ://github.com/leroilion/avr TCCR1A – TCCR1B (page 132 – 134) Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H – TCNT1L (page 136) Incr´mentation toute les 64µs =⇒ Compter jusqu’` 15625 =⇒ e a Mettre 49910 = 65535 - 15625 dans TCNT. TIMSK1 (page 137) Activer l’interruption d’overflow =⇒ Activer TOIE1 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 21. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion § ¤ 1 #include avr/io.h 2 #include avr/interrupt.h 3 ... 4 TCCR1A = 0bxxxxxx00; 5 TCCR1B = 0bxxx00101; 6 TIMSK1 |= ( 1 TOIE1 ); 7 ... 8 ISR( TIMER1_OVF_vect) 9 { ... ¦ ¥ J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 22. Les outils de programmation Qu’est-ce qu’un registe ? Hello world ! Le fil rouge C’est bien, mais comment je peux faire un VRAI programme ? Le datasheet : la bible du programmateur bas niveau Les pi`ges ` ´viter e ae A vous de jouer Conclusion Objectif : Faire un programme qui permet de contrˆler la luminosit´ d’une o e LED en utilisant le PWM. D´tails techniques : e Utiliser le port B5 pour la sortie de la LED (PORTB7 pour arduino mega). Utiliser le TIMER de votre choix en mode PWM Attention Ne pas oublier l’include avr/interrupt.h Penser ` g´rer TOUS les vecteurs d’interruption a e J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 23. Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion Les pi`ges e ´ Economiser la m´moire (probl`me de la pile) e e Faire attention avec les float, les . et les double ´ Economiser la puissance de calcul (calcul en 8 bits) Faire attention ` l’overflow a Rajouter l’option volatile devant les variables J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 24. Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion Nous avons vu : Les outils de programmation Ce qu’est un registre, et comment le configurer ` l’aide du a datasheet L’utilisation des interruptions Des exemples simple : http ://github.com/leroilion/avr Bibliographie : Microcontrˆleurs AVR : des ATtiny aux ATmega de Christian o Tavernier J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr