Notes sur le ATtiny13
Voici quelques notes éparses concernat le ATtiny13.
Pins
- GND, +5V
- ADC : 4 ADC 10 bits (va chercher dans des registres populés par des ADC indépendants)
- AIN: comparateur analogique (interrupts quand voltage change)
- MISO et MOSI : master in, slave out (ISP) (mais ISP trop intense pour le chip) (ces pins servent à le programmer en utilisant aussi la clock (SCK) et le reset)
- NC: non-connected (sur les attiny13 à plus de pins)
Le port B (numérique) est celui que nous utilisons ici. Il s'agit d'un registre qui contient ici 6 bits. L'état d'une entrée/sortie numérique peut être lue/écrite de la manière : Pxn, où P signifie port, x est la lettre du port (on n'a que B sur le ATtiny13) et n est le numéro du bit. (de la pin) Par exemple : PB2 est la pin 2.
interruptions
- pins
- watch dog interne : call un interrupt et attend une réponse. si pas de réponse, reboot. ??
- timer (fonction périodique), etc.
Fonctionnalités
ADC
- changer bits du multiplexeur (choisir le ADC qu'on veut lire)
- lire le contenu des deux registres
- AREF est le voltage de référence pour les ADC
- référence de 1.1V ????
PWM
- juste un time counter (interupt), donc une seule fréquence
- c'est la largeur (temps haut, temps bas) qui compte
compteur (autonome)
- incrémente chaque fois qu'un autre chip lui envoie 1
- counter prescaler
- interrupt quand le compteur atteint un certain chiffre
diverses fonctionnalités
- clock interne : pas besoin de crystal
- EEPROM : on peut sauver des trucs là !
- Flash : où le code est stocké
communication avec d'autres circuits intégrés
i2c
Two wire interface. Deux fils : (data in/out, clock)
- SCL (serial clock)
- SDA (serial data)
- deux résistances pull-up pour dire que t'es slave ?
- voir page i2c sur wikipedia
SPI
Quatre fils. (MOSI, MISO, clock, chip select)
- chip select : quand en parallèle seulement.
En parallèle, c'est plus rapide et le choix du chip auquel . En série, tu dois lire au démarrage c'est quoi ton adresse, par exemple avec des DIP switch ou en soudure. Semblable au RS-485 lorsque en série.
Utilise le UART (universel asynchrone receive et transmit serial) et USART (possiblement synchrone)
Synchrone : utilise une clock. Si c'était asynchrone : utilise un start bit et un stop bit. (donc deux bits de plus)
Pas de bit de parité. (y'en aurait si ça aurait
Programmation
Pins
ICSP : In-circuit serial programmer (utilise ISP)
- pins:
- +5V, GND, MISO, MOSI, SCK
- le Arduino a un bootloader, qui au reset verifie s'il y a des données entrantes sur RT TX (et non ISP)
- quand fait reset au début : sera programmé via ISP...
Vitesse de l'envoi du code
- La première fois, le ISP doit rouler à 1/4 de la vitesse du UC. Donc à 0.15 Mhz.
- 4.8 Mhz / 8 = 0.6 Mhz. On divise ça par 4 : 0.15 Mhz.
Une fois déjà programmée, on peut augmenter la vitesse...
Fuses (bits de configuration du système de la chip)
On peut les uploader juste une fois. Par défaut, la chip sera très lente.
- self-programming enable = 1
- Brown-out detection : disabled (pas assez de voltage: la mémoire va se perdre)
- vitesse : 9.6 Mhz
- diviser clock par 8 : disabled
Flag d'optimisation : -Os
- ils faut optimiser les NOP, sinon le programme sera trop gros si on utilise des delais.
