Stap 3: Een kijkje op de ATmega8
Afbeelding 1 is het diagram van de pinout voor de ATMega8 (precies hetzelfde als de 168/48/88, het enige verschil is de hoeveelheid onboard geheugen en interrupt opties).
Pin 1 - Reset, moet plaatsvinden op VCC spanning (of op zijn minst logisch 1). Als een vliegverbod opgelegd, het apparaat zal soft-reset
Pin 2-6-Port D, algemene invoer/uitvoer
Pin 7 - VCC, levering spanning (+ 5V voor ons)
Pin 8 - grond
Pin 9,10 - XTAL, externe klok ingangen (onderdeel van poort B)
PIN 11-13 Port D, algemene invoer/uitvoer
Pin 14-19 poort B, algemene invoer/uitvoer
Pin 20 - AVCC, analoge voedingsspanning (zelfde als VCC)
PIN 21 - AREF, analoge referentiespanning
PIN 22 - grond
PIN 23-28 C poort, algemene invoer/uitvoer
Bruikbare i/o-poorten: D = 8, C = 6, B = 6
Een totaal van 20 bruikbare poorten is geweldig, voor eenvoud die u uw output in havens (bijvoorbeeld D als de uitvoerpoort) of in groepen op het bord moet groeperen - kunt u het LCD-scherm te lopen vanaf de poort C net te houden dat de draden netjes in die hoek.
Er zijn drie extra pinnen die vereist voor programmering zijn. Dat zijn MISO (18), MOSI (17) en SCK(19). Dit zal gelukkig fungeren als i/o-pinnen als wel nodig.
Klokken
Het signaal dat we aan de camera afgeven moet worden precies getimed (nauwkeurig tot rond een microseconde) dus het is belangrijk dat we een goede klokbron kiezen. Alle AVR's hebben een interne oscillator, die de chip zijn klok van kunt krijgen. Het nadeel hiervan is dat ze rond 10% met temperatuur/druk/vochtigheid schommelen kunnen. Wat we kunnen doen om dit tegen te is gebruik maken van een externe kwartskristal. Deze zijn beschikbaar in om het even wat van 32768kHz (horloge) naar 20MHz. Ik heb gekozen om te gebruiken een 4Mhz kristal als het biedt een behoorlijke hoeveelheid snelheid nog vrij macht conservatieve in vergelijking tot misschien wel 8 Mhz is +.
On-board Power Management
Ik wilde echt slapen routines gebruiken in mijn code. In feite schreef ik de eerste versie te sterk afhankelijk zijn van het stationair draaien van de processor terwijl de tijd vervallen. Unfortnuately, vanwege tijdgebrek, liep ik in enkele problemen met de klok extern uitgevoerd en onderbreken met behulp van de timers. In essentie zou ik moeten herschrijven van de code om te gaan met de controller gewoon niet wakker - die ik kon doen, maar tijd is tegen mij. Als zodanig, trekt het apparaat alleen 20mA ish zodat je met het wegkomen kan. Als je echt klaar voor bent, dan met alle middelen te knoeien met de code, alles wat u hoeft te doen is intern klok en Timer 2 uit te voeren in de asynchrone modus met behulp van de 4 MHz kristal voor het nauwkeuriger vertragingen. Het is eenvoudig om te doen, maar tijdrovend.
ADC
Het Zwitserse zakmes in de AVR toolset, de ADC staat voor analoog naar Digitaal Converter. Hoe het werkt is relatief eenvoudig vanaf de buitenkant. Een spanning is bemonsterd op een pin (van sommige sensor of andere input), de spanning wordt omgezet in een digitale waarde tussen 0 en 1024. Een waarde van 1024 worden nageleefd wanneer de ingangsspanning gelijk aan de ADC referentie spanning is. Als we onze verwijzing naar VCC (+ 5V) worden, dan is elke divisie 5/1024 V of rond 5mV instellen. Zo zal een toename van 5mV op de pin de ADC-waarde verhoogd met 1. Kunnen we de ADC output waarde als een variabele en vervolgens viool, vergelijk het met dingen, enz in de code. De ADC is een ongelooflijk nuttige functie en laat jij veel leuke dingen zoals beurt uw AVR in een oscilloscoop. De samplingfrequentie is ongeveer 125kHz en moet worden vastgesteld in verhouding tot de belangrijkste klokfrequentie.
Registers
Je misschien hebt gehoord van de registers voordat, maar vrees niet! Een register is gewoon een verzameling adressen (locaties) in het geheugen van de AVR. Registers worden geclassificeerd door hun omvang bits. Een 7 bits register heeft 8 vestigingen, als we vanaf 0 beginnen. Er zijn registers voor zowat alles en Nou neem een kijkje op hen in veel meer detail later. Enkele voorbeelden zijn de PORTx (waarbij x staat voor B, C of D) registers die bepalen of een pin set hoog of laag is, en stelt u pull up weerstanden voor ingangen, de DDRx registers die instellen of een PIN-code wordt uitgevoerd of de invoer, enzovoort.
Het gegevensblad
Een kolos van literatuur, met een gewicht van ongeveer 400 pagina's; de AVR gegevensbladen zijn een waardevolle verwijzing naar uw processor. Ze bevatten details van elk register, elke pin, hoe timers werken, wat zekeringen moet worden ingesteld op wat en veel meer. Ze zijn gratis en u moet het vroeg of later, dus download een kopie!
www.atmel.com/dyn/resources/prod_documents/doc2486.PDF