Etape 23 : Annexe E: Timers et EEPROM, sur rea
EEPROMhttp://en.wikipedia.org/wiki/EEPROM
Mémoire morte effaçable électriquement lecture Programmable. C’est un type de mémoire non volatile, ce qui signifie qu'il stocke d’informations même si la puissance est perdue. La plupart microcontrôleur a certains en interne pour pouvoir utiliser.
Pour les microcontrôleurs AVR, il suffit d’utiliser avr / fonctions d’eeprom.h à écrire ou lire à partir de l’EEPROM. Les fonctions sont très très simples.
http://www.nongnu.org/avr-libc/User-Manual/group__avr__eeprom.html
Vous juste faire des choses comme
valeur = eeprom_read_byte (mettez l’adresse ici) ;
et
eeprom_write_byte (adresse, valeur) ;
C’est trop simple d’un sujet, et donc cette annexe contient également...
Minuteries sur rea
Minuteries garder une trace de temps automatiquement en arrière-plan. Ceci est utile pour la lecture est d’une impulsion de combien de temps (par exemple, comment nous avons utilisé la capture d’entrée de minuterie pour le récepteur IR), ou sortie impulsions à plusieurs reprises (par exemple, PWM, non liés à notre projet mais couramment utilisés pour diverses choses), ou de répéter quelque chose, ou pour simplement garder trace du temps. Il y a beaucoup d’utilisations plus nombreux...
Sur le RTA, il suffit de mettre le Prédiviseur minuterie qui raconte la minuterie comment rapide à exécuter et puis démarrez le module timer. Vous pouvez éventuellement activer différentes interruptions, ou le module PWM ou le module de capture d’entrée. Façon de procéder est tout dans la feuille de données de l’AVR, ils ont même des exemples de code en Assemblée et C.
Par exemple, si le diviseur est défini sur l’horloge système divisé par 2, et l’horloge système est 8 MHz (dans notre cas, c’est), puis du minuteur à 4 MHz, ce qui signifie que toutes les secondes 1/4000000, le compteur minuterie augmentera de 1. J’ai écrit un utilitaire pur que j’utilise pour calculer les valeurs correspondantes de minuterie : http://www.frank-zhao.com/index.php?page=avrtimercalc
Pop quiz, ce qui est l’unité utilisée pour capturer et les valeurs de largeur d’impulsions magasin l’IR que nous utilisons ?
Le Teensy ++ a un cristal de 16 MHz, mais nous les menons à 3, 3V au lieu de 5V, donc nous utilisons "clock_prescale_set(clock_div_2);" donc c’est effectivement cadencé à 8 MHz. Le code source montre le timer 1 qui est configuré pour utiliser un prescaler de « diviser par 8 », alors que la minuterie est cadencé à 1 MHz. Ainsi, 1/1000000 secondes est 1 nanoseconde, et que de ce que les valeurs sont capturées et stockées dans.
Il y a plusieurs minuteries de 8 bits et 16 bits minuteries dans le AT90USB1286. minuteries de 8 bits peuvent stocker des temps des valeurs de compteur de 0 à 255, minuteries de 16 bits sont de 0 à 65535. C’est parce que le nombre de chiffres discrets possibles que peut représenter un certain nombre de bits est donné par 2 ^ n où n est le nombre de bits, 2 ^ 8 = 256, 2 ^ 16 = 65536.
Si nous permettons à une routine d’interruption de débordement sur une minuterie, nous pouvons stocker un comptoir de débordement, ce qui fondamentalement s’étend le nombre de bits, donc nous pouvons garder une trace de temps qui ne peuvent pas être stockés au sein de 8 bits.