SlideShare uma empresa Scribd logo
1 de 96
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

R3GÉNÉRER vos ventes
R3GÉNÉRER vos ventesR3GÉNÉRER vos ventes
R3GÉNÉRER vos ventesNicolaNavratil
 
Ressources normalisation
Ressources normalisationRessources normalisation
Ressources normalisationrazougmed
 
Seguridad en las instalaciones eléctricas
Seguridad en las instalaciones eléctricasSeguridad en las instalaciones eléctricas
Seguridad en las instalaciones eléctricasMarkius Aurelios
 
PRESENTACIÓ CURS 2010-2011
PRESENTACIÓ CURS 2010-2011PRESENTACIÓ CURS 2010-2011
PRESENTACIÓ CURS 2010-2011guest7ee1090
 
Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...
Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...
Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...Pierre Jean Duvivier
 
Ordinador personal
Ordinador personalOrdinador personal
Ordinador personalenricsoriano
 
La Mémoire du Journalisme Vénézuélien
La Mémoire du Journalisme VénézuélienLa Mémoire du Journalisme Vénézuélien
La Mémoire du Journalisme VénézuélienCarolinedeO
 
La pensée politique de Dostoievski
La pensée politique de DostoievskiLa pensée politique de Dostoievski
La pensée politique de DostoievskiRoublev
 
Social Media PME Multimedia
Social Media PME MultimediaSocial Media PME Multimedia
Social Media PME Multimediavmulard
 
Festejos del Bicentenario en la 277
Festejos del Bicentenario en la 277Festejos del Bicentenario en la 277
Festejos del Bicentenario en la 277errantedenod
 
Mallorca, Vivez la Méditerranée
Mallorca, Vivez la MéditerranéeMallorca, Vivez la Méditerranée
Mallorca, Vivez la Méditerranéeatb20
 
Université d'été dakar 2010 fiche technique
Université d'été dakar 2010 fiche techniqueUniversité d'été dakar 2010 fiche technique
Université d'été dakar 2010 fiche techniquebasileniane
 
Boursorameurs
BoursorameursBoursorameurs
Boursorameurstoonsai
 
Ku sesleri
Ku sesleriKu sesleri
Ku sesleriraad23
 
Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?
Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?
Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?OMIRAJ
 

Destaque (20)

R3GÉNÉRER vos ventes
R3GÉNÉRER vos ventesR3GÉNÉRER vos ventes
R3GÉNÉRER vos ventes
 
Ressources normalisation
Ressources normalisationRessources normalisation
Ressources normalisation
 
Diapo Licences
Diapo LicencesDiapo Licences
Diapo Licences
 
Seguridad en las instalaciones eléctricas
Seguridad en las instalaciones eléctricasSeguridad en las instalaciones eléctricas
Seguridad en las instalaciones eléctricas
 
Oiseaux aquatiques du canada cb
Oiseaux aquatiques du canada cbOiseaux aquatiques du canada cb
Oiseaux aquatiques du canada cb
 
PRESENTACIÓ CURS 2010-2011
PRESENTACIÓ CURS 2010-2011PRESENTACIÓ CURS 2010-2011
PRESENTACIÓ CURS 2010-2011
 
Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...
Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...
Petit manuel rapide en Français pour le Mirror Trader de Tradency avec ThirdB...
 
Ordinador personal
Ordinador personalOrdinador personal
Ordinador personal
 
La Mémoire du Journalisme Vénézuélien
La Mémoire du Journalisme VénézuélienLa Mémoire du Journalisme Vénézuélien
La Mémoire du Journalisme Vénézuélien
 
La pensée politique de Dostoievski
La pensée politique de DostoievskiLa pensée politique de Dostoievski
La pensée politique de Dostoievski
 
Social Media PME Multimedia
Social Media PME MultimediaSocial Media PME Multimedia
Social Media PME Multimedia
 
Festejos del Bicentenario en la 277
Festejos del Bicentenario en la 277Festejos del Bicentenario en la 277
Festejos del Bicentenario en la 277
 
Mallorca, Vivez la Méditerranée
Mallorca, Vivez la MéditerranéeMallorca, Vivez la Méditerranée
Mallorca, Vivez la Méditerranée
 
Université d'été dakar 2010 fiche technique
Université d'été dakar 2010 fiche techniqueUniversité d'été dakar 2010 fiche technique
Université d'été dakar 2010 fiche technique
 
2015
20152015
2015
 
Boursorameurs
BoursorameursBoursorameurs
Boursorameurs
 
Ku sesleri
Ku sesleriKu sesleri
Ku sesleri
 
Miljö french
Miljö frenchMiljö french
Miljö french
 
Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?
Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?
Votre stratégie d\'épargne-études obtiendrait-elle une bonne note ?
 
Festival botte foin
Festival botte foin Festival botte foin
Festival botte foin
 

Mais de Yann Sionneau

Porting NetBSD to the open source LatticeMico32 CPU
Porting NetBSD to the open source LatticeMico32 CPUPorting NetBSD to the open source LatticeMico32 CPU
Porting NetBSD to the open source LatticeMico32 CPUYann Sionneau
 
LatticeMico32 MMU documentation
LatticeMico32 MMU documentationLatticeMico32 MMU documentation
LatticeMico32 MMU documentationYann Sionneau
 
Projet de fin d'études : middleware de communication de groupe
Projet de fin d'études : middleware de communication de groupeProjet de fin d'études : middleware de communication de groupe
Projet de fin d'études : middleware de communication de groupeYann Sionneau
 
Milkymist System-on-Chip at Open Source Hardware User Group 8
Milkymist System-on-Chip at Open Source Hardware User Group 8Milkymist System-on-Chip at Open Source Hardware User Group 8
Milkymist System-on-Chip at Open Source Hardware User Group 8Yann Sionneau
 

Mais de Yann Sionneau (6)

Porting NetBSD to the open source LatticeMico32 CPU
Porting NetBSD to the open source LatticeMico32 CPUPorting NetBSD to the open source LatticeMico32 CPU
Porting NetBSD to the open source LatticeMico32 CPU
 
LatticeMico32 MMU documentation
LatticeMico32 MMU documentationLatticeMico32 MMU documentation
LatticeMico32 MMU documentation
 
Projet de fin d'études : middleware de communication de groupe
Projet de fin d'études : middleware de communication de groupeProjet de fin d'études : middleware de communication de groupe
Projet de fin d'études : middleware de communication de groupe
 
Milkymist System-on-Chip at Open Source Hardware User Group 8
Milkymist System-on-Chip at Open Source Hardware User Group 8Milkymist System-on-Chip at Open Source Hardware User Group 8
Milkymist System-on-Chip at Open Source Hardware User Group 8
 
Présentation FPGA
Présentation FPGAPrésentation FPGA
Présentation FPGA
 
Introduction à git
Introduction à gitIntroduction à git
Introduction à git
 

Programmation C pour AVR 8 bits

  • 1. Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion Programmation en C Pour avr 8 bits J´r´my Cheynet – INTech ee Yann Sionneau – MiNET www.club-intech.fr clubcode.minet.net intlab.minet.net github.com/leroilion/avr 14 octobre 2010 J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 2. Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` ´viter e ae Conclusion 1 Les outils de programmation Quels sont les outils dont je dispose ? Exemple d’utilisation A vous de jouer 2 Hello world ! Structure d’un port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer 3 C’est bien, mais comment je peux faire un VRAI programme ? Qu’est-ce qu’un registe ? Le fil rouge Le datasheet : la bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer 4 Les pi`ges ` ´viter e ae J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 3. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion 1 Les outils de programmation Quels sont les outils dont je dispose ? Exemple d’utilisation A vous de jouer 2 Hello world ! Structure d’un port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer 3 C’est bien, mais comment je peux faire un VRAI programme ? Qu’est-ce qu’un registe ? Le fil rouge Le datasheet : la bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer 4 Les pi`ges ` ´viter e ae J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 4. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion Les diff´rents outils e J´r´my Cheynet – INTech Yann Sionneau – MiNET ee Introduction au C avr
  • 5. Les outils de programmation Hello world ! Quels sont les outils dont je dispose ? C’est bien, mais comment je peux faire un VRAI programme ? Exemple d’utilisation Les pi`ges ` ´viter e ae A vous de jouer Conclusion 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 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. 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
  • 46. 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
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. 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
  • 57. 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
  • 58. 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
  • 59. 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
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. 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
  • 65. 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
  • 66. 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
  • 67. 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
  • 68. 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
  • 69. 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
  • 70. 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
  • 71. 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
  • 72. 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
  • 73. 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
  • 74. 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
  • 75. 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
  • 76. 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
  • 77. 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
  • 78. 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
  • 79. 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
  • 80. 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
  • 81. 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
  • 82. 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
  • 83. 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
  • 84. 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
  • 85. 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
  • 86. 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
  • 87. 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
  • 88. 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
  • 89. 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
  • 90. 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
  • 91. 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
  • 92. 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
  • 93. 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
  • 94. 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
  • 95. 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
  • 96. 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