96
Les outils de programmation Hello world ! C’est bien, mais comment je peux faire un VRAI programme ? Les pi` eges ` eviter Conclusion Programmation en C Pour avr 8 bits er´ emy Cheynet – INTech Yann Sionneau – MiNET www.club-intech.fr clubcode.minet.net intlab.minet.net github.com/leroilion/avr 14 octobre 2010 er´ emy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Programmation C pour AVR 8 bits

Embed Size (px)

DESCRIPTION

Introduction à la programmation en C pour AVR 8 bits

Citation preview

Page 1: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Programmation en CPour avr 8 bits

Jeremy Cheynet – INTechYann Sionneau – MiNET

www.club-intech.frclubcode.minet.net

intlab.minet.netgithub.com/leroilion/avr

14 octobre 2010

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 2: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

1 Les outils de programmationQuels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

2 Hello world !Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 C’est bien, mais comment je peux faire un VRAI programme ?Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauTu me vois, tu me vois plusA vous de jouer

4 Les pieges a eviterJeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 3: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

1 Les outils de programmationQuels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

2 Hello world !Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 C’est bien, mais comment je peux faire un VRAI programme ?Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauTu me vois, tu me vois plusA vous de jouer

4 Les pieges a eviterJeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 4: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Les differents outils

avr-gcc (pour la compilation)

avr-objcopy (pour creer le fichier hex)

avrdude (pour flasher)

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 5: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Les differents outils

avr-gcc (pour la compilation)

avr-objcopy (pour creer le fichier hex)

avrdude (pour flasher)

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 6: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Les differents outils

avr-gcc (pour la compilation)

avr-objcopy (pour creer le fichier hex)

avrdude (pour flasher)

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 7: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Les differents outils

avr-gcc (pour la compilation)

avr-objcopy (pour creer le fichier hex)

avrdude (pour flasher)

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 8: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 9: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.c

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 10: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.c

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 11: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 12: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 13: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 14: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 15: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

avr-gcc

avr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier1.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -cmonfichier2.cavr-gcc -Wall -mmcu=atmega328p -DF CPU=16000000 -omonappli 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 16: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 17: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 18: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 19: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 20: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 21: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 22: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 23: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Quels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

Telecharger les sources

http ://github.com/leroilion/avrEt telecharger dans les exemples le code blink.c

Compiler les sources

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

Creer le fichier hexadecimal

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.hexsudo avrdude -c usbtiny -p m328p -U flash :w :blink.hex

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 24: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

1 Les outils de programmationQuels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

2 Hello world !Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 C’est bien, mais comment je peux faire un VRAI programme ?Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauTu me vois, tu me vois plusA vous de jouer

4 Les pieges a eviterJeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 25: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 registres

Le registre DDRxRegistre de configuration du port

Le registre PORTxRegistre de sortie du port

Le registre PINxRegistre de lecture du port

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 26: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 registres

Le registre DDRxRegistre de configuration du port

Le registre PORTxRegistre de sortie du port

Le registre PINxRegistre de lecture du port

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 27: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 registres

Le registre DDRxRegistre de configuration du port

Le registre PORTxRegistre de sortie du port

Le registre PINxRegistre de lecture du port

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 28: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 registres

Le registre DDRxRegistre de configuration du port

Le registre PORTxRegistre de sortie du port

Le registre PINxRegistre de lecture du port

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 29: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 registres

Le registre DDRxRegistre de configuration du port

Le registre PORTxRegistre de sortie du port

Le registre PINxRegistre de lecture du port

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 30: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 31: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 32: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 33: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 34: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 35: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 36: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 37: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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 Ba 1PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre a 0

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 38: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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 Ba 1PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre a 0

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 39: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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 Ba 1PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre a 0

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 40: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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 Ba 1PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre a 0

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 41: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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 Ba 1

PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre a 0

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 42: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA 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 Ba 1PORTB &= ∼( 1 << PORTB5 ) ; //Pour mettre a 0

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 43: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Configuration du port en entree

DDRx &= ∼( 1 << PORTxN ) ;

Lecture du port

PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–upPORTx &= ∼( 1 << PORTxN ) ; //Pour desactiver le pull–upuint8 t etat = ( PINx & ( 1 << PINxN )) ;

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 44: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Configuration du port en entree

DDRx &= ∼( 1 << PORTxN ) ;

Lecture du port

PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–upPORTx &= ∼( 1 << PORTxN ) ; //Pour desactiver le pull–upuint8 t etat = ( PINx & ( 1 << PINxN )) ;

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 45: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Configuration du port en entree

DDRx &= ∼( 1 << PORTxN ) ;

Lecture du port

PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–upPORTx &= ∼( 1 << PORTxN ) ; //Pour desactiver le pull–upuint8 t etat = ( PINx & ( 1 << PINxN )) ;

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 46: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Configuration du port en entree

DDRx &= ∼( 1 << PORTxN ) ;

Lecture du port

PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–upPORTx &= ∼( 1 << PORTxN ) ; //Pour desactiver le pull–upuint8 t etat = ( PINx & ( 1 << PINxN )) ;

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 47: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Configuration du port en entree

DDRx &= ∼( 1 << PORTxN ) ;

Lecture du port

PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–upPORTx &= ∼( 1 << PORTxN ) ; //Pour desactiver le pull–up

uint8 t etat = ( PINx & ( 1 << PINxN )) ;

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 48: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Configuration du port en entree

DDRx &= ∼( 1 << PORTxN ) ;

Lecture du port

PORTx |= ( 1 << PORTxN ) ; //Pour activer le pull–upPORTx &= ∼( 1 << PORTxN ) ; //Pour desactiver le pull–upuint8 t etat = ( PINx & ( 1 << PINxN )) ;

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 49: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Objectif :Faire un programme qui eclaire une LED si un bouton est pousse.

Details techniques :Utiliser le PORTB5 en sortie (PORTB7 pour arduino mega), et lePORTB0 en entree.

Attention

Ne pas oublier le int main() dans le fichier principal.Penser a rajouter l’include standard io.h

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 50: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Objectif :Faire un programme qui eclaire une LED si un bouton est pousse.Details techniques :Utiliser le PORTB5 en sortie (PORTB7 pour arduino mega), et lePORTB0 en entree.

Attention

Ne pas oublier le int main() dans le fichier principal.Penser a rajouter l’include standard io.h

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 51: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

Objectif :Faire un programme qui eclaire une LED si un bouton est pousse.Details techniques :Utiliser le PORTB5 en sortie (PORTB7 pour arduino mega), et lePORTB0 en entree.

Attention

Ne pas oublier le int main() dans le fichier principal.Penser a rajouter l’include standard io.h

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 52: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer� �

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 }� �Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 53: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

1 Les outils de programmationQuels sont les outils dont je dispose ?Exemple d’utilisationA vous de jouer

2 Hello world !Structure d’un portEcrire un 1 ou un 0Je te parleTu me parlesA vous de jouer

3 C’est bien, mais comment je peux faire un VRAI programme ?Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauTu me vois, tu me vois plusA vous de jouer

4 Les pieges a eviterJeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 54: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoire

qui permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 55: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 56: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 57: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 58: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 59: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 60: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 61: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 62: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 63: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 64: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 65: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

C’est un octet en memoirequi permet de configurer le microcontroleur.

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

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 66: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui fait clignoter une led en utilisant leTIMER1 sur 16 bits.Pour cela, on fera :

On activera les interruptions d’overflow du TIMER1

On fera compter le TIMER1 pour avoir une interruptiontoutes les secondes.

On regardera l’etat de la PIN associee a la LED pour lechanger.

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 67: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui fait clignoter une led en utilisant leTIMER1 sur 16 bits.Pour cela, on fera :

On activera les interruptions d’overflow du TIMER1

On fera compter le TIMER1 pour avoir une interruptiontoutes les secondes.

On regardera l’etat de la PIN associee a la LED pour lechanger.

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 68: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui fait clignoter une led en utilisant leTIMER1 sur 16 bits.Pour cela, on fera :

On activera les interruptions d’overflow du TIMER1

On fera compter le TIMER1 pour avoir une interruptiontoutes les secondes.

On regardera l’etat de la PIN associee a la LED pour lechanger.

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 69: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui fait clignoter une led en utilisant leTIMER1 sur 16 bits.Pour cela, on fera :

On activera les interruptions d’overflow du TIMER1

On fera compter le TIMER1 pour avoir une interruptiontoutes les secondes.

On regardera l’etat de la PIN associee a la LED pour lechanger.

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 70: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs =⇒ Compter jusqu’a 15625 =⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow =⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 71: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs =⇒ Compter jusqu’a 15625 =⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow =⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 72: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs

=⇒ Compter jusqu’a 15625 =⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow =⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 73: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs =⇒ Compter jusqu’a 15625

=⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow =⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 74: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs =⇒ Compter jusqu’a 15625 =⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow =⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 75: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs =⇒ Compter jusqu’a 15625 =⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow

=⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 76: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

http ://github.com/leroilion/avr

TCCR1A – TCCR1B (page 132 – 134)

Mode normal (WGMx = 0 ), Source d’horloge (CSx = 101), Pasde comparaison (COMx = 0)

TCNT1H – TCNT1L (page 136)

Incrementation toute les 64µs =⇒ Compter jusqu’a 15625 =⇒Mettre 49910 = 65535 - 15625 dans TCNT.

TIMSK1 (page 137)

Activer l’interruption d’overflow =⇒ Activer TOIE1

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 77: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer� �

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 { ...� �

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 78: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui permet de controler la luminosite d’uneLED en utilisant le PWM.

Details techniques :

Utiliser le port B5 pour la sortie de la LED (PORTB7 pourarduino mega).

Utiliser le TIMER de votre choix en mode PWM

Attention

Ne pas oublier l’include <avr/interrupt.h>Penser a gerer TOUS les vecteurs d’interruption

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 79: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui permet de controler la luminosite d’uneLED en utilisant le PWM.Details techniques :

Utiliser le port B5 pour la sortie de la LED (PORTB7 pourarduino mega).

Utiliser le TIMER de votre choix en mode PWM

Attention

Ne pas oublier l’include <avr/interrupt.h>Penser a gerer TOUS les vecteurs d’interruption

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 80: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui permet de controler la luminosite d’uneLED en utilisant le PWM.Details techniques :

Utiliser le port B5 pour la sortie de la LED (PORTB7 pourarduino mega).

Utiliser le TIMER de votre choix en mode PWM

Attention

Ne pas oublier l’include <avr/interrupt.h>Penser a gerer TOUS les vecteurs d’interruption

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 81: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui permet de controler la luminosite d’uneLED en utilisant le PWM.Details techniques :

Utiliser le port B5 pour la sortie de la LED (PORTB7 pourarduino mega).

Utiliser le TIMER de votre choix en mode PWM

Attention

Ne pas oublier l’include <avr/interrupt.h>Penser a gerer TOUS les vecteurs d’interruption

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 82: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Qu’est-ce qu’un registe ?Le fil rougeLe datasheet : la bible du programmateur bas niveauA vous de jouer

Objectif :Faire un programme qui permet de controler la luminosite d’uneLED en utilisant le PWM.Details techniques :

Utiliser le port B5 pour la sortie de la LED (PORTB7 pourarduino mega).

Utiliser le TIMER de votre choix en mode PWM

Attention

Ne pas oublier l’include <avr/interrupt.h>Penser a gerer TOUS les vecteurs d’interruption

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 83: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Les pieges

Economiser la memoire (probleme de la pile)

Faire attention avec les float, les . et les double

Economiser la puissance de calcul (calcul en 8 bits)

Faire attention a l’overflow

Rajouter l’option volatile devant les variables

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 84: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Les pieges

Economiser la memoire (probleme de la pile)

Faire attention avec les float, les . et les double

Economiser la puissance de calcul (calcul en 8 bits)

Faire attention a l’overflow

Rajouter l’option volatile devant les variables

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 85: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Les pieges

Economiser la memoire (probleme de la pile)

Faire attention avec les float, les . et les double

Economiser la puissance de calcul (calcul en 8 bits)

Faire attention a l’overflow

Rajouter l’option volatile devant les variables

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 86: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Les pieges

Economiser la memoire (probleme de la pile)

Faire attention avec les float, les . et les double

Economiser la puissance de calcul (calcul en 8 bits)

Faire attention a l’overflow

Rajouter l’option volatile devant les variables

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 87: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Les pieges

Economiser la memoire (probleme de la pile)

Faire attention avec les float, les . et les double

Economiser la puissance de calcul (calcul en 8 bits)

Faire attention a l’overflow

Rajouter l’option volatile devant les variables

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 88: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Les pieges

Economiser la memoire (probleme de la pile)

Faire attention avec les float, les . et les double

Economiser la puissance de calcul (calcul en 8 bits)

Faire attention a l’overflow

Rajouter l’option volatile devant les variables

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 89: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 90: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 91: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 92: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 93: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 94: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 95: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr

Page 96: Programmation C pour AVR 8 bits

Les outils de programmationHello world !

C’est bien, mais comment je peux faire un VRAI programme ?Les pieges a eviter

Conclusion

Nous avons vu :

Les outils de programmation

Comment configurer, lire et ecrire sur un port

Ce qu’est un registre, et comment le configurer a l’aide dudatasheet

L’utilisation des interruptions

Des exemples simple :

http ://github.com/leroilion/avr

Bibliographie :

Microcontroleurs AVR : des ATtiny aux ATmega de ChristianTavernier

Jeremy Cheynet – INTech Yann Sionneau – MiNET Introduction au C avr