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


                                                   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




         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)




         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




         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




         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
       monfichier1.c




         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
       monfichier1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier2.c




         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
       monfichier1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier2.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o
       monappli monfichier1.o monfichier2.o




         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
       monfichier1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier2.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o
       monappli monfichier1.o monfichier2.o

       avr-objcopy




         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
       monfichier1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier2.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o
       monappli monfichier1.o monfichier2.o

       avr-objcopy
       avr-objcopy -O ihex -R .eeprom monappli 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



       avr-gcc
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier2.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o
       monappli monfichier1.o monfichier2.o

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

       avrdude




         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
       monfichier1.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c
       monfichier2.c
       avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o
       monappli monfichier1.o monfichier2.o

       avr-objcopy
       avr-objcopy -O ihex -R .eeprom monappli 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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




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




         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




         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




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




         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




         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




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




         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




         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




         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




         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




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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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




         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



         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 :




         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




         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.




         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




         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)




         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.




         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.




         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




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




         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




         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




         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




         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




         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)




         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




         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 :




         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




         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
               Comment configurer, lire et ´crire sur un port
                                          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



       Nous avons vu :
               Les outils de programmation
               Comment configurer, lire et ´crire sur un port
                                          e
               Ce qu’est un registre, et comment le configurer ` l’aide du
                                                              a
               datasheet




         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
               Comment configurer, lire et ´crire sur un port
                                          e
               Ce qu’est un registre, et comment le configurer ` l’aide du
                                                              a
               datasheet
               L’utilisation des interruptions




         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
               Comment configurer, lire et ´crire sur un port
                                          e
               Ce qu’est un registre, et comment le configurer ` l’aide du
                                                              a
               datasheet
               L’utilisation des interruptions
       Des exemples simple :




         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
               Comment configurer, lire et ´crire sur un port
                                          e
               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 :




         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
               Comment configurer, lire et ´crire sur un port
                                          e
               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

Programmation C pour AVR 8 bits

  • 1.
    Les outils deprogrammation 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 14 octobre 2010 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 2.
    Les outils deprogrammation 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 deprogrammation 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 deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 5.
    Les outils deprogrammation 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) J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 6.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 7.
    Les outils deprogrammation 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
  • 8.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 9.
    Les outils deprogrammation 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 monfichier1.c J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 10.
    Les outils deprogrammation 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 monfichier1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c monfichier2.c J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 11.
    Les outils deprogrammation 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 monfichier1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c monfichier2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o monappli monfichier1.o monfichier2.o J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 12.
    Les outils deprogrammation 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 monfichier1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c monfichier2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o monappli monfichier1.o monfichier2.o avr-objcopy J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 13.
    Les outils deprogrammation 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 monfichier1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c monfichier2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o monappli monfichier1.o monfichier2.o avr-objcopy avr-objcopy -O ihex -R .eeprom monappli main.hex J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 14.
    Les outils deprogrammation 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 monfichier1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c monfichier2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o monappli monfichier1.o monfichier2.o avr-objcopy avr-objcopy -O ihex -R .eeprom monappli main.hex avrdude J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 15.
    Les outils deprogrammation 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 monfichier1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c monfichier2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -o monappli monfichier1.o monfichier2.o avr-objcopy avr-objcopy -O ihex -R .eeprom monappli 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
  • 16.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 17.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 18.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 19.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 20.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 21.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 22.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 23.
    Les outils deprogrammation 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
  • 24.
    Les outils deprogrammation 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
  • 25.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 26.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 27.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 28.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 29.
    Les outils deprogrammation 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
  • 30.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 31.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 32.
    Les outils deprogrammation 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 ) ; J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 33.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 34.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 35.
    Les outils deprogrammation 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 ) ; J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 36.
    Les outils deprogrammation 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
  • 37.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 38.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 39.
    Les outils deprogrammation 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 ) ; J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 40.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 41.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 42.
    Les outils deprogrammation 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
  • 43.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 44.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 45.
    Les outils deprogrammation 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 ) ; J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 46.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 47.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 48.
    Les outils deprogrammation 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
  • 49.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 50.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 51.
    Les outils deprogrammation 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
  • 52.
    Les outils deprogrammation 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
  • 53.
    Les outils deprogrammation 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
  • 54.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 55.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 56.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 57.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 58.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 59.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 60.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 61.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 62.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 63.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 64.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 65.
    Les outils deprogrammation 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
  • 66.
    Les outils deprogrammation 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 : J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 67.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 68.
    Les outils deprogrammation 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. J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 69.
    Les outils deprogrammation 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
  • 70.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 71.
    Les outils deprogrammation 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) J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 72.
    Les outils deprogrammation 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
  • 73.
    Les outils deprogrammation 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
  • 74.
    Les outils deprogrammation 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. J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 75.
    Les outils deprogrammation 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
  • 76.
    Les outils deprogrammation 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
  • 77.
    Les outils deprogrammation 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
  • 78.
    Les outils deprogrammation 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. J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 79.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 80.
    Les outils deprogrammation 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). J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 81.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 82.
    Les outils deprogrammation 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
  • 83.
    Les outils deprogrammation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion Les pi`ges e J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 84.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 85.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 86.
    Les outils deprogrammation 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) J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 87.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 88.
    Les outils deprogrammation 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
  • 89.
    Les outils deprogrammation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion Nous avons vu : J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 90.
    Les outils deprogrammation 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 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 91.
    Les outils deprogrammation 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 Comment configurer, lire et ´crire sur un port e J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 92.
    Les outils deprogrammation 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 Comment configurer, lire et ´crire sur un port e Ce qu’est un registre, et comment le configurer ` l’aide du a datasheet J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 93.
    Les outils deprogrammation 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 Comment configurer, lire et ´crire sur un port e Ce qu’est un registre, et comment le configurer ` l’aide du a datasheet L’utilisation des interruptions J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 94.
    Les outils deprogrammation 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 Comment configurer, lire et ´crire sur un port e Ce qu’est un registre, et comment le configurer ` l’aide du a datasheet L’utilisation des interruptions Des exemples simple : J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 95.
    Les outils deprogrammation 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 Comment configurer, lire et ´crire sur un port e 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 : J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 96.
    Les outils deprogrammation 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 Comment configurer, lire et ´crire sur un port e 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