Download de presentatie
GepubliceerdJosephus Leo van der Meer Laatst gewijzigd meer dan 8 jaar geleden
1
8051 based microcontroller
Microcontrollers 8051 based microcontroller XC888 from Infineon 09/2015 Roggemans M. (MGM)
2
Situering van het vak Embedded systemen Hardware georiënteerd
Hoort bij interfacetechnieken Basis voor embedded systemen derde jaar Basis voor “C” programmeren Specifieke uitwerking onderdeel computersystemen
3
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!!
4
Cursusmateriaal Nederlandstalige cursus (www.GROG.be):
thuis lezen als herhaling/voorbereiding les (min 5X) XC888 condensed ( FTP://telescript.thomasmore.be) Stick: bevat info van telescript (onmisbaar in labo) bevat eigen programma’s (onmisbaar in labo) XC888 microcontroller kit met USB kabel (onmisbaar in labo) Slides (PPT) (beknopte versie cursus (TOLEDO of FTP))
5
Examenverloop en quotering
Evaluatie Zie labo Examenverloop en quotering
6
Concept embedded oplossing probleem
7
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
8
Blokdiagramma computersysteem
9
Wat is een microcontroller?
10
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
11
Basis 8051
12
XC888
13
XC888
14
Memory map 8051 (XC888)
15
XC888
16
Memory map 8051 (XC888) General Purpose Registers
17
Memory map 8051 (XC888) Onderste 128 GPR’s
18
Memory map 8051 (XC888) SFR’s “oude” 8051
19
Memory map 8051 (XC888) SFR’s XC888
20
Memory map 8051 (XC888)
21
Effectieve geheugenkaart XC888
22
De MOV instructies Mnemonic OP-CODE Uitvoeringssnelheid
Symbolische werking
23
Alle MOV instructies (tussen registers met 8 bit getallen)
24
Hardware XC888 bord
25
Hardware XC888 bord
26
Hardware XC888 bord
27
Hardware XC888 bord
28
Hardware XC888 bord
29
Hardware XC888 bord
30
Hardware XC888 bord
31
Hardware XC888 bord
32
Hardware schakelaars & LED’s
33
MOVC & MOVX
34
DPTR instructies
35
DJNZ of lussen tellen
36
CJNE of getallen testen
37
XCEZ ; standaard I/O: ; initdipswitch klaar zetten poort 4 voor gebruik met de dipswitch ; initftoetsen klaar zetten 4 functieschakelaars onderaan scherm ; initleds klaar zetten LED's als outputs
38
XCEZ ; I2C interface (minimale interface op 100kbit/s) enkel master mode!! ; initiic klaar zetten iic interface ; iicstart genereren van een startconditie op iic poort ; iicstop genereren stop conditie op iic poort ; iicinbyteack lezen van 1 byte met ack (accu=output) ; iicinbytenack lezen van 1 byte met nack (accu=output) ; iicoutbyte schrijven van 1 byte (accu=input, c=waarde ack bit slave)
39
XCEZ ; LCD interace ; initlcd klaar zetten LCD voor gebruik (incl i2c init) ; 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 ; lcdlighton backlight aan ; lcdlightoff backlight uit ; lcdbuzon buzzer aan ; lcdbuzof buzzer uit
40
XCEZ ; Seriële interface (via USB stekker!!) ; 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 tot 000h code ; sioinchar inlezen van 1 ascii code in de accu ; sioinbufa inlezen van ascii buffer vanaf adres strtbuf, max 20h karakters!
41
XCEZ ; ADC ; initadc klaar zetten ADC voor minimaal gebruik ; adclm335 uitlezen lm35 (a-b) bevat resultaat ; adcpotmeter uitlezen van de potmeter (a-b) bevat resultaat
42
XCEZ ; 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
43
XCEZ ; Diverse ; delaya0k05s tijdsvertraging (waarde in accu)*0,05s ; delay1ms tijdsverraging 1 milliseconde ; delay10us tijdsvertraging 10 microseconde ; XCsw2xtal overschakelen rc naar kristal (Pauwels Danny) ; mapregs selecteer de SFR's in de mapped area ; nomapregs selecteer de SFR's in de non-mapped area
44
Talstelsels Getal=voorstelling!! Decimaal getal: Binair getal:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 waarde afhankelijk plaats getal Binair getal: 0, 1 waarde afhankelijk plaats getal
45
Talstelsels Hexadecimaal getal: BCD 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, ...
46
Talstelsels
47
Optelling
49
Verschil berekenen
50
INC en DEC
51
Vermenigvuldigen en delen
52
Basis stack werking
53
subroutine aanroepen
54
STACK bij CALL en RET
55
ADC
56
ADC SAR
57
ADC sample and hold
58
ADC 1LSB 1LSB= Vref/(aantal schaaldelen) 5v/1024=0,0048828125v
59
XC888 ADC
60
XC888 ADC
61
Timers 0 & 1
62
Timers 0 & 1
63
Timers 0 & 1
64
Timers 0 & 1
65
Timers 0 & 1
66
Timer 2 (21) Up-down count with reload
67
Timer 2 (21) capture
68
Timer 2 (21)
69
CCU 6
70
CCU 6
71
CCU 6
72
CCU 6 Gebruik p3.7 om een PWM signaal te genereren met CCU6 en T13
Initialiseer p3.7 (zie figuur onderaan slide) Initialiseer T13 Lees potmeter en gebruik signaal om PWM in te stellen (10 bit)
73
CCU 6
74
CCU 6
75
CCU 6
76
CCU 6
77
CCU 6
78
CCU 6
79
CCU 6
80
Interrupt
82
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
83
Interrupt structuur
84
Interrupt structuur
85
Periferie die interrupt opwekt CPU scant interrupt inputs
Interrupts en prioriteit toelaten
86
Interrupt vectoren
88
Algemene opmerkingen interrupt:
Per interruptroutine is er een bijkomende flowchart. De interruptroutine onderbreekt het hoofdprogramma. PUSH-POP!! Uitvoeringstijd interruptroutine. Prioriteiten kunnen nodig zijn.
89
XCEZ ; Seriële interface (via USB stekker!!) ; 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 tot 000h ; sioinchar inlezen van 1 ascii code in de accu ; sioinbufa inlezen van ascii buffer vanaf adres strtbuf, max 20h karakters!
90
Seriële poort hardware
Controller beschikt over: 2 UART poorten (met LIN mogelijkheid) 2 CAN nodes 1 SPI poort (Synchronous serial channel) 1 IIC poort (maar enkele via bitbanging) LET OP!!! Bij ontwerp XC888 bord werden keuzes gemaakt naar mogelijke level shifters!! Je kan selecteren op welke pinnen SIO naar buiten komt!
93
PIO
94
PIO
95
PIO als input ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; initdipswitch is een subroutine die de pinnen van poort 4 insteld als input met ; pull-up weerstanden ingeschakeld. Hierdoor kunnen schakelaars gebruikt worden naar ; massa zonder extra weerstanden. ; Gebruikt geen registers initdipswitch: push syscon0 ;juiste map selecteren mov syscon0,#004h push port_page ;tijdelijk bewaren (later herstellen) mov port_page,#001h ;selecteer poort page 1 mov p4_pudsel,#0ffh ;selecteer pull_up device mov p4_puden,#0ffh ;selectie inschakelen mov port_page,#000h ;pagina 0 selecteren mov p4_dir,#000h ;poort 4 als input schakelen pop port_page ;herstellen in oorspronkelijke staat pop syscon0 ;pagina terug herstellen ret
96
PIO als output ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; initleds is een routine die de poort 3 als output schakeld. De LED's ; worden gedoofd (actief laag om ze te laden branden). ; Gebruikt geen registers initleds: push syscon0 ;juiste map selecteren mov syscon0,#004h push port_page ;tijdelijk bewaren (later herstellen) mov port_page,#000h ;selecteer poort page 0 mov p3_dir,#0ffh ;poort 3 als output schakelen pop port_page ;herstellen in oorspronkelijke staat pop syscon0 ;pagina terug herstellen ret
97
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 (oscillator watchdog, zie verder)
98
Fail-safe werking: spanningsbewaking
(Embedded Voltage Regulator)
99
Fail safe werking: software bewaking
100
Fail safe werk-ing: beveiligde bits
101
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 bewaking ingangsklok
102
Snelheid processor aanpassen:
fsys moet 96MHz zijn
103
Snelheid processor aanpassen:
104
Snelheid processor aanpassen:
105
Snelheid programma deterministisch maken:
UITVOEREN ALS: lcall dffch of lcall dfffh
106
VRAGEN?
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.