Microcontrollers Theorie 8051 based microcontroller ADuC832 from Analog Devices 01/2016 Roggemans 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/Les Microcontrollers Aanwezigheid niet verplicht Passieve aanwezigheid verboden Actieve participatie verplicht Misbruik infrastructuur verboden: – niet eten of drinken in labo/les – respect voor apparatuur Stiptheid verplicht!!
Cursusmateriaal Beschikbaar via: – Nederlandstalige cursus (optioneel): – Thuis lezen als herhaling/voorbereiding les (min 5X) – ftp://telescript.thomasmore.be/pub/CD- Microcontrollers/8051/ADuC800V2/ Alle materiaal met betrekking op labo (software, documentatie, oef) ADuC_condensed (onmisbaar in labo en lessen) – TOLEDO ADuC_20xx_labo (bevat uitleg over labo opgaven onmisbaar in labo) ADuC_20xx_theorie (beknopte versie cursus onmisbaar in de les) Stick (minimaal 100MB) : – bevat info van telescript (onmisbaar in labo) – bevat eigen programma’s (onmisbaar in labo) ADuC microcontroller kit (onmisbaar in labo) met kabel (thuis)
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 (laptop, GSM, tablet,…lichtsignalen, geluidsgolven,…)
Examenverloop en quotering Opgave beschikbaar op papier (moet je afgeven) Je moet op de PC’s van het labo werken Examen duurt 1u en 30 minuten Puntenverdeling: Flowchart (5/20) (DIGITALE BEOORDELING) Werkt het programma 100% (5/20) (DIGITALE BEOORDELING) Programma (10/20) (ANALOGE BEOORDELING)
Waarom programmeerbare bouwstenen gebruiken? 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 Microcontroller - PLC - Regelaar Procescomputer – Controller -…
Blokdiagramma computersysteem
Basis 8051
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
Memory map 8051
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 ADuC bytes registers Optioneel RAM (niet gebruikt) MOVC
De MOV instructies Mnemonic OP-CODEUitvoeringssnelheid Symbolische werking
Alle MOV instructies (tussen registers met 8 bit getallen)
LES 2 Doelstellingen: – Overlopen schema’s ADuC bord – ADuC poorten – looplicht via tabel: DB MOVX, MOVC en DPTR DJNZ CJNE
ADuC832 poorten
Tabel aanmaken/uitlezen Waar? In FLASH geheugen (ROM) Hoe? Na DB (Define Byte) in programma VB: ljmplus;programma sluiten met lus Jef:db b;eerste waarde in tabel db b;tweede waarde in tabel … db b;laatste waarde in tabel #include“c:\aducezx.inc”; x afhankelijk gebruikte bord
Tabel aanmaken/uitlezen Hoe aangeven in programma waar tabel in geheugen zit? Jef: = adres eerste byte in tabel in geheugen = label in programma Hoe Flash lezen? movc ;lees uit code geheugen naar de accu dptr=DPTR= pointer die 16 bit adres moet bevatten jef: =16 bit adres in geheugen = label in programma a? Voor de instructie ongekende waarde eerst op 0 zetten mov dptr,#jef ;16 bit adres tabel in dptr laden mov a,#00h ;eerst accu=0 mov ; mov = steek in accu wat er op adres in dptr staat Na de instructie bevat a de waarde uit de tabel (in vb = b)
MOVC & MOVX
DPTR instructies
DJNZ of lussen tellen
CJNE of getallen testen
Les 3 Doelstellingen: – gebruik van de drivers voor: LCD Arithmetic – talstelsels – basis wiskundige berekeningen (+,-,x,/, 8 en 16 bit, CY vlag)
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 tot 000h code De reële adressen +80h Voor gebruik met driver: 00 wordt 80h, 01 wordt 81h,…
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 ; getadc lees spanning op analoge input ; getadcmeet de spanning op de analoge input waarvan het nummer in de accu (a) ; staat. ; ; input:accu= te meten kanaalnummer (00h-0Fh) ; output:accu= 8 bit meetresultaat ; gebruikt: accu
Talstelsels Getal=voorstelling!! Decimaal getal: – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – waarde afhankelijk plaats getal Binair getal: – 0, 1 – waarde afhankelijk plaats getal
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 4 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)
Basis stack werking
subroutine aanroepen
Les 5 Doelstellingen: – principe AD omvorming – mogelijkheden ADC ADuC832 – Mogelijkheden DAC ADuC832 – Timers 0, 1 – RTC (TIC)
ADC
ADC SAR
ADC sample and hold
ADC 1LSB 1LSB= Vref/(aantal schaaldelen) 5v/256=0, …..v
Gebruik getadc getadc is een functie: lcallgetadc;roep functie op getadc verwacht input parameter mova,#xx;xx=06h voor LM335 (10mV/K) ;xx=07h voor potmeter (0-5v) lcallgetadc;roep functie op getadc geeft resultaat terug na lcall getadc bevat accu 8 bit meetresultaat: 00h=0v ffh=4,980v ((5/256)x255)
ADuC832 ADC Optionele buffering voor externe signalen. -beveiliging tegen overspanning -opvangen capacitieve load S&H
ADuC832 DAC
Timers 0 & 1 OSC /12 C/T=0 C/T=1
Timers 0 & 1 OSC /12 C/T=0 C/T=1
RTC (TIC) TIC SFR’s
TIMECON
Les 6 Doelstellingen: – Uitleg interrupt op 8051 en generiek – Belang van: PUSH-POP uitvoeringstijd flowchart – Uitleggen hoe interrupt interval instelbaar – Uitleg over stappenmotoren – Uitleg over DC motoren
Interrupt
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
Interface Technieken74 Digitale output: stappen motoren
Interface Technieken75 Digitale output: stappen motoren
Interface Technieken76 Digitale output
Interface Technieken77 Digitale output
Interface Technieken78 Digitale output
Interface Technieken79 Digitale output
Interface Technieken80 Digitale output: current chopping
Interface Technieken81 Digitale output (recirculatie)
Interface Technieken82 Digitale output (braking)
Interface Technieken83 Digitale output: full step aansturing
Interface Technieken84 Digitale output: half step aansturing
Interface Technieken85 Digitale output (microstepping0
Interface Technieken86 Digitale output: inductieve belasting
Einde. Vragen?