AVR Assembler Tutorial 4 (3 / 9 stap)

Stap 3: Timer/Counter 0


Voortaan ga ik niet in detail te treden over de delen van de code die u al begrijpt uit eerdere delen van deze tutorials. Ook, als er geen instructies dat nieuwe look of u weet niet meer wat ze doen, je al weet wat te doen. U kunt wenden tot de instructieset samenvatting in het gegevensblad en herinner jezelf op die manier, of kun je naar de volledige instructie set handleiding: www.atmel.com/images/doc0856.pdf , dat beschikt over een meer gedetailleerde uitleg van elke instructie en zelfs voorbeeldcode van hoe het wordt gebruikt. Ik denk dat u zult vinden het een nuttige handleiding als u van plan bent om door te gaan met het programmeren in assembler. Wat zullen we voortaan in plaats van de lijn door lijn analyse, is de nieuwe concepten die we invoeren dat u nog niet eerder in deze tutorials gezien te bespreken.

Dus, voordat we naar subroutines, laten we beginnen door het nemen van een kijkje op onze klok. U herinnert zich dat laatste tutorial we toonden hoe met interrupts en de timer/teller TCNT0 Maak een methode om vertragingen in ons programma waar wij hen nodig hebben. U zult merken dat deze tijd, wij hebben het lichtjes veranderd. Hier is de code die ik spreek over:

Zoals u zien kunt, in plaats van FCPU/1024 zoals we laatste keer gebruikt, dit keer gebruiken we FCPU/64. Dit betekent dat onze timer met een snelheid van kruisen zal

TCNT0 tarief = 16000000/64 = 250000 teken per seconde.

Nu introduceren we iets nieuws. het vergelijken van de Output OCR0A registreren een (zie pagina 108 van het gegevensblad). Wij Stel een waarde van 249 in dit register (zie tabel 15-1 pagina 94). Wij Stel de Golf generatie modus pin WGM01 in TCCR0A en zien we door de tabel 15-8 op pagina 106 dat dit betekent dat de timer zal wissen en opnieuw ingesteld als de waarde die we hebben geplaatst in OCR0A wordt bereikt. Met andere woorden zal het teruggezet op 0 wanneer de teller op 249. Dit betekent dat het eenmaal elke 250 tellingen zal overlopen. Aangezien het telt met een snelheid van 250000 teken per seconde, duurt het 1/1000 van een seconde overloopt. TCNT0 loopt vandaar nu over elke milliseconde.

We Schakel timer overloop interrupts en ook globale interrupts zoals we hebben uitgelegd in de tutorial 3.

Ik denk dat je zal eens dat timer/counters ingewikkelde dingen zijn. Er zijn drie verschillende items in de microcontroller en u kunt hen tijd en interrupt in verschillende combinaties als gewenste tijd verschillende dingen of u wilt vergelijken met de tijd die nodig is om te doen een ding in tegenstelling tot andere. De toepassingen zijn eindeloos en belangrijk. Voor nu zullen we alleen gebruiken TCNT0 omdat ik denk dat getting gewend is ingewikkeld genoeg.

Een goede manier om het bekijken van al deze speciale registreert zoals TCCR0A, TCCR0A, TIMSK0 en dergelijke is als een paneel met aan-uitschakelaars daarop. Zoals in een NASA controle kamer of een Ham radio-operators instellen. U kunt schakelen op en uit verschillende schakelaars en dit zal bepalen hoe het apparaat werkt. In dit geval de timer TCNT0. Ik heb ook een foto van mijn dagen van de afgestudeerde student in deeltjesfysica staande in de controlekamer van een laboratorium van de versneller. Soms codering van deze chips kan voelen als die.

De reden dat we hebben opgezet om de overloop van elke ms is zodat wij een "vertraging" subroutine die zal vertraging in milliseconden (net als de "delay()"-functie van Arduino) kunt maken.

In onze code kunt u zien dat wij dit hebben uitgevoerd met een subroutine die telt het aantal overstorten en vergelijkt die waarde met het aantal milliseconden dat we willen vertragen.

Gerelateerde Artikelen

AVR Assembler Tutorial 2

AVR Assembler Tutorial 2

Deze tutorial is een voortzetting van het "AVR Assembler Tutorial 1"Als je niet hebt doorlopen Tutorial 1 moet je nu stoppen en dat men eerst doen.In deze tutorial zullen we onze studie van assembly language programmering van de atmega328p in de
AVR Assembler Tutorial 11

AVR Assembler Tutorial 11

Welkom bij Tutorial 11!In deze korte tutorial, zijn we eindelijk het eerste deel van onze laatste project bouwen.Het eerste wat dat u moet doen is gaat u naar de allerlaatste stap van deze tutorial en Bekijk de video. Dan kom hier terug. [onderbreken
AVR Assembler Tutorial 1

AVR Assembler Tutorial 1

Ik heb besloten om een serie tutorials over hoe te schrijven van assembler programma's voor de Atmega328p die het gebruikt in de Arduino microcontroller is schrijven. Als mensen geïnteresseerd blijven blijft ik stak een een week of zo totdat ik oprak
AVR Assembler Tutorial 6

AVR Assembler Tutorial 6

Welkom bij Tutorial 6!Today's tutorial zullen kort waar zullen we het ontwikkelen van een eenvoudige methode om gegevens tussen een atmega328p en een andere met twee poorten verbinden hen te delen. Wij zullen vervolgens nemen de dobbelstenen rol van
AVR Assembler Tutorial 8

AVR Assembler Tutorial 8

Welkom bij Tutorial 8!In deze korte tutorial gaan we een beetje een afleiding van de invoering van nieuwe aspecten van assembly language programmering te laten zien hoe onze prototyping componenten verplaatsen naar een aparte "gedrukt" printplaa
AVR Assembler Tutorial 9

AVR Assembler Tutorial 9

Welkom bij Tutorial 9.Vandaag zullen wij tonen hoe de controle van zowel een 7-segment display en een 4-cijferige weergave met behulp van onze ATmega328P en AVR assembler code. In de loop doen die we nemen van omleidingen moeten zal op how to use van
AVR Assembler Tutorial 7

AVR Assembler Tutorial 7

Welkom bij Tutorial 7!Vandaag gaan we naar eerste show hoe opruimen van een toetsenbord, en vervolgens laten zien hoe de analoge input poorten gebruiken om te communiceren met het toetsenblok.We zullen dit doen met behulp van interrupts en een enkele
AVR Assembler Tutorial 10

AVR Assembler Tutorial 10

Welkom bij Tutorial 10!Sorry dat het zo lang duurde om deze volgende aflevering eruit maar dit is een behoorlijk hectische tijd van het jaar. In ieder geval, is hier het!We hebben een lange weg afgelegd en u bent waarschijnlijk al bekwaam genoeg is o
AVR Assembler Tutorial 5

AVR Assembler Tutorial 5

Vandaag gaan we nemen een kijkje op de verschillende geheugenlocaties in de Atmega328p microcontroller en zien als we beter begrijpen kunnen hoe de dingen worden opgeslagen, waar ze worden opgeslagen en hoe de pointers en opzoektabellen werken.De tut
AVR Assembler Tutorial 3

AVR Assembler Tutorial 3

Welkom op tutorial nummer 3!Voordat we beginnen wil ik een filosofische opmerking maken. Wees niet bang om te experimenteren met de circuits en de code die we proberen op te in deze tutorials bouwen. Draden rond wijzigen, nieuwe onderdelen toe te voe
Een geavanceerde benadering van programmering van Arduino & AVR

Een geavanceerde benadering van programmering van Arduino & AVR

Dit instructable is een must read voor iedereen die vertrouwd is met core AVR chips en Arduino.Nou, om meer specifieke, bij het lezen van de instructable, zal u zitten kundig voor:1) weten het juiste verschil tussen AVR en Arduino.2) programmering Ar
Programmeerbare LED

Programmeerbare LED

geïnspireerd door diverse LED Throwies, knipperende LEDs en soortgelijke instructables ik wilde doen van mijn versie van een LED aangestuurd door een microcontroller.Het idee is om de LED knipperende reeks Herprogrammeerbare. Deze herprogrammering ka
De generator van willekeurige golfvorm, voor ~ 20$

De generator van willekeurige golfvorm, voor ~ 20$

een willekeurige golfvorm generator (AWG) is een nuttige maar vaak duur stuk van testapparatuur (ebay voor lacht). Gebruiken om te bepalen component frequentiebereik, genereren van vervoerder signalen, als een LCR-meter als u een bereik, tune resonan
Star Trek deurbel Hack

Star Trek deurbel Hack

Ik heb altijd al een fan van de Star Treks en als zodanig ik was erg opgewonden toen mijn kamergenoot bracht het huis van een originele serie stijl Star Trek comm panel. Ik had nog nooit gezien een van deze, maar een snelle zoektocht nam ons mee naar