Étape 3: Regarder de plus près l’ATmega8
Image 1 est le diagramme de pinout pour l’ATMega8 (exactement les mêmes que les 168/48/88, la seule différence sont la quantité d’options de mémoire et d’interruption à bord).
Broche 1 - Réinitialiser, se tienne à la tension VCC (ou au moins logique 1). Si la mise à la terre, le dispositif sera réinitialisation logicielle
Broche 2-6-Port D, entrée/sortie générale
Broche 7 - VCC, tension d’alimentation (+ 5V pour nous)
Broche 8 - sol
Broche de 9,10 - XTAL, entrées d’horloge externe (partie du Port B)
Broche 11-13 Port D, entrée/sortie générale
Broche 14-19 Port B, entrées/sorties générales
Broche 20 - AVCC, tension d’alimentation analogique (identique à VCC)
Broche 21 - AREF, référence de tension analogique
Broche 22 - sol
Broche 23-28 Port C, entrée/sortie générale
Ports d’e/s utilisable: D = 8, C = 6, B = 6
Un total de 20 ports utilisables est grand, pour plus de simplicité, que vous devez placer vos sorties dans les ports (par exemple, D comme le port de sortie) ou en groupes au Conseil d’administration - vous pouvez l’écran LCD pour exécuter à partir de Port C juste pour maintenir que les fils bien rangé dans ce coin.
Il y a trois broches supplémentaires qui sont nécessaires pour la programmation. Voilà le MISO (18), MOSI (17) et SCK(19). Ils exerceront heureusement broches e/s si nécessaire bien que.
Synchronisant
Le signal que nous envoyons à la caméra doit être précisément chronométré (précis à travers une microseconde) il est donc important que nous choisissons une source bonne horloge. Tous les AVRs ont un oscillateur interne que la puce peut obtenir son horloge de. L’inconvénient de ceci est qu’ils peuvent fluctuer autour de 10 % avec une température/pression/humidité. Ce que nous pouvons faire pour lutter contre cela est d’utiliser un cristal de quartz externe. Ils sont disponibles dans n’importe quoi de 32768kHz (montre) à 20MHz. J’ai choisi d’utiliser un cristal 4Mhz car il fournit une quantité décente de vitesse pourtant est assez puissance conservatrice par rapport à 8 Mhz peut-être +.
Gestion de l’alimentation à bord
J’ai vraiment envie d’utiliser les routines de sommeil dans mon code. En fait, j’ai écrit la première version pour dépendent fortement ralenti le processeur tout en temps déchéance. Unfortnuately, faute de temps, je suis tombé sur quelques problèmes avec l’exécution de l’horloge externe et interrompre l’utilisation des minuteries. En essence je dois réécrire le code à traiter le contrôleur simplement ne pas réveiller - qui je pouvais faire, mais le temps joue contre moi. Par conséquent, le périphérique consomme seulement 20mA ish donc vous pouvez sortir avec elle. Si vous êtes vraiment pour elle, puis par tous les moyens de jouer avec le code, tout ce que vous devez faire est de l’horloge interne et puis exécutez Timer 2 en mode asynchrone à l’aide du cristal 4 MHz pour des délais plus précis. Il est simple à faire, mais beaucoup de temps.
ADC
Le swiss army knife dans l’ensemble d’outils de l’AVR, l’ADC est Analogue au convertisseur numérique. Son fonctionnement est relativement simple de l’extérieur. Une tension est prélevée sur une épingle (à partir de certains capteurs ou autre entrée), la tension est convertie en une valeur numérique comprise entre 0 et 1024. Une valeur de 1024 sera observée lorsque la tension d’entrée est égale à la tension de référence ADC. Si nous fixons notre référence à être VCC (+ 5V), chaque division est 5/1024 V ou autour de 5mV. Ainsi, une augmentation de 5 mV sur la broche augmentera la valeur de l’ADC par 1. Nous pouvons prendre la valeur de sortie de ADC comme une variable et puis jouer avec elle, comparez-le avec les choses, etc. dans le code. L’ADC est une fonction extrêmement utile et permet de que vous faire beaucoup de choses cool comme tour votre AVR dans un oscilloscope. La fréquence d’échantillonnage est autour de 125kHz et doit avoir la valeur proportionnelle à la fréquence de l’horloge principale.
Les registres
Vous avez peut-être entendu des registres avant, mais la peur pas ! Un registre est simplement une collection d’adresses (emplacements) dans la mémoire de l’AVR. Registres sont classés par leur taille de bit. Un registre bit 7 a 8 emplacements, que nous partons de 0. Il existe des registres visant à peu près tout et bien jeter un oeil sur eux beaucoup plus en détail plus tard. Quelques exemples : les registres de PORTx (où x est B, C ou D) qui contrôle si un code pin est haute ou basse et définit pour tirer vers le haut de résistances pour les entrées, les registres DDRx définir si une épingle est sortie et entrée et ainsi de suite.
La feuille de données
Un monstre de la littérature, pesant environ 400 pages ; les fiches techniques AVR sont une référence inestimable pour votre processeur. Ils contiennent des détails de chaque registre, chaque broche, comment les temporisateurs fonctionnent, quels fusibles doit être sur quel et bien plus encore. Ils sont gratuits et vous avez besoin plus tôt ou plus tard, alors téléchargez une copie !
www.Atmel.com/dyn/Resources/prod_documents/doc2486.pdf