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




                                          Programmation en C
                                             Pour avr 8 bits

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

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


                                                   14 octobre 2010


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




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




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



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

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

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

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


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

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

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

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




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




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




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

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



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




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

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




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




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

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




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




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




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


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




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

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

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




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




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




       http ://github.com/leroilion/avr

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

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




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




       http ://github.com/leroilion/avr

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

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




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




       http ://github.com/leroilion/avr

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

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

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



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




       http ://github.com/leroilion/avr

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

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

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



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




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




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

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



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




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




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




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



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

Contenu connexe

Tendances

Equipements d'interconnexion
Equipements d'interconnexionEquipements d'interconnexion
Equipements d'interconnexionInes Kechiche
 
TD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfInes Ben Hassine
 
Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)Mohsen Sadok
 
144603938 exercices-capteur
144603938 exercices-capteur144603938 exercices-capteur
144603938 exercices-capteurMohammed moudine
 
Curriculum informatique 2ème année Septembre 2019
Curriculum informatique 2ème année Septembre 2019Curriculum informatique 2ème année Septembre 2019
Curriculum informatique 2ème année Septembre 2019Amine Ellouze
 
Soutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassanSoutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassanriemmen
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Faycel Chaoua
 
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 2 Prof. Khalifa MANSOURICours  systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURIMansouri Khalifa
 
Rapport PFE-Implémentation de la solution Dual-Homing
Rapport PFE-Implémentation de la solution Dual-Homing Rapport PFE-Implémentation de la solution Dual-Homing
Rapport PFE-Implémentation de la solution Dual-Homing Hassane Sennouni
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésECAM Brussels Engineering School
 
Chap3 liaison de données
Chap3 liaison de donnéesChap3 liaison de données
Chap3 liaison de donnéesEns Kouba
 
Etude d’un répartiteur générale téléphonique
Etude d’un répartiteur générale téléphoniqueEtude d’un répartiteur générale téléphonique
Etude d’un répartiteur générale téléphoniqueAchref Ben helel
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étudeDonia Hammami
 
Chapitre iv entrées sorties et bus
Chapitre iv entrées sorties et busChapitre iv entrées sorties et bus
Chapitre iv entrées sorties et busSana Aroussi
 

Tendances (20)

Equipements d'interconnexion
Equipements d'interconnexionEquipements d'interconnexion
Equipements d'interconnexion
 
TD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdf
 
Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)
 
144603938 exercices-capteur
144603938 exercices-capteur144603938 exercices-capteur
144603938 exercices-capteur
 
Curriculum informatique 2ème année Septembre 2019
Curriculum informatique 2ème année Septembre 2019Curriculum informatique 2ème année Septembre 2019
Curriculum informatique 2ème année Septembre 2019
 
Soutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassanSoutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassan
 
GEmploi : Smart school timetable management software using RFID technology
GEmploi : Smart school timetable management software using RFID technologyGEmploi : Smart school timetable management software using RFID technology
GEmploi : Smart school timetable management software using RFID technology
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
 
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 2 Prof. Khalifa MANSOURICours  systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
 
Rapport PFE-Implémentation de la solution Dual-Homing
Rapport PFE-Implémentation de la solution Dual-Homing Rapport PFE-Implémentation de la solution Dual-Homing
Rapport PFE-Implémentation de la solution Dual-Homing
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
 
Chap3 liaison de données
Chap3 liaison de donnéesChap3 liaison de données
Chap3 liaison de données
 
E-learning
E-learningE-learning
E-learning
 
Etude d’un répartiteur générale téléphonique
Etude d’un répartiteur générale téléphoniqueEtude d’un répartiteur générale téléphonique
Etude d’un répartiteur générale téléphonique
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étude
 
Ch memoires
Ch memoiresCh memoires
Ch memoires
 
Chapitre iv entrées sorties et bus
Chapitre iv entrées sorties et busChapitre iv entrées sorties et bus
Chapitre iv entrées sorties et bus
 
Hdlc
HdlcHdlc
Hdlc
 
pfe génie civil
pfe génie civilpfe génie civil
pfe génie civil
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 

En vedette

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

En vedette (20)

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

Similaire à Programmation en C sur microcontrôleur avr

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

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

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

Programmation en C sur microcontrôleur avr

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