De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

8051 based microcontroller

Verwante presentaties


Presentatie over: "8051 based microcontroller"— Transcript van de presentatie:

1 8051 based microcontroller
Microcontrollers 8051 based microcontroller XC888 from Infineon 08/2011 Roggemans M. (MGM)

2 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 XC888 mogelijkheden en blokdiagramma memorymap 8051/XC888 MOV instructies (inwendige adressering)

3 Situering van het vak Embedded systemen Hardware georienteerd
Hoort bij interfacetechnieken Basis voor embedded systemen derde jaar Basis voor “C” programmeren Specifieke uitwerking onderdeel computersystemen

4 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!!

5 Cursusmateriaal Nederlandstalige cursus:
thuis lezen als herhaling/voorbereiding les (min 5X) XC888 condensed (onmisbaar in labo) 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) (onmisbaar in labo)

6 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

7 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)

8 Concept embedded oplossing probleem

9 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

10 Blokdiagramma computersysteem

11 Wat is een microcontroller?

12 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

13 Basis 8051

14 XC888

15 XC888

16 Memory map 8051 (XC888)

17 XC888

18 Memory map 8051 (XC888) General Purpose Registers

19 Memory map 8051 (XC888) Onderste 128 GPR’s

20 Memory map 8051 (XC888) SFR’s “oude” 8051

21 Memory map 8051 (XC888) SFR’s XC888

22 Memory map 8051 (XC888)

23 Effectieve geheugenkaart XC888

24 De MOV instructies Mnemonic OP-CODE Uitvoeringssnelheid
Symbolische werking

25 Alle MOV instructies (tussen registers met 8 bit getallen)

26 LES 2 Doelstellingen: Testen en verdelen van de hardware
Verkennen van de IDE (Integrated design environment) en Infineon FLOAT software Overlopen schema’s XC888 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 (hehaald gebruik rotate instructies)

27 Hardware XC888 bord

28 Hardware XC888 bord

29 Hardware XC888 bord

30 Hardware XC888 bord

31 Hardware XC888 bord

32 Hardware XC888 bord

33 Hardware XC888 bord

34 Hardware XC888 bord

35 Hardware schakelaars & LED’s

36 Les 3 Doelstellingen: MOVX en MOVC
looplicht via tabel (DJNZ, CJNE, DB, DPTR) gebruik van de drivers voor: STDIO (herhaling les 2) Diverse (aanvulling/ herhaling les 2) LCD ADC Arithmetic IIC teller op LCD scherm (8 bit hex en 8 bit decimaal, inc en dec)

37 MOVC & MOVX

38 DPTR instructies

39 DJNZ of lussen tellen

40 CJNE of getallen testen

41 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

42 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)

43 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

44 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!

45 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

46 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

47 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

48 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

49 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

50 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, ...

51 Talstelsels

52 Optelling

53

54 Verschil berekenen

55 INC en DEC

56 Vermenigvuldigen en delen

57 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

58 Basis stack werking

59 subroutine aanroepen

60 STACK bij CALL en RET

61 Les 6 Doelstellingen: principe AD omvorming
lezen potmeter (via driver) lezen temperatuur en omrekening (via driver) mogelijkheden ADC XC888

62 ADC

63 ADC SAR

64 ADC sample and hold

65 ADC 1LSB 1LSB= Vref/(aantal schaaldelen) 5v/1024=0,0048828125v

66 XC888 ADC

67 XC888 ADC

68 Les 7 Doelstellingen: Timers 0, 1 Timer 2 beknopt CCU6 met PWM
Oefening: meten tijdsinterval indrukken 2 schakelaars (t0 in 16 en 24 bit mode, hex op LCD) PWM aansturen LED’s P3

69 Timers 0 & 1

70 Timers 0 & 1

71 Timers 0 & 1

72 Timers 0 & 1

73 Timers 0 & 1

74 Timer 2 (21) Up-down count with reload

75 Timer 2 (21) capture

76 Timer 2 (21)

77 CCU 6

78 CCU 6

79 CCU 6

80 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)

81 CCU 6

82 CCU 6

83 CCU 6

84 CCU 6

85 CCU 6

86 CCU 6

87 CCU 6

88 Les 8 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

89 Interrupt

90

91 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

92 Interrupt structuur

93 Interrupt structuur

94 Periferie die interrupt opwekt CPU scant interrupt inputs
Interrupts en prioriteit toelaten

95 Interrupt vectoren

96

97 Algemene opmerkingen interrupt:
Per interruptroutine is er een bijkomende flowchart. De interruptroutine onderbreekt het hoofdprogramma. PUSH-POP!! Uitvoeringstijd interruptroutine. Prioriteiten kunnen nodig zijn.

98 Les 9 Doelstelling: Bufferles: Afwerken oefeningen Stellen van vragen
Bijkomende uitleg

99 Les 10 Doelstellingen: Gebruik van de seriële poort via driver routines Belang van level shifters en baud rate Programma: rekenmachine via hyperterminal (USB poort) op interrupt echo ingegeven karakters, looplicht als hoofdprogramma

100 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!

101 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!

102

103

104 Les 11 Doelstellingen: Uitleg over parallelle poorten
Uitleg over stappenmotoren Uitleg over DC motoren oefening met stappenmotor pwm dc motor, meten op tegenEMK

105 PIO

106 PIO

107 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

108 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

109 Les 12 Doelstellingen: Speciale mogelijkheden:
Fail safe werking Spanningsbewaking Software bewaking Beveiligde bits Bewaking systeemklok Snelheid processor wijzigen Snelheid software deterministisch maken Low power mogelijkheden (hier generiek bespreken) Afwerken oefeningen vorige les Software delay maken met gekende uitvoeringstijd

110 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)

111 Fail-safe werking: spanningsbewaking
(Embedded Voltage Regulator)

112 Fail safe werking: software bewaking

113 Fail safe werk-ing: beveiligde bits

114 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

115 Snelheid processor aanpassen:
fsys moet 96MHz zijn

116 Snelheid processor aanpassen:

117 Snelheid processor aanpassen:

118 Snelheid programma deterministisch maken:
UITVOEREN ALS: lcall dffch of lcall dfffh

119 Les 13 Doelstellingen: stellen van vragen afwerken van oefeningen
oplossen specifieke problemen


Download ppt "8051 based microcontroller"

Verwante presentaties


Ads door Google