Académique Documents
Professionnel Documents
Culture Documents
14 octobre 2010
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Les outils de programmation Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer Hello world ! Structure dun port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer Cest bien, mais comment je peux faire un VRAI programme ? Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer Les pi`ges ` viter e ae
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer
Les outils de programmation Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer Hello world ! Structure dun port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer Cest bien, mais comment je peux faire un VRAI programme ? Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer Les pi`ges ` viter e ae
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer
Les dirents outils e avr-gcc (pour la compilation) avr-objcopy (pour crer le chier hex) e avrdude (pour asher)
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer
avr-gcc avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c myle1.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -c myle2.c avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 myle1.o myle2.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 ash :w :main.hex
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer
Tlcharger les sources ee http ://github.com/leroilion/avr Et tlcharger 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 Crer le chier hexadcimal e e avr-objcopy -O ihex -R .eeprom blink.out blink.hex Flasher larduino sudo avrdude -P /dev/ttyUSB0 -c stk500v1 -p m328p -b 57600 -D -U ash :w :blink.hex sudo avrdude -c usbtiny -p m328p -U ash :w :blink.hex
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Les outils de programmation Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer Hello world ! Structure dun port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer Cest bien, mais comment je peux faire un VRAI programme ? Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer Les pi`ges ` viter e ae
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
3 registres Le registre DDRx Registre de conguration du port Le registre PORTx Registre de sortie du port Le registre PINx Registre de lecture du port
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Ecrire un 1 logique myport |= ( 1 << mybit ) ; #ifndef sbi #dene sbi(port,bit) (port) |= (1 << (bit)) #endif Ecrire un 0 logique myport &= ( 1 << mybit ) ; #ifndef cbi #dene cbi(port,bit) (port) &= (1 << (bit)) #endif
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Conguration 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
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Conguration du port en entre e DDRx &= ( 1 << PORTxN ) ; Lecture du port PORTx |= ( 1 << PORTxN ) ; //Pour activer le pullup PORTx &= ( 1 << PORTxN ) ; //Pour dsactiver le pullup e uint8 t etat = ( PINx & ( 1 << PINxN )) ;
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Objectif : Faire un programme qui claire une LED si un bouton est pouss. e e Dtails techniques : e Utiliser le PORTB5 en sortie (PORTB7 pour arduino mega), et le PORTB0 en entre. e Attention Ne pas oublier le int main() dans le chier principal. Penser ` rajouter linclude standard io.h a
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include <avr/io.h> int main( void ) { DDRB |= ( 1 << PORTB5 ); DDRB &= ~( 1 << PORTB0 ); PORTB |= ( 1 << PORTB0 ); while(42) { if( (PINB & ( 1 << PORTB0 )) ) PORTB |= ( 1 << PORTB5 ); else PORTB &= ~( 1 << PORTB5 ); } return 0; }
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
Les outils de programmation Quels sont les outils dont je dispose ? Exemple dutilisation A vous de jouer Hello world ! Structure dun port Ecrire un 1 ou un 0 Je te parle Tu me parles A vous de jouer Cest bien, mais comment je peux faire un VRAI programme ? Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau Tu me vois, tu me vois plus A vous de jouer Les pi`ges ` viter e ae
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
Cest un octet en mmoire e qui permet de congurer le microcontrleur. 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) Overow bit N (bit 2) Negative bit Z (bit 1) Zero bit C (bit 0) Carry
Jrmy Cheynet INTech Yann Sionneau MiNET ee Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
Objectif : Faire un programme qui fait clignoter une led en utilisant le TIMER1 sur 16 bits. Pour cela, on fera : On activera les interruptions doverow du TIMER1 On fera compter le TIMER1 pour avoir une interruption toutes les secondes. On regardera ltat de la PIN associe ` la LED pour le e e a changer.
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
http ://github.com/leroilion/avr TCCR1A TCCR1B (page 132 134) Mode normal (WGMx = 0 ), Source dhorloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H TCNT1L (page 136) Incrmentation toute les 64s e
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
http ://github.com/leroilion/avr TCCR1A TCCR1B (page 132 134) Mode normal (WGMx = 0 ), Source dhorloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H TCNT1L (page 136) Incrmentation toute les 64s = Compter jusqu` 15625 e a
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
http ://github.com/leroilion/avr TCCR1A TCCR1B (page 132 134) Mode normal (WGMx = 0 ), Source dhorloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H TCNT1L (page 136) Incrmentation toute les 64s = Compter jusqu` 15625 = e a Mettre 49910 = 65535 - 15625 dans TCNT. TIMSK1 (page 137) Activer linterruption doverow
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
http ://github.com/leroilion/avr TCCR1A TCCR1B (page 132 134) Mode normal (WGMx = 0 ), Source dhorloge (CSx = 101), Pas de comparaison (COMx = 0) TCNT1H TCNT1L (page 136) Incrmentation toute les 64s = Compter jusqu` 15625 = e a Mettre 49910 = 65535 - 15625 dans TCNT. TIMSK1 (page 137) Activer linterruption doverow = Activer TOIE1
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
1 2 3 4 5 6 7 8 9
#include <avr/io.h> #include <avr/interrupt.h> ... TCCR1A = 0bxxxxxx00; TCCR1B = 0bxxx00101; TIMSK1 |= ( 1 << TOIE1 ); ... ISR( TIMER1_OVF_vect) { ...
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Quest-ce quun registe ? Le l rouge Le datasheet : LA bible du programmateur bas niveau A vous de jouer
Objectif : Faire un programme qui permet de contrler la luminosit dune o e LED en utilisant le PWM. Dtails 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 linclude <avr/interrupt.h> Penser ` grer TOUS les vecteurs dinterruption a e
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Traps Economiser la mmoire (probl`me de la pile) e e Faire attention avec les oat, les . et les double Economiser la puissance de calcul (calcul en 8 bits) Faire attention ` loverow a Rajouter loption volatile devant les variables
Introduction au C avr
Les outils de programmation Hello world ! Cest bien, mais comment je peux faire un VRAI programme ? Les pi`ges ` viter e ae Conclusion
Nous avons vu : Les outils de programmation Ce quest un registre, et comment le congurer ` laide du a datasheet Lutilisation des interruptions Des exemples simple : http ://github.com/leroilion/avr Bibliographie : Microcontrleurs AVR : des ATtiny aux ATmega de Christian o Tavernier
Introduction au C avr