Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

Elektronica en lab 3e graad IW 1

DE MICROCONTROLLERS

1 Inleiding

Van 1969 tot 1971 bouwde Intel in opdracht van ontwerpers van de Amerikaanse firma
Datapoint de eerste microprocessor (4004). Omdat de microprocessor ongeveer 10
keer trager werkte dan verwacht ging de koop niet door.

Fig. 1: De eerste microprocessor.

Intel heeft toen in 1972 besloten om het product op eigen risico op de markt te
brengen. Dit gebeurde onder de codenaam 8008.

Deze microprocessor werd enkele jaren later opgevolgd door de 8080. Deze
microprocessor werd gebruikt om in 1975 de eerste microcomputer te bouwen.
Dit was de Altair 8800 van de firma MITS. Naast de 8080 bezat deze microcomputer 256
bytes geheugen en dan toggleschakelaars en LED’s op een frontplaat. Een werkend
model kostte toen rond de $2000.

Fig. 2: De eerste microcomputer

Voor deze computer werd een BASIC programmeertaal gemaakt door twee jonge kerels
(Bill Gates en Paul Allen) die een bedrijfje stichten met de naam MICROSOFT.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 2

In ditzelfde jaar (1975) bracht MOS-Technologies de 6502 microprocessor op de markt


aan sterkt gereduceerde prijzen. $25 in plaats van $150 voor de Intel 8080. Het is de
6502 die later zal dienen als hart voor de APPLE II. APPLE werd gesticht door Steve Jobs
en Steve Wozniak. Dit was de eerste echte personal computer.

Wanneer in 1981 I.B.M. besluit om ook een microcomputer op de markt te brengen is het
startschot gegeven voor een waanzinnige evolutie die tot op dit moment nog steeds
doorgaat.

Een microcomputer is dus een kleine computer waarin een microprocessor zorgt voor
het verwerken van gegevens. Tegenwoordig vinden we kleine computertjes overal terug.
In de weegschaal van de slager, in de kassa van de supermarkt, in de sturing van de
verkeerlichten, in auto’s, enz…
Deze microcomputers zitten als het ware ingebakken in toestellen die we dagdagelijks
gebruiken, we spreken van “embedded computers”.

Tegenwoordig zijn deze microcomputertjes zo klein dat ze in één IC zitten. We spreken


dan van “embedded controllers” of microcontrollers. Het is over deze microcontrollers
dat deze cursus handelt.

Fig. 3: De Intel 8048, de eerste microcontroller.

Wat microcontrollers betreft zijn er heel veel fabrikanten die elk hun eigen (uitgebreid)
reeks van microcontrollers verkopen. We denken dan onder andere aan Intel, Motorola,
Atmel, Microchip, Hitachi, Zilog, Dallas, Philips, Siemens, National Semiconductor, enz…

Wij gaan ons in deze cursus, na een algemene inleiding over de microcomputer,
beperken tot de ATMEGA162 uit de AVR-reeks van Atmel. Het is niet de bedoeling van
deze cursus om een diepgaande studie van een microcontroller te geven.

Wel is het de bedoeling om een goed inzicht te krijgen in de werking van een
microcontroller. Welke microcontroller men neemt speelt eigenlijk weinig rol. De meeste
microcontrollers werken op een vergelijkbare manier en dus is de overstap van één soort
microcontroller naar een andere meestal vrij makkelijk te maken.
De verschillen zitten meestal in (soms zéér belangrijke) details. Neem dus minstens één
keer de moeite om je in deze materie te verdiepen. De beste literatuur om dit te doen is
meestal niet een cursus of een boek maar wel de datasheet van het component.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 3

2 Microcomputers

2.1 Blokschema van een microcomputer

Onderstaande figuur toont het blokschema van een microcomputer.

Fig. 4: Blokschema van een microcomputer

De CPU, Central processing unit, is het hart van de microcomputer. De CPU is meestal
een microprocessor en heeft als doel om de microcomputer te besturen en om de
gegevens te verwerken.
De handelingen die de CPU uitvoert zijn cyclisch. Dit wil zeggen dat er een vast patroon
zit in de handelingen die de processor verricht. De CPU haalt namelijk steeds een
instructie op uit het geheugen, voert de in de instructie aangegeven bewerking uit, haalt
de volgende instructie op, enz…

Zoals je kan merken zijn er twee soorten geheugen terug te vinden. Eén geheugen wordt
gebruikt om het programma, dat moet worden uitgevoerd, te bewaren. Dit deel van het
geheugen noemen we het programmageheugen (program memory). Het
programmageheugen is niet vluchtig geheugen. Dat betekent dat dit geheugen zijn
inhoud bewaard als de voedingsspanning af is. Als de microcomputer dan opgestart
wordt dan zal dit programma uitgevoerd worden.

Een tweede deel geheugen is het geheugen waar zich de gegevens bevinden. Dit kunnen
zowel de te verwerken gegevens zijn als de resultaten die de CPU uitkomt na het
uitvoeren van het programma. We noemen dit het datageheugen (Data memory).

Een laatste deel vormt de I/O (Input – Output) of de randcomponenten. Via deze
module komen gegevens de computer binnen en worden de gegevens van de computer
terug naar buiten gestuurd.
Als input kennen we onder andere het toetsenbord, de muis, een temperatuurmeter, een
ingang voor een schakelaar, enz…
Als output kennen we onder andere het scherm, een printer, een motorsturing, een
lampje, enz…

P. Dams - W. Andries
Elektronica en lab 3e graad IW 4

Het is natuurlijk noodzakelijk dat de verschillende blokken met elkaar worden verbonden.
Zo moet de CPU de verschillende instructies uit het programmageheugen kunnen
ophalen, resultaten naar de outputmodule sturen enz…
Afhankelijk van de grootte van de gegevens (aantal bits) heb je meerdere draadjes
nodig. Zo een bundel van draadjes noemen we een bus en een draadje in deze bus
noemen we een lijn.

De bus verantwoordelijk voor het doorsturen van de gegevens (data) en de


instructiecodes van het programma noemen we de databus.
In het geval van microcontrollersystemen bedraagt de breedte van de databus meestal
acht of zestien datalijnen.

De bus die aanduidt waar in het geheugen gegevens moeten worden opgehaald of
weggezet noemen we de adresbus.
In de meeste 8-bit microcontrollersystemen is de adresbus 16 adreslijnen breed. Dat
betekent dat men 216 verschillende adressen kan vormen op deze adresbus.

Naast de adresbus en de databus is er nog een derde bus. Deze bus wordt de
controlebus genoemd. Hierin vinden we controlelijnen terug zoals de read/write-lijn, de
interruptlijnen, de reset, enz… Deze lijnen controleren de richting waarin de gegevens
over de databus gaan, bepalen de werking van de computer, enz…

Op een print zijn de busstructuren meestal makkelijk terug te vinden. Ze bestaan uit een
aantal parallel lopende printbanen.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 5

2.2 De busstructuren.

Wanneer we het over een bus hebben dan wordt ook de richting van de
gegevenstransport op deze bus aangeduid. De richting wordt steeds bekeken vanuit de
C.P.U.

Zo zal de C.P.U. altijd bepalen waar er gegevens worden opgehaald of gelezen of waar
gegevens worden weg geplaatst of geschreven.
Dit wil zeggen dat de C.P.U. de enige blok is die informatie op de adresbus plaatst. We
zeggen dat de adresbus unidirectioneel is.
Via de databus komen gegevens zowel de C.P.U. binnen als buiten. We zeggen dat de
databus bidirectioneel is.

Fig. 5: De richting van de verschillende bussen.

Op een bus mag op een bepaald moment slechts door één deel van de microcomputer
informatie worden gezet.
Ook moeten we blokken die op een bepaald moment geen gegevens willen uitwisselen
via een bus tijdelijk van deze bus kunnen afschakelen. Hiervoor maken we gebruik van
de tri-state technologie. (Zie digitale technieken 5 e jaar) Hierbij kan de toestand van een
lijn na hoog en laag ook een hoog-ohmige toestand aannemen (Z).

Fig. 6: Voorbeeld van een tri state schakeling.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 6

2.3 De CPU

In dit deel van de cursus bestuderen we het hart van de microcomputer. We bekijken het
blokschema en overlopen de verschillende delen hierin. De hoofdtaak van de CPU bestaat
erin om een correcte uitvoering van het programma te garanderen.
Hiervoor moet de CPU taken kunnen zoals het lezen en beschrijven van geheugen,
berekeningen uitvoeren, ingangen en uitgangen controleren.

Fig. 7: Blokschema van een CPU

2.3.1 DE Arithmetic Logic Unit (ALU)

De ALU is één van de belangrijkste onderdelen van de CPU en moet eenvoudige


rekenkundige en logische bewerkingen uitvoeren.

Fig. 8: De ALU

P. Dams - W. Andries
Elektronica en lab 3e graad IW 7

De meeste bewerkingen vergen twee gegevens (bvb.: A + B). Deze gegevens noem je
de operanden. De bewerking die moet gebeuren noemen je de opcode. Een instructie
in een programma bevat altijd een opcode en een operand.

De operanden worden vanuit twee verschillende registers aan de ALU geboden en


verwerkt. Het resultaat van de bewerking wordt in een speciaal register geplaatst die je
de accumulator noemt. De uitgang heeft ook extra informatie zoals een carrybit, een
zerobit en een overflowbit weer via 1-bit uitgangen die we vlaggen noemen. Deze
vlaggen kan je als programmeur bekijken via het statusregister.

2.3.2 De accumulator

De Accumulator is een register die gebruikt wordt om het resultaat van de ALU in te
plaatsen. De terugkoppeling die je ziet wordt bij vele CPU’s toegepast om sneller
kettingebewerkingen te kunnen uitvoeren. (bvb.: A + B +C)

Fig. 9:

2.3.3 De Programma teller (programcounter)

De microprocessor haalt de uit te voeren instructies op uit het programmageheugen. De


instructies, die samen het programma vormen, zijn opeenvolgend (sequentieel) in het
programmageheugen opgeslagen. De CPU haalt deze instructies achtereenvolgens uit het
programmageheugen om te bepalen welke acties hij moet ondernemen.

Dit houdt echter wel in, dat de CPU moet weten op welke plaats de op te halen instructie
staat. De plaats in het geheugen (adres) waar de eerst volgende uit te voeren instructie
staat wordt bijgehouden in de programmateller.
De programmateller wordt automatisch met één verhoogt (geïncrementeerd) nadat een
instructie is opgehaald zodat de programmateller dan het adres van de volgende uit te
voeren instructie bevat. De programmeur dient de instructies dan wel zo in het geheugen
op te slaan, dat ze op opeenvolgende plaatsen in het geheugen staan.

2.3.4 Het instructie register.

Nadat de CPU een instructie heeft opgehaald uit het geheugen moet het in de CPU
bijgehouden worden. Dit gebeurt in het instructieregister.

Denk erom dat de opgeslagen instructie bestaat uit twee delen


 De opcode vertelt welke bewerking de CPU moet uitvoeren.
 De operand duid de data aan die nodig is om de bewerking uit te voeren.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 8

2.3.5 De instructie decoder.

De instructiedecoder zal de instructie die zich in het instructieregister bevindt


decoderen en zien of alle informatie aanwezig is om de instructie uit te voeren. Indien dit
nog niet het geval is, worden de nodige gegevens (operanden) uit het geheugen gehaald.

Wanneer alle gegevens aanwezig zijn decodeert de instructiedecoder de volledige


instructie. Het is dus nodig dat de instructiedecoder alle instructies kent die een
microprocessor kan uitvoeren.

De verzameling van alle instructies van een bepaalde microprocessor noemen we de


instructieset. De instructieset van een bepaalde processorfamilie kan je verkrijgen bij
de fabrikant ervan. Het vervelende is echter dat de instructieset van processorfamilie tot
processorfamilie sterk verschilt. Het is hierom dat je de hogere orde taal Bascom-AVR zal
leren. Deze zal d.m.v. de compiler het geschreven programma vertalen in de instructies
die de processor begrijpt.

2.3.6 De control Unit

De control unit zal alle nodige handelingen doen om de instructie uit te voeren
(execution), nadat de gehele instructie gedecodeerd is. Eénmaal de instructie volledig is
uitgevoerd kan de processor beginnen met het ophalen van de eerstvolgende uit te
voeren instructie.

2.3.7 De stack en stackpointer

In een processor is meestal een klein stukje geheugen aanwezig dat je kan gebruiken om
kleine dingen tijdelijk te bewaren. Je kan het vergelijken met een klein notaboekje.

Dit geheugen werkt volgens een speciaal principe dat we LIFO noemen. Dit staat voor
Last In First Out. Dit wil zeggen dat het gegeven dat je er laatst instopte er ook eerst
terug uit moet worden genomen. Dit geheugen noemen we de stack.

De stackpointer bevat het adres van de eerstvolgende vrije geheugenplaats in de stack.

2.3.8 De general purpose registers

Dit zijn registers die vrij bruikbaar zijn voor verschillende toepassingen. Meestal hebben
general purpose registers een speciale functie voor sommige instructies. Als
programmeur kan je zelf ook wat data in deze registers stoppen. Het voordeel hiervan is
dat je weet dat deze data vlug ter beschikking is omdat ze zich in de CPU zelf bevindt.

2.3.9 De Timing en klok

De microprocessor is een synchrone digitale schakeling die werkt volgens een vast ritme.
In een microprocessor zit meestal een oscillator die een timingschakeling aanstuurt.
Deze timingschakeling zorgt ervoor dat al de acties van de processor volgens een vast
tijdschema verlopen.

De frequentie waarop de oscillator oscilleert kan bepaalt worden door het kristal dat
wordt aangesloten. In sommige gevallen kan ook een resonator worden aangesloten.
Het ritme waarop de processor werkt is bij sommige processors een deeltal van de
aangesloten klokfrequentie.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 9

3 Geheugenstructuur.

In het eerste schema hebben we een onderscheid gemaakt tussen het programma
geheugen en het data geheugen. Het zijn twee aparte blokken in onze computer.
Er zijn nu twee manieren om deze twee blokken in het geheugen te zetten.

3.1 Harvard geheugenstructuur.

In de Harvard geheugenstructuur zijn het datageheugen en het programmageheugen


fysisch gescheiden van elkaar. Elk geheugen krijgt ook zijn eigen bussen.

Dit zorgt ervoor dat :


 Data en instructies tezelfdertijd kunnen opgehaald worden.
 Harvard structuur vlugger werkt dan Von Neumann.

Fig. 10: Harvard Geheugenstructuur.

3.2 Von Neumann geheugenstructuur.

Processores die deze voorzieningen niet hebben en het totale geheugenbereik


geheugenplaatsen moeten verdelen over zowel data als programmageheugen werken
volgens de Von Neumann geheugenstructuur. Het blokschema op figuur 4 is dus
volgens het Von Neumann geheugenstructuur getekend.

Fig. 11: Von Neumann geheugenstructuur.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 10

4 De Von Neumann cyclus

De verwerking van een instructie in een Von Neumann architectuur is tijdens de


bespreking van de CPU eigenlijk al aan bod gekomen. Je weet ook al dat een CPU
cyclisch werkt. Dat wilde zeggen dat de CPU een instructie uit het geheugen haalt, die
uitvoert, een nieuwe instructie uit het geheugen haalt, enz..

We vatten de verschillende fasen van één cyclus nog even kort samen:

Fig. 12: De Von Neumann cyclus.

De eerste fase in het proces is de instruction fetch. Het ophalen van de instructie
(instruction fetch) uit het programmageheugen gebeurt in twee stappen.

In de eerste stap stuurt de CPU het adres, dat door de programmateller wordt
aangegeven, via de adresbus naar het programmageheugen. Het bij dit adres
horende geheugenwoord wordt geselecteerd.

In de tweede stap geeft het programmageheugen de inhoud van het


geadresseerde geheugenwoord af aan de CPU. De CPU bergt deze inhoud op in
het instructieregister.

In een tweede fase van het proces gaat de instructiedecoder de instructie in het
instructie register decoderen. Voor sommige instructies heeft de CPU aan dit ene
instructiewoord voldoende informatie om deze instructie uit te voeren. Men spreekt dan
van een één-byte-instructie.
Er zijn echter ook instructies die een tweede of soms nog een derde byte nodig hebben
om de uitvoering van de instructie te kunnen voltooien

In de derde fase van het proces wordt de programmateller met één verhoogt. Indien
we te maken hebben met een twee-byte-instructie of een drie-byte-instructie zal de CPU
nog één of twee bytes uit het geheugen moeten ophalen alvorens de uit te voeren
instructie volledig is.

Eénmaal alle bytes binnen zijn kan de CPU aan de vierde fase van het proces beginnen
namelijk het uitvoeren van de volledige instructie. Deze fase noemen we de
“instruction execution”.

Deze manier van werken staat bekend als de Von Neumanncyclus.


Johann Von Neumann was een Hongaars wiskundige die leefde van 1903 tot 1957. Hij
creëerde in de veertiger jaren een computer die volgens dit principe werkte.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 11

5 De ATmega162.

In 1993 introduceerde ATMEL zijn AVR-familie. De AVR microcontrollers van ATMEL zijn
RISCmicrocontrollers (Reduced Instruction Set Computer). Dit zijn microcontrollers die in
principe weinig instructies kennen maar ze wel zeer snel kunnen uitvoeren.

De ATmega162 kent 131 instructies en voert de meeste instructies uit in één cyclus. Dit
wil zeggen dat wanneer hij wordt uitgerust met een 10 MHz kristal hij tot 10Mips
(miljoen instructies per seconde) kan verwerken.

5.1 Blokschema

Fig. 13: Blokschema van de ATmega 162

P. Dams - W. Andries
Elektronica en lab 3e graad IW 12

Wanneer we bovenstaand blokschema bekijken dan herkennen we een boel blokken die
we reeds in de vorige bladzijden hebben besproken. We overlopen even de blokken de
we reeds kennen.
 Program Counter (programmateller),
 16kB Program Flash (programmageheugen),
 Instruction Register,
 Instruction Decoder,
 Control Lines + MCU control register & timing (controle eenheid),
 Stack pointer,
 1 kByte SRAM (vluchtig geheugen waarin zich onder andere de data en de stack
bevindt),
 512Byte EEprom (niet-vluchtig geheugen waar ook data kan worden opgeslagen),
 32 General Purpose Registers ,
 ALU,
 Status Register (bevat oa. de vlaggen van de ALU),
 Oscillator en Timing and Control.

De overige blokken gaan we kort bespreken zodat je een idee hebt van de mogelijkheden
van deze microcontroller.

5.2 De Watchdog timer. (Datasheet : p.53)

De ATmega162 is uitgerust met een watchdog. Het doel van deze unit is ervoor te
zorgen dat een microcontroller niet gaat “hangen”. Dit komt voor wanneer een
programma in een eindeloze lus terecht komt. Je zal het in windows zeker en vast al
hebben tegen gekomen. Je start een programma op en plotseling doet het niets meer.
Wanneer je dan in taakbeheer gaat kijken merk je dat er bij het respectievelijke
programma staat “programma reageert niet meer”.

Een watchdog laat toe om dit te detecteren. De watchdog werkt met een interne
oscillator van 1MHz. Dit kloksignaal wordt aan een deler toegevoegd (instelbaar als 16
tot 2048 deler via WDP0,1,2).
Wanneer de teller een overflow krijgt zal de controller automatisch worden gereset.

De bedoeling is dat je in je eigen programma de watchdog-teller zelf gaat resetten


vooraleer hij een reset geeft aan de controller. Wanneer je eigen programma nu “hangt”
zal de watchdog-teller niet worden gereset en na verloop van tijd (16ms tot 2048ms) een
reset van de controller genereren. Deze controllerreset zal er voor zorgen dat je
programma terug wordt opgestart.

Fig. 14: De watchdog timer

P. Dams - W. Andries
Elektronica en lab 3e graad IW 13

5.3 Interrupts

De ATmega162 voorziet in 28 verschillende interrupts. Een interrupt is een gebeurtenis


waarbij de microcontroller een speciaal programma moet uitvoeren. Dit stuk programma
noem je de interrupt service routine.

Deze interrupts en de reset hebben elk hun eigen vectoradres. Dit is het adres waar de
microcontroller onmiddellijk naar toe springt indien de overeenkomstige interrupt
optreedt. Op die plaats moet dan het programma staan dat de controller dan moet
uitvoeren.

Voor een volledig programma is er echter niet voldoende plaats. Daarom zal op de plaats
van het vectoradres enkel een spronginstructie staan naar de eigenlijke programmacode
die op dat moment moet uitgevoerd worden, d.i. de interrupt service routine.

Het gebruik van interrupts moet wordt aangegeven door verschillende vlaggen. Eerst en
vooral is er de general interrupt flag. Dit is een soort hoofdschakelaar die het gebruik
van interrupts toelaat of uitschakelt.
Daarnaast moet elke interrupt op zich ook nog eens worden geactiveerd. Dit gebeurt
door een aparte vlag per interrupt.

Fig. 15: Reset en interrupt vector tabel.

De prioriteit van de interrupts is afhankelijk van de plaats in het geheugen. Des te lager
de interrupt in het geheugen is gelegen, des te hoger de prioriteit. Dit wil dus zeggen dat
de reset de hoogste prioriteit heeft en de analoge comparator de laagste prioriteit.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 14

5.4 De I/O poorten.

De ATmega 162 heeft 5 bidirectionele I/O poorten (poorten A, B, C, D en E). De poorten


A, B, C en D hebben 8 pinnen en poort E heeft er slechts 3. In totaal zij er dus 35 I/O
lijnen.

Elke poort heeft drie registers die er mee samenhangen:


 De port data register (R/W) : Dit register bevat de data die naar buiten
moet gestuurd worden.
 De port data direction register (R/W) :Dit register en bepaalt of een pin als
input of als output fungeert.
 De port input pins (R!) : Dit zijn de pinnen van de poort zelf.

Alle pinnen van de poorten hebben individuele pull-up weerstanden. Elke poortpin kan
20mA sinken en dus rechtstreeks een LED aansturen. (p.267 max stromen!) Wanneer de
pinnen als ingang fungeren en extern laag worden getrokken dan zullen de pinnen
stroom (sturen) sourcen indien de interne pull-ups zijn geactiveerd.

Wanneer PORTB wordt gelezen leest men het data register van poort B. Wanneer PINB
wordt gelezen leest men de niveaus aan de pinnen van poort B.

Hoe gebruikt men nu een pin PBx van poort B als algemene digitale I/O pin?
Wel de bit DDBx in het data direction register bepaalt de richting van de pin. Indien
DDBx één gemaakt is dan is PBx geconfigureerd als uitgang en als DDBx op nul staat is,
dan is PBx geschakeld als ingang en is de pull-up weerstand geactiveerd. Om de pull-up
weerstand uit te schakelen moet je dan PORTBx nul maken of de pin als uitgang
configureren.

Fig. 16: Algemene schakeling van een I/O pin (zonder alternatieve functie)

P. Dams - W. Andries
Elektronica en lab 3e graad IW 15

5.5 Alternatieve functies van de 35 I/O lijnen.

Naast het gebruik als gewone input of output hebben vele van deze pinnen een
alternatieve functie. Dit betekent dat deze pinnen ook gebruikt kunnen worden om een
speciale functie te dienen.

Fig. 17: Alternatieve functies van poort A

Fig. 18: Alternatieve functies van poort B

Ook de poorten C,D en E hebben alternatieve functies. Indien je meer wenst te weten
over het gebruik van een alternatieve functies kan je altijd de uitgebreide uitleg lezen in
de datasheets vanaf pag. 69

P. Dams - W. Andries
Elektronica en lab 3e graad IW 16

5.6 De analoge comparator.

De analoge comparator vergelijkt de ingangsspanningen op de ingangen Ain0 (


alternatieve functie van PB2) en Ain1 (PB3). Indien de spanning op Ain0 hoger is dan
deze op Ain1 dan zal de uitgang van de comparator AC0 geset worden.

De uitgang van de comparator kan gelezen worden door de microcontroller. Het is ook
mogelijk om deze uitgang met een interrupt te verbinden. Het is zelfs mogelijk om met
deze uitgang de Timer/Counter1 input capture ingang te triggeren.

Fig. 19: De analoge comparator

5.7 SPI

De Serial Peripheral Interface is een synchrone seriële interface die in staat is om op


hoge snelheid data te transfereren. Wij maken van deze interface gebruik om het
programmageheugen te programmeren.

P. Dams - W. Andries
Elektronica en lab 3e graad IW 17

5.8 USART

USART is de afkorting van Universal Synchronous Asynchronous Receiver (RX) and


Transmitter (TX). Het is een deel in de controller dat zorgt voor de synchrone of
asynchrone seriële communicatie.

De ingebouwde UART heeft volgende eigenschappen:


 Full-duplex,
 Asynchrone of synchrone verzending,
 Baud rate generator
 8 of 9 databits, 1 of 2 stopbits
 Overrun detectie
 Framing error detectie
 Afzonderlijke interrupts bij volledige ontvangst of verzending van een frame en bij
een leeg zendregister.
 …

In principe is communicatie vrij eenvoudig. Je plaatst de te verzenden databyte in het


UART data register (UDR). Deze byte wordt in een frame geplaatst en door het TX
schuifregister automatisch verzonden.

Wanneer het frame verzonden is zal opnieuw een byte uit het data register genomen en
verzonden worden.

Het verschil tussen synchrone en asynchrone verzending van de data ligt in het al dan
niet gebruiken van een kloklijn. Via UMSEL bit in het UCSRC register kan gekozen worden
tussen beide types verzending.
Bij synchrone verzending wordt een kloklijn naar de ontvanger gestuurd. Via de flanken
op deze lijn kan de ontvanger weten wanneer een frame begint of stopt en wanneer een
nieuwe databit gelezen kan worden.

Bij asynchrone verzending wordt gebruik gemaakt van een interne klok. Zowel de zender
als de ontvanger moet weten welke de ingestelde snelheid is. Op basis hiervan worden
een aantal stalen genomen van de data lijn. Het aantal stalen is dan veel groter dan het
aantal bits.
P. Dams - W. Andries
Elektronica en lab 3e graad IW 18

5.9 Power management en slaapmodes

Slaapmodes zorgen ervoor dat de gebruiker bepaalde ongebruikte delen van de


microcontroller kan uitzetten om het vermogengebruik te beperken.

De ATmega162 voorziet vijf slaapmodes:


1. Idle : SPI, USART, Comparator, Timer/counter, watchdog en
interrupt logica werken nog. De CPU werkt niet.
Via de interrupts kan de CPU weer ontwaken.
2. Power-down
3. Power-save
4. Standby
5. Extended-standby

De gebruiker kan kiezen voor één van deze modes via de SM (sleep mode) bits in de
controle registers van de CPU.

P. Dams - W. Andries

You might also like