Microcontrollers 8051 based microcontroller ADuC832 from Analog Devices 12/2011 Roggemans M. (MGM)
LES 1 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 hoe ziet een basis 8051 er uit ADuC mogelijkheden en blokdiagramma memorymap 8051/ADuC832 8051/AD C832 MOV instructies (inwendige adressering)
Situering van het vak Situering van het vak Embedded systemen Hardware georiënteerd Hardware georiënteerd Basis automatisering Basis voor PLC Specifieke uitwerking onderdeel Specifieke uitwerking onderdeel computersystemen • Manier van denken
• • • • •
Afspraken Labo Microcontrollers Afspraken Labo Microcontrollers • Aanwezigheid niet i h id i verplicht li h • Passieve aanwezigheid verboden g • 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 g/ g ((min 5X))
• ADuC_condensed • Stick:
(onmisbaar in labo)
– bevat info van telescript p (onmisbaar in labo) – bevat eigen programma’s (onmisbaar in labo)
• ADuC microcontroller kit met kabel 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 j g
• Open boek examen (praktische opgave): – vak kan je enkel leren door te doen!!! kk j k ll d d !!! – vak vraagt zekere incubatietijd!!! – blok en examenperiode onvoldoende tijd!!!
• Je Je mag op het examen alles gebruiken behalve mag op het examen alles gebruiken behalve communicatiemiddel of laptop
Examenverloop en quotering Examenverloop en quotering • Opgave beschikbaar op papier (moet je afgeven) • Je moet op de PC’s p van het labo werken • Examen duurt 1,5u Puntenverdeling: • Flowchart (5/20) • Werkt het programma 100% (5/20) Werkt het programma 100% (5/20) • Programma (10/20) (DIGITALE BEOORDELING)
(ANALOGE BEOORDELING)
(DIGITALE BEOORDELING)
Netspanning
Batterij
Voedingsspanningsbewaking
Systeemvoeding
Systeemclock
Concept embedded oplossing probleem Concept embedded oplossing probleem Power saving modes
I supply
Debugsysteem (PC)
MICROCONTROLLER Analoge signalen
Analoge ingang
Analoge uitgang
CPU 8/16/32 bit
T sensor
Signaal bewerking
JTAG interface
Analoge I/O poort
I2C SPI USB UART
ADC DAC
Signaal bewerking
Seriële interface
Databus Bus interface
Externe businterface Adresbus
Timer/Counter circuits Vref (DC)
Digitale I/O poort
Digitale I/O poort
Schakelaar
Digitale signalen Galvanisch gescheiden digitale ingang
Optocoupler
Externe interrupt ingangen
Concept embedded oplossing probleem Concept oplossing probleem IInput: t schakelaars spanningen seriëel ië l sensoren ...
+, -, x, / logische bewerkingen voorwaardelijke d lijk b beslissingen li i
Output: spanningen i LED's contactoren motoren t seriëel ...
• Universele hardware
• Relatie tussen input en output : • eenvoudig aanpasbaar (software=programma) • kan afhankelijk zijn van input en output (adaptief kan afhankelijk ijn an inp t en o tp t (adaptief(remmen voertuig)) • kan gebaseerd zijn op ervaringsgegevens (FUZZY) • is aanpasbaar nadat product verkocht is (firmware upgrade) is aanpasbaar nadat product verkocht is (firmware upgrade) • aanpasbaar aan voorkeuren gebruiker
Blokdiagramma computersysteem X-tal X tal Osc.
POR
ADRES DECODER
ADRESBUS
CPU
ROM (FLASH) (EPROM) (EEPROM)
DATABUS
SRAM
PAR. POORT
TIMER SER. COUNTER POORT
Wat is een microcontroller? Wat is een microcontroller?
Voordelen microcontroller (t.o.v. discrete computer) Voordelen microcontroller • Slechts enkele componenten: l h k l – eenvoudige PCB – weinig kans op hardware fouten – betrouwbaar – low cost – kleine afmetingen kleine afmetingen
Nadeel microcontroller (t.o.v. discrete computer): – minder flexibel i d fl ib l (je koopt een totaal pakket, maar er is wel veel keuze) – minder rekenkracht/geheugen
X -tal O sc.
POR
A D R E SBU S
Basis 8051 Basis 8051 CPU
X-tal X tal Osc.
POR
AD R E S DECODER
ADRES DECODER
RO M (FLA SH ) (E PR O M ) (EE PR O M )
SR AM
P AR . P O O RT
SE R. PO O R T
TIM ER C O U NTER
D A TAB U S
ADRESBUS
CPU
ROM (FLASH) (EPROM) (EEPROM)
DATABUS
SRAM
PAR. POORT
TIMER SER. COUNTER POORT
Memory map 8051 0000 0001 0002 0003 0004
0000 0001 0002 0003 0004
8 bit
8 bit
00 01 02
Data bus 80 81
Adres bus
ROM CODE memory
XRAM DATA memory
GPR
CPU FE FF 80 81
PROGRAMMA
SFR
PIO SIO AD Timers
FE FF FFFD FFFE FFFF
FFFD FFFE FFFF
Registers Controle bus
PSEN# RD# WR#
Read only
Read/Write
MOVC @DPTR 16 bit adres
Read/Write MOVX @DPTR
8 bit adres I/O & control
Memory map 8051 (ADuC832) Memory map 8051 (ADuC832)
General Purpose Registers
Memory map 8051 (ADuC) Onderste 128 GPR’s
Memory map 8051 (XC888) SFR’s “oude” 8051
Memory‐ Memory map 8051 (ADuC832)
Memory‐ map 8051 (ADuC832)
Memory map ADuC832 map ADuC832
256 bytes registers
De MOV instructies De MOV instructies Mnemonic
OP‐CODE
Uitvoeringssnelheid
Symbolische werking
Alle MOV instructies (tussen registers met 8 bit getallen)
LES 2 LES 2 • Doelstellingen: D l t lli – Testen en verdelen van de hardware – Verkennen van de IDE (Integrated Verkennen van de IDE (Integrated design design environment) en WSD software – Overlopen schema Overlopen schema’ss ADuC 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) knipperlicht variabele snelheid (met delaya0k05s) looplicht variabele snelheid (rotate instucties) Knight rider (herhaald gebruik rotate instructies)
Hardware ADuC bord Hardware ADuC
ADuC832 poorten ADuC832 poorten
Les 3 Les 3 • Doelstellingen: – MOVX en MOVC – looplicht via tabel (DJNZ, CJNE, DB, DPTR) – gebruik van de drivers gebruik van de drivers voor: • LCD • SIO • Arithmetic
MOVC & MOVX MOVC & MOVX
DPTR instructies DPTR instructies
DJNZ of lussen tellen DJNZ of lussen tellen
CJNE of getallen testen CJNE of getallen testen
ADuCEZ ; LCD interace ; initlcd ; initlcd ; lcdoutchar ; lcdoutbyte ; lcdoutbyte ; lcdoutnib ; lcdoutmsga ; lcdoutmsga
klaar zetten LCD voor gebruik klaar zetten LCD voor gebruik schrijven van ascii code (accu=input) schrijven hex waarde accu naar LCD schrijven hex waarde accu naar LCD afdrukken 4 laagste bits accu op LCD afdrukken ascii string @dptr, tot 000h code afdrukken ascii string @dptr, tot 000h code
De reële adressen +80h De reële adressen +80h Voor gebruik met driver: 00 wordt 80h, 01 wordt 81h,…
ADuCEZ ; Seriële interface ; initsio ; siooutchar i t h ; siooutbyte ; siooutnib ; siooutnib ; siooutmsga ; sioinchar ; sioinchar ;; sioinbufa 20h karakters!
klaar zetten seriële poort 9600 baud afdrukken ascii fd kk ii code (accu=input) d ( i t) afdrkken getal in accu afdrukken 4 laagste bits accu afdrukken 4 laagste bits accu afdrukken ascii string @dptr tot 000h code inlezen van 1 ascii code in de accu inlezen van 1 ascii code in de accu inlezen van ascii buffer vanaf adres strtbuf, max ,
ADuCEZ ; Arithmetic: A ith ti ; 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 ; add16 optellen 2 16 bit getallen 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 ; hexbcd16 omvormen 16 bit hex omvormen 16 bit hex naar bcd 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 Les 4 • Doelstellingen – talstelsels – basis wiskundige berekeningen (+,‐,x,/, 8 en 16 bit, CY vlag) – teller op LCD 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 uurwerk in uu:mm:ss met software delay
Talstelsels Getal=voorstelling!! Decimaal getal: Decimaal getal: – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – waarde afhankelijk plaats getal 123 1 2 3 d fh k lijk l l 123 1 2 3
Binair getal: g – 0, 1 – waarde afhankelijk plaats getal 1001 1 0 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: g – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – binair gecodeerd: 0000, 0001, 0010, 0011, ... binair gecodeerd: 0000 0001 0010 0011
Talstelsels
Optelling
Verschil berekenen Verschil berekenen
INC en DEC INC en DEC
Vermenigvuldigen en delen Vermenigvuldigen en delen
Les 5 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
Indirect adresseerbare registers
Direct adresseerbare registers
GPR
SFR (I/O)
ffh
ffh
90h Stack ruimte
Basis stack stack werking e g
86h 85h
Eerste byte gebruikt als stack Wordt niet gebruikt als stack
85h 80h 7fh
00h
81h=SP 80h
LC A LL
R eturn a d d re ss 1
subroutine aanroepen
S ubroutine
LC A LL
R eturn a d d re ss 2
RET
Externe controllergeheugen met instructies
Adres van de instructies 16-bits
instructie n instructie n+1 instructie n+2 i instructie i n+33 call subroutine instructie n+5 instructie n+6
XXYY
STACK STACK bij CALL bij CALL en RET
9
Stack-pointer register (wijst naar intern geheugen in de controller)
Interne controllergeheugen
SP 8-bit SP na reset
1
SP+1
3
SP+1
2
opslaan LSB
4
opslaan MSB
YY XX
5
PC = subroutine
Program counter 16 16-bit bit
Jump to XXYY
PChigh
PClow
subroutine
6
Jump to subroutine
7
PChigh =XX SP-1
8
PClow =YY SP-1
return
07h 08h 09h 0Ah 0Bh
Les 6 Les 6 • Doelstellingen: – principe AD omvorming p p g – mogelijkheden ADC ADuC832 – Mogelijkheden DAC ADuC832 Mogelijkheden DAC ADuC832 – lezen potmeter – lezen potmeter als voltmeter tussen 0‐5v
ADC
ADC SAR ADC SAR
ADC sample and hold ADC sample and hold
ADC 1LSB ADC 1LSB 1LSB= Vref/(aantal schaaldelen) 5v/4096=0,001220703v 2,5v/4096=0,000610351v
ADuC832 ADC Output 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 Les 7 • Afwerken alle vorige oefeningen • Stellen van vragen Stellen van vragen
Les 8 Les 8 • Doelstellingen: – Timers 0, 1 , – RTC (TIC) – Oefening: • Afdrukken van een uurwerk in UU:MM:SS op LCD
Timers 0 & 1 Timers 0 & 1 OSC /12 C/T 0 C/T=0 C/T=1 /
Timers 0 & 1 Timers 0 & 1 OSC /12 C/T=0 C/T 1 C/T=1
T0 en T1 SFR’s
TMOD register TMOD register
RTC (TIC) RTC (TIC)
TIC SFR’ss TIC SFR
TIMECON
Les 9 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 1 cyclus programma
Tijd j Test HW Geen test HW
Test HW Geen test HW
Test HW Geen test HW
D oo r ha rdw are op ge start H o ofd p rog ram m a
H o ofd p rog ram m a
Initialisa ties (g een interrup ts)
In itia lisatie s (oo k inte rrup ts)
T a ak 1
T aa k 1
In te rru pt rou tine
N e en
T e st H W Ja
S p eciaa l 1
S p eciaa l 1
S p eciaa l 2
S p eciaa l 2
RETI T a ak 2
T aa k 2
T a ak 3
T aa k 3
Z o n d er in te rru pt
M e t interru p t
Interrupts • Noodzakelijk wanneer hardware niet kan pp g door CPU wachten op polling • Wordt gegenereerd door hardware: – timers, I/O pinnen, ADC, SIO, system,... ti I/O i ADC SIO t
• Initialisatie nodig: – hardware die interrupt zal genereren – CPU
• Er moet een interruptroutine klaar staan
Mogelijke interrupt bronnen en ‐adressen Mogelijke interrupt bronnen en adressen
‐Interrupts zijn HARDWARE GEBEURTENISSEN. ‐Een Een interrupt activeert een interruptroutine (indien ingeschakeld). interrupt activeert een interruptroutine (indien ingeschakeld) ‐Een interruptroutine moet met een RETI afgesloten worden. ‐PUSH PUSH en POP kunnen noodzakelijk zijn. en POP kunnen noodzakelijk zijn. ‐Interruptroutines zijn beperkt in de tijd. j p j g j ‐Bij meer dan een interruptbron zijn PRIORITEITEN belangrijk. ‐Overlappingen in het geheugen moeten vermeden worden.
Interrupt structuur Interrupt structuur
Standaard 8051 interrupt hardware Standaard 8051 interrupt
Les 10 Les 10 • Doelstellingen: – Uitleg over stappenmotoren g pp – Uitleg over DC motoren – oefening met stappenmotor oefening met stappenmotor – oefening met DC motor
Digitale output: stappen motoren
Interface Technieken
84
Digitale output: stappen motoren
Interface Technieken
85
Digitale output Digitale output
Interface Technieken
86
Digitale output Digitale output
Interface Technieken
87
Digitale output Digitale output
Interface Technieken
88
Digitale output Digitale output
Interface Technieken
89
Digitale output: current chopping
Interface Technieken
90
Digitale output Digitale output
Interface Technieken
(recirculatie)
91
Digitale output Digitale output
Interface Technieken
(braking)
92
Digitale output: full step aansturing
Interface Technieken
93
Digitale output: half step aansturing
Interface Technieken
94
Digitale output Digitale output
Interface Technieken
(microstepping0
95
Digitale output: microstepping
Interface Technieken
96
Digitale output: inductieve belasting
Interface Technieken
97
Les 11 Les 11 • Doelstellingen: – Speciale mogelijkheden: p g j • Fail safe werking – Spanningsbewaking – Software bewaking
• Snelheid processor wijzigen • Low power mogelijkheden (hier generiek bespreken)
– Afwerken oefeningen vorige les g g
Fail safe werking: • Systeem kan de fout ingaan door: – storingen in voedingsspanning storingen in voedingsspanning • spanningsbewaking • overspanningsbeveiliging
– storingen in programmaverloop (externe of interne factoren) • externe beinvloeding externe beinvloeding (EMC, EMI) (EMC EMI) • eventuele bugs in code • uitblijven van verwachte signalen (inputs) uitblijven van verwachte signalen (inputs)
– defect gaan van de hardware (heel duur om op te vangen) • space, nucleaire toepassingen, ... space nucleaire toepassingen
– Bewaking van de systeemklok
Snelheid processor aanpassen: Snelheid processor aanpassen: • OSC: – RC, XTAL, TTL‐klok , , – kunnen gekozen worden uit gamma aan mogelijkheden (toepassingsafhankelijk wat is mogelijkheden (toepassingsafhankelijk, wat is beschikbaar in systeem)
• PLL: PLL – aanpassen ingangsklok aan basisfrequentie hardware
PLLCON
Les 12 Les 12 • Doelstellingen: – stellen van vragen g – afwerken van oefeningen – oplossen specifieke problemen oplossen specifieke problemen