====== 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