Outils pour utilisateurs

Outils du site


attiny10

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

on doit donc faire les liaisons suivantes :

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 "<stdout>"
0xff

avrdude done.  Thank you.

Voilà, tout c'est bien passé, il ne reste plus qu'à programmer ce microcontrôleur.

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 <avr/io.h>
#include <util/delay.h>

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

attiny10.txt · Dernière modification : 2024/03/30 09:09 de thierry