summaryrefslogtreecommitdiff
path: root/n/avr/howto/howto-avr.txt
blob: 9444b16ad678af3cebbba84374fe6d07f659ee61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
*Title: Howto AVR
*Author: Ni

* Intro

On utilisera principalement des ATmega8 et des ATmega8535. Ce sont des
microcontrolleur 8 bits, avec 8 Ko de flash, 16 Mips, 28 ou 40 pattes, 1 Ko de
ram, un bus TWI, SPI, un USART, la programmation en circuit, des entr�es
analogiques, des sorties PWM... Le tout pour 6 Euros.

* Les sites � aller voir

	[http://www.atmel.com/products/avr/] Lire la datasheet du ATmega8.
	L'ATmega8535 ne diff�re que par le nombre de pattes et la ram.
	Regarder les app-notes.

	[http://www.avrfreaks.net/] Pas mal d'infos sur les AVRs, un forum,
	des projets examples...

	[http://www.nongnu.org/avr-libc/] Le site de la libc pour AVR. Tout ce
	qu'il faut pour d�velopper. _Lire_ particuli�rement la doc, de haut en
	bas. Il y a un programme d'exemple, mais on ne devrais pas manquer de
	programmes d'exemples au robot d'ici quelque jours.

* Les outils de dev

Sur le serveur du robot : gcc.

Sur les Windows, on peut faire fonctionner gcc avec AVR Studio.

Pour la programmation, il y a avrdude, programmation de l'AVR avec 3 fils.

Les fichiers |Makefile| et |Makefile.avr| livr�s avec cet howto peuvent �tre
utilis�s pour compiler les projets. Ces fichiers sont dans |n/chenil|, un
petit programme d'exemple qui fait un chenillard avec ses sorties.

* Programmation avec avrdude

Le programmateur utilise trois pattes de l'AVR, attention � ne pas griller le
port parall�le en r�glant ces pattes en sortie. On devrais metre des
r�sistances en s�rie sur le programmateur pour �viter �a. De m�me, attention �
ne pas griller le MAX232 reli� au port s�rie.

L'option |-p| permet de choisir le composant, l'option |-c| le programmateur.
Par exemple pour programmer le premier ATmega8 sur le programmateur du robot :

	avrdude -p m8 -c robot0 -E noreset ...

L'option |-E| d�mare le composant apr�s la programmation (relache le reset).
On peut aussi choisir l'�tat des autres pistes.

Avrdude peut tenir dans les dernier octets d'eeprom le nombre de
programmations du composant, pour initialiser ce nombre, faire avec un nouveau
composant, utiliser l'option |-Y| :

	avrdude -p m8 -c robot0 -E noreset -Y 0
	
Il faut ensuite choisir le mode d'oscillation de l'AVR, voir la datasheet pour
les d�tails sur les HFUSE et LFUSE. Attention, un mauvais r�glage et on peut
avoir du mal � r�cup�rer l'AVR en utilisant la programmation ISP.

Pour oscillation sur quartz avec un quartz de plus de 8 MHz sur un ATmega8 :

	avrdude -p m8 -c robot0 -E noreset -U lfuse:w:0xff:m -U hfuse:w:0xc9:m

Pour programmer la flash :

	avrdude -p m8 -c robot0 -E noreset -U flash:w:fichier.hex -y

En bonus, pour reseter l'AVR depuis le PC :

	avrdude -p m8 -c robot0 -E noreset

* Modules Efrei Robotique

Chaque module est d�pos� dans son r�pertoire s�par�. Pour les utiliser dans un
projet, il suffit de cr�er un |avrconfig.h| qui va bien et de compiler les
sources du module avec son projet. Pour cela, il suffit de mettre le nom du
module et du fichier de configuration dans le |Makefile|. La commande
|make modules\_co| fait un checkout des modules et |make modules\_up| permet de
les mettre � jour. Se reporter au code �xistant pour plus de d�tails.