====== Attiny10 ======
Le microcontrôleur attiny10 de chez Atmel fait partie des plus petits microcontrôleur en nombre d'E/S et en taille physique, avec seulement 6 broches, dont 2 d'alimentation. Il est en boîtier SOT 6 broches et UDFN 8 pads. Vous pouvez consulter sa {{:atmel-8127-avr-8-bit-microcontroller-attiny4-attiny5-attiny9-attiny10_datasheet.pdf |datasheet}}.\\
la programmation de l'Attiny10 se fait habituellement par un USBasp, qui est couramment utilisé en SPI pour programmer la plupart des Atmega, mais là, la programmation se fait via le protocole TPI qui est différent, mais l'USBasp le supporte aussi.\\
Le programmateur USBasp a une [[https://www.fischl.de/usbasp/|page dédiée]], et pour utiliser le protocole TPI, il faut mettre le dernier firmware.\\
Sur le connecteur de l'USBasp, on a le repérage suivant :\\
{{:usbasp.png?200|}}\\
on doit donc faire les liaisons suivantes :\\
{{:usbasp-t10.png?200|}}\\
on peut ensuite faire un test de lecture avec **avrdude**. Attention, il faut être **root** pour avoir les droits suffisants pour l'accès à l'USB
# avrdude -u -c usbasp -C /etc/avrdude.conf -p t10 -U fuse:r:-:h -q
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e9003 (probably t10)
avrdude: reading fuse memory:
avrdude: writing output file ""
0xff
avrdude done. Thank you.
Voilà, tout c'est bien passé, il ne reste plus qu'à programmer ce microcontrôleur.
===== Le Blink ! =====
j'installe une LED avec résistance, entre le Vcc et la broche PB2(4) de l'Attiny10.\\
il faut installer **avr-gcc** et **avr-libc**\\
Dans un dossier, on crée un fichier **blink.c**\\
#include
#include
int main(void)
{
DDRB |= _BV(PB2); // met le PB2 en sortie en positionnant le bit 2 à 1 dans DDR2
while(1){ // boucle infinie
PORTB ^= _BV(PB2); // change la LED avec un XOR
_delay_ms(200); // on attend 200 ms
}
}
on compile avec la commande
avr-gcc -mmcu=attiny10 -Os blink.c -o blink.bin -DF_CPU=1000000L
puis on l'upload
# avrdude -c usbasp -p t10 -U blink.bin -q
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e9003 (probably t10)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "blink.bin"
avrdude: input file blink.bin auto detected as ELF
avrdude: writing flash (70 bytes):
avrdude: 70 bytes of flash written
avrdude: verifying flash memory against blink.bin:
avrdude: load data flash data from input file blink.bin:
avrdude: input file blink.bin auto detected as ELF
avrdude: input file blink.bin contains 70 bytes
avrdude: reading on-chip flash data:
avrdude: verifying ...
avrdude: 70 bytes of flash verified
avrdude done. Thank you.
la LED clignotte !\\
On peut ensuite automatiser la compilation et l'upload via un fichier **makefile**
# vi makefile
upload: blink.bin
avrdude -c usbasp -p t10 -U blink.bin
blink.bin: blink.c
avr-gcc -mmcu=attiny10 -Os blink.c -o blink.bin -DF_CPU=1000000L -q
ce qui signifie que pour faire un **make upload**, on doit vérifier le fichier **blink.bin**\\
Si le fichier **blink.bin** n'existe pas ou s'il est plus ancien que le fichier blink.c, on va le compiler avec la commande **avr-gcc**\\
Donc si on fait un **make upload** la première fois, on va compiler le projet puis l'uploader sur l'Attiny10