Post on 08-Jun-2015
Microcontrollers
8051 based microcontrollerADuC832 from Analog Devices
12/2011Roggemans M. (MGM)
LES 1
• Doelstellingen:– situering vak, afspraken labo en evaluatie toelichten– concept embedded oplossing probleem– blokdiagramma computersysteem– wat is een microcontroller?– hoe ziet een basis 8051 er uit– ADuC mogelijkheden en blokdiagramma– memorymap 8051/ADuC832– MOV instructies (inwendige adressering)
Situering van het vak
• Embedded systemen• Hardware georiënteerd• Basis automatisering• Basis voor PLC• Specifieke uitwerking onderdeel
computersystemen• Manier van denken
Afspraken Labo Microcontrollers
• Aanwezigheid niet verplicht• Passieve aanwezigheid verboden• Actieve participatie verplicht
• Misbruik infrastructuur verboden:– niet eten of drinken in labo– respect voor apparatuur
• Stiptheid verplicht!!
Cursusmateriaal
• Nederlandstalige cursus:– thuis lezen als herhaling/voorbereiding les (min 5X)
• ADuC_condensed (onmisbaar in labo)
• Stick:– bevat info van telescript (onmisbaar in labo)
– bevat eigen programma’s (onmisbaar in labo)
• ADuC microcontroller kit met kabel (onmisbaar in labo)
• Slides (PPT) (beknopte versie cursus) (onmisbaar in labo)
Evaluatie
• GEEN permanente evaluatie:– lessen zijn er om te oefenen en vragen te stellen
• Open boek examen (praktische opgave):– vak kan je enkel leren door te doen!!!– vak vraagt zekere incubatietijd!!!– blok en examenperiode onvoldoende tijd!!!
• Je mag op het examen alles gebruiken behalve communicatiemiddel of laptop
Examenverloop en quotering
• Opgave beschikbaar op papier (moet je afgeven)• Je moet op de PC’s van het labo werken• Examen duurt 1,5u
Puntenverdeling:• Flowchart (5/20) (DIGITALE BEOORDELING)
• Werkt het programma 100% (5/20) (DIGITALE BEOORDELING)
• Programma (10/20) (ANALOGE BEOORDELING)
Concept embedded oplossing probleemVoedingsspannings-
bewakingSysteemvoeding Systeemclock
T sensor
Vref (DC)
CPU8/16/32 bit
AnalogeI/O
poort
Businterface
JTAGinterface
Timer/Countercircuits
Seriële interface
Debugsysteem (PC)
Adresbus
Databus
Signaalbewerking
Opto-coupler
Digitale I/O poort Digitale I/O poort
Powersavingmodes
Netspanning Batterij
Analogesignalen
SignaalbewerkingAnaloge
ingang
Analogeuitgang
Schakelaar
Galvanischgescheiden
digitale ingang
I2CSPIUSB
UART
MICROCONTROLLER
Externeinterruptingangen
Externebusinterface
Digitale signalen
ADC
DAC
I supply
Concept embedded oplossing probleem
• Universele hardware• Relatie tussen input en output :
• eenvoudig aanpasbaar (software=programma)• kan afhankelijk zijn van input en output (adaptief(remmen voertuig))• kan gebaseerd zijn op ervaringsgegevens (FUZZY)• is aanpasbaar nadat product verkocht is (firmware upgrade)• aanpasbaar aan voorkeuren gebruiker
+, -, x, /logische bewerkingen
voorwaardelijke beslissingen
Input:schakelaarsspanningen
seriëelsensoren
...
Output:spanningen
LED'scontactoren
motorenseriëel
...
Blokdiagramma computersysteem
CPU
X-talOsc.
PORADRES
DECODER
ROM(FLASH)(EPROM)
(EEPROM)
SRAM
ADRESBUS
DATABUS
PAR.POORT
SER.POORT
TIMERCOUNTER
Wat is een microcontroller?
Voordelen microcontroller (t.o.v. discrete computer)
• Slechts enkele componenten:– eenvoudige PCB– weinig kans op hardware fouten– betrouwbaar– low cost– kleine afmetingen
Nadeel microcontroller (t.o.v. discrete computer):
– minder flexibel (je koopt een totaal pakket, maar er is wel veel keuze)
– minder rekenkracht/geheugen
CPU
X-talOsc.
PORADRES
DECODER
ROM(FLASH)(EPROM)
(EEPROM)
SRAM
ADRESBUS
DATABUS
PAR.POORT
SER.POORT
TIMERCOUNTER
Basis 8051CPU
X-talOsc.
PORADRES
DECODER
ROM(FLASH)(EPROM)
(EEPROM)
SRAM
ADRESBUS
DATABUS
PAR.POORT
SER.POORT
TIMERCOUNTER
Memory map 8051
GPR
00000001
0002
00000001
0002
FFFDFFFEFFFF
FFFD
00040003
00040003
FFFFFFFE
XRAMDATA memory
ROMCODE memory
PROGRAMMA
CPU
Registers
SFR
PIOSIOAD
Timers
00
02
FFFE
8180
FEFF
01
8081
Data bus
Adres bus
RD#
WR#
PSEN#
8 bit 8 bit
MOVC@DPTR
MOVX@DPTR
I/O & control
Read/Write16 bit adres 8 bit adres
Read/WriteRead only
Controlebus
Memory map 8051 (ADuC832)
General Purpose Registers
Memory map 8051 (ADuC)
Onderste 128 GPR’s
Memory map 8051 (XC888)
SFR’s “oude” 8051
Memory- map 8051
(ADuC832)
Memory- map 8051
(ADuC832)
Memory map ADuC832
256 bytesregisters
De MOV instructies
Mnemonic OP-CODE Uitvoeringssnelheid Symbolische werking
Alle MOV instructies (tussen registers met 8 bit getallen)
LES 2
• Doelstellingen:– Testen en verdelen van de hardware– Verkennen van de IDE (Integrated design environment) en
WSD software– Overlopen schema’s ADuC bord– maken programma’s (via sjabloon):
• schakelaars naar LED’s• knipperlicht zonder tijdsvertraging (basis uitvoeringstijd instructies)
• knipperlicht vaste snelheid (met delaya0k05s)
• knipperlicht variabele snelheid (met delaya0k05s)
• looplicht variabele snelheid (rotate instucties)• Knight rider (herhaald gebruik rotate instructies)
Hardware ADuC bord
ADuC832 poorten
Les 3
• Doelstellingen:– MOVX en MOVC– looplicht via tabel (DJNZ, CJNE, DB, DPTR)– gebruik van de drivers voor:
• LCD• SIO• Arithmetic
MOVC & MOVX
DPTR instructies
DJNZ of lussen tellen
CJNE of getallen testen
ADuCEZ; LCD interace ; initlcd klaar zetten LCD voor gebruik; lcdoutchar schrijven van ascii code (accu=input); lcdoutbyte schrijven hex waarde accu naar LCD; lcdoutnib afdrukken 4 laagste bits accu op LCD; lcdoutmsga afdrukken ascii string @dptr, tot 000h code
De reële adressen +80hVoor gebruik met driver:00 wordt 80h, 01 wordt 81h,…
ADuCEZ
; Seriële interface; initsio klaar zetten seriële poort 9600 baud; siooutchar afdrukken ascii code (accu=input); siooutbyte afdrkken getal in accu ; siooutnib afdrukken 4 laagste bits accu; siooutmsga afdrukken ascii string @dptr tot 000h code; sioinchar inlezen van 1 ascii code in de accu
; sioinbufa inlezen van ascii buffer vanaf adres strtbuf, max 20h karakters!
ADuCEZ; Arithmetic:; mul16 vermenigvuldigen 2 16 bit getallen; mul32 vermenigvuldigen 2 32 bit getallen; div16 delen 2 16 bit getallen; div32 delen 2 32 bit getallen; add16 optellen 2 16 bit getallen; add32 optellen 2 32 bit getallen; sub16 verschil 2 16 bit getallen; sub32 verschil 2 32 bit getallen; hexbcd8 omvormen 8 bit hex naar bcd; hexbcd16 omvormen 16 bit hex naar bcd; bcdhex8 omvormen 8 bit bcd naar hex; bcdhex16 omvormen 16 bit bcd naar hex
ADuCEZ
; Diverse; delaya0k05s tijdsvertraging (waarde in accu)*0,05s
Les 4
• Doelstellingen– talstelsels– basis wiskundige berekeningen (+,-,x,/, 8 en 16 bit, CY vlag)
– teller op LCD (een decimaal en een hex, stand dip-switches bij op tellen, een decimaal en een hex stand dip-switches er van aftrekken (4 tellers!!))
– uurwerk in uu:mm:ss, met software delay
Talstelsels
Getal=voorstelling!!Decimaal getal:
– 0, 1, 2, 3, 4, 5, 6, 7, 8, 9– waarde afhankelijk plaats getal 123 1 2 3
Binair getal:– 0, 1– waarde afhankelijk plaats getal 1001 1 0 0 1
Talstelsels
Hexadecimaal getal:– 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F– waarde afhankelijk plaats getal FF
BCD getal:– 0, 1, 2, 3, 4, 5, 6, 7, 8, 9– binair gecodeerd: 0000, 0001, 0010, 0011, ...
Talstelsels
Optelling
Verschil berekenen
INC en DEC
Vermenigvuldigen en delen
Les 5
• Doelstellingen:– Overlopen instructieset (adhv. CONDENSED) :
• speciale “verplaats” instructies• logische instructies (ANL, ORL, XRL)• bit-instructies• voorwaardelijke sprongen• stack bij subroutines (LCALL, RET, PUSH en POP)
– Programma looplicht 1 uit 4 via functieschakelaars:• contactdender• overnamecontact
Basis stack
werking
ffh
00h
7fh
80h 80h
ffh
SFR (I/O)GPR
81h=SP85h
Stack ruimte
85h
86h
90h
Eerste byte gebruikt als stack
Wordt niet gebruikt als stack
Indirect adresseerbare registers Direct adresseerbare registers
subroutine aanroepen
LCALL
RET
Subroutine
LCALL
Returnaddress 1
Returnaddress 2
STACK bij CALL en RET
instructie ninstructie n+1instructie n+2instructie n+3call subroutineinstructie n+5instructie n+6
XXYY
Externe controller-geheugen met
instructiesAdres vande
instructies16-bits
Interne controller-geheugen
Stack-pointer register(wijst naar intern
geheugen in decontroller)
07h
08h
09h
0Ah
0Bh
SP+1
SP+1
YYXX
SP na reset
SP 8-bit
subroutine
return
1
2
3
4 5
opslaanLSB
opslaanMSB
Program counter 16-bit
PC = subroutine
6
7
8
9
PChigh =XXSP-1
PClow =YYSP-1
Jump to XXYY
Jump to subroutine
PChigh PClow
Les 6
• Doelstellingen:– principe AD omvorming– mogelijkheden ADC ADuC832– Mogelijkheden DAC ADuC832– lezen potmeter– lezen potmeter als voltmeter tussen 0-5v
ADC
ADC SAR
ADC sample and hold
ADC 1LSB
1LSB= Vref/(aantal schaaldelen)
5v/4096=0,001220703v2,5v/4096=0,000610351v
ADuC832 ADCOutput formaat ADC
ADC SFR’s
ADuC832 ADC
Optionele buffering voor externe signalen.
-beveiliging tegen overspanning
-opvangen capacitieve load S&H
ADuC832 DAC
ADuC832 DAC
DAC SFR’s
Les 7
• Afwerken alle vorige oefeningen• Stellen van vragen
Les 8
• Doelstellingen:– Timers 0, 1 – RTC (TIC)– Oefening:
• Afdrukken van een uurwerk in UU:MM:SS op LCD
Timers 0 & 1 OSC/12
C/T=0
C/T=1
Timers 0 & 1OSC/12
C/T=0
C/T=1
T0 en T1 SFR’s
TMOD register
RTC (TIC)
TIC SFR’s
TIMECON
Les 9
• Doelstellingen:– Uitleg interrupt op 8051 en generiek– Belang van:
• PUSH-POP• uitvoeringstijd• flowchart
– Oefening:• knipperlicht op interrupt, teller LCD in hoofdprogramma• teller lcd in interrupt, looplicht in hoofdprogramma
– Uitleggen hoe interrupt interval instelbaar
Interrupt
Tijd
1 cyclus programma
Test HW Test HW Test HW
Geen test HW Geen test HW Geen test HW
Initialisaties(geen interrupts)
Taak 1
Test HW
Speciaal 1
Speciaal 2
Taak 2
Taak 3
Initialisaties(ook interrupts)
Taak 1
Taak 2
Taak 3
Interruptroutine
Speciaal 1
Speciaal 2
RETI
Met interruptZonder interrupt
Hoofdprogramma
Hoofdprogramma
Neen
Ja
Door hardware opgestart
Interrupts
• Noodzakelijk wanneer hardware niet kan wachten op polling door CPU
• Wordt gegenereerd door hardware:– timers, I/O pinnen, ADC, SIO, system,...
• Initialisatie nodig:– hardware die interrupt zal genereren– CPU
• Er moet een interruptroutine klaar staan
Mogelijke interrupt bronnen en -adressen
-Interrupts zijn HARDWARE GEBEURTENISSEN.
-Een interrupt activeert een interruptroutine (indien ingeschakeld).
-Een interruptroutine moet met een RETI afgesloten worden.
-PUSH en POP kunnen noodzakelijk zijn.
-Interruptroutines zijn beperkt in de tijd.
-Bij meer dan een interruptbron zijn PRIORITEITEN belangrijk.
-Overlappingen in het geheugen moeten vermeden worden.
Interrupt structuur
Standaard 8051 interrupt hardware
Les 10
• Doelstellingen:– Uitleg over stappenmotoren– Uitleg over DC motoren– oefening met stappenmotor– oefening met DC motor
Interface Technieken 84
Digitale output:stappen motoren
Interface Technieken 85
Digitale output:stappen motoren
Interface Technieken 86
Digitale output
Interface Technieken 87
Digitale output
Interface Technieken 88
Digitale output
Interface Technieken 89
Digitale output
Interface Technieken 90
Digitale output:current chopping
Interface Technieken 91
Digitale output (recirculatie)
Interface Technieken 92
Digitale output (braking)
Interface Technieken 93
Digitale output:full step aansturing
Interface Technieken 94
Digitale output:half step aansturing
Interface Technieken 95
Digitale output (microstepping0
Interface Technieken 96
Digitale output:microstepping
Interface Technieken 97
Digitale output:inductieve belasting
Les 11
• Doelstellingen:– Speciale mogelijkheden:
• Fail safe werking– Spanningsbewaking– Software bewaking
• Snelheid processor wijzigen• Low power mogelijkheden (hier generiek bespreken)
– Afwerken oefeningen vorige les
Fail safe werking:• Systeem kan de fout ingaan door:
– storingen in voedingsspanning• spanningsbewaking • overspanningsbeveiliging
– storingen in programmaverloop (externe of interne factoren)
• externe beinvloeding (EMC, EMI)• eventuele bugs in code• uitblijven van verwachte signalen (inputs)
– defect gaan van de hardware (heel duur om op te vangen)
• space, nucleaire toepassingen, ...
– Bewaking van de systeemklok
Snelheid processor aanpassen:
• OSC:– RC, XTAL, TTL-klok– kunnen gekozen worden uit gamma aan
mogelijkheden (toepassingsafhankelijk, wat is beschikbaar in systeem)
• PLL: – aanpassen ingangsklok aan basisfrequentie
hardware
PLLCON
Les 12
• Doelstellingen:– stellen van vragen– afwerken van oefeningen– oplossen specifieke problemen