Mikrovezérlők Alkalmazástechnikája



Hasonló dokumentumok
Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

A mikroszámítógép felépítése.

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

Mielıtt használná termékünket Az eltérı környezeti körülmény elektromos áramütést, tüzet, hibás mőködést vagy. okozhat.

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

Mechatronika és mikroszámítógépek

3. Hőmérők elkészítése

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

1. Bevezetés. 2. A mikroszámítógépek felépítése

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

Az MSP430 energiatakarékos használata

DropsA VIP-5 Külső vezérlőegység Telepített és mobil alkalmazásokhoz. Kezelési és karbantartási utasítás

TRP-C24 Felhasználói Kézikönyv

A Számítógépek felépítése, mőködési módjai

Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás

Digitális videofelvevő. Felhasználói kézikönyv. A készülék üzembe helyezése előtt kérjük, figyelmesen olvassa el a kézikönyvet és gondosan őrizze meg.

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

LPT illesztőkártya. Beüzemelési útmutató

16F628A megszakítás kezelése

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

Technológia funkciók Számláló, PWM

Köszönjük, hogy a ConCorde-6025CID telefonkészüléket választotta. A készülék használata előtt kérjük figyelmesen olvassa el a használati útmutatót.

S7021 ADATGYŰJTŐ. 2-csatornás adatgyűjtő számláló és bináris bemenettel. Kezelési leírás

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

A MiniRISC processzor

MSP430 programozás Energia környezetben. Nokia 5110 grafikus kijelzo vezérlése

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Dr. Oniga István DIGITÁLIS TECHNIKA 9

TMS370 EEPROM PROGRAMOZÓ Felhasználói kézikönyv

SATEL. CA-64 RIASZTÓKÖZPONT ( es szoftver verzió) Telepítési útmutató

MSP430 programozás Energia környezetben. Az I/O portok kezelése

loop() Referencia:

Egyszerű RISC CPU tervezése

Járműfedélzeti rendszerek I. 5. előadás Dr. Bécsi Tamás

PHARAO HARDWARE KÉZIKÖNYV HARDWARE HANDBUCH HARDWARE MANUAL MANUALE HARDWARE MANUEL DU MATÉRIEL /1

KP-S110. GSM riasztó rendszer. Kezelési utasítás.

DDS alapú szinusz jelgenerátor fejlesztése

MSP430 programozás Energia környezetben. LED kijelzok második rész

UC300-5LPT. USB CNC mozgásvezérlő MACH3 programhoz. Használati utasítás. Plugin verzió: V1.024

MSP430 programozás Energia környezetben. Alfanumerikus LCD kijelzok

Digitális bemenetek: 2 darab 0-5V jelszintű digitális bemenet Pl. nyitásérzékelők, risztóközpontok, mozgásérzékelők, átjelzők, stb.

Elektromos fűtők vezérlőegységei Kezelési és karbantartási útmutató

A Picoblaze Core implementálása FPGA-ba

Az integrált áramkörök kimenetének kialakítása

AX-3003P AX-6003P. 1. A kezelési útmutató használata. 2. Biztonságra vonatkozó információk

Üzemeltetési utasítás

Interrupt. ile ile 1 / 81

A Számítógépek hardver elemei

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

Mach3 tananyag. Egyszerű háromtengelyű marógép beállítása. A Mach3 2.5 szoftver alapján

Miskolci Egyetem. Gépészmérnöki és Informatikai Kar. Elektrotechnikai-Elektronikai Intézeti Tanszék. Villamosmérnöki szak

A számítógép alapfelépítése

QUAD PROCESSZOR FIGYELMEZTETÉS! AVC703/713/704/ oldal, összesen: 19. Használati útmutató. Modell szám: AVC713 AVC714 AVC703 AVC704

OMNIALOG adatgyűjtők NI-48XX

1. Az utasítás beolvasása a processzorba

EC Digitális csoportaggregát vezérlő

Számítógépes alapismeretek

Műszerkönyv. Elektronikus számolómérleg. CS Típus

Megszakítások és kivételek

1. ábra: Perifériára való írás idődiagramja

Üzemeltetési utasítás

DELTA VFD-E frekvenciaváltó kezelési utasítás

Dimat. UTH telepítés és útmutató

JUMO. Beépíthetõ ház DIN szerint. Rövid leírás. Blokkvázlat. Sajátságok. JUMO dtron 16.1

Szenzorhálózatok. Mica moteok hardware felépítése (Folytatás) Orosz György

Külvilági kapcsolat. UPS séma ábra, kétsoros LCD DISPLAY, 8db nyomógomb. A B C D E F G H

AlphaRex 3 digitális programkapcsoló

FILCOM. Visszamosatást vezérlő egység

S3120 ADATGYŰJTŐ. Kezelési leírás

GPT 9800 sorozatú nagyfeszültségű szigetelésvizsgálók

INVERTERES LEVEGŐ-VÍZ HŐSZIVATTYÚK

Bevezetés a számítástechnikába

Figyelmeztetés: Az alábbi merevlemez-meghajtók telepítése nem ajánlott ebbe a készülékbe:

8. A paraméterek leírása

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

Q37A Vezérlés 1 vagy 2 szárnyú kapukhoz

Számítógépek felépítése, alapfogalmak

KEZELÉSI ÚTMUTATÓ EKB-500. Univerzális kezelıegység. Budapest

APB mini PLC és SH-300 univerzális kijelző Általános használati útmutató

MetaSat Programozó Használati útmutató

Felhasználói kézikönyv

MICROCHIP PIC DEMO PANEL

MSP430 programozás Energia környezetben

Információs Technológia

Számítógép Architektúrák

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

Mérési jegyzőkönyv. az ötödik méréshez

Indulás után a kontroller jelszót kér, a gyári adminisztrátori jelszó: 9999

Egyszabadságfokú mechanikai rendszer irányítása nyílt hurkú vezérlés

Billenőkörök. Mindezeket összefoglalva a bistabil multivibrátor az alábbi igazságtáblázattal jellemezhető: nem megen

ARM mikrovezérlők programozása

Computer Architectures

Átírás:

Gingl Zoltán, 2013, Szeged Mikrovezérlők Alkalmazástechnikája 1

2

Tulajdonságok Írási lehetőség Olvasás (konstansok) Scratchpad memory, flash program memory Endurance hányszor írható ( 10k-100k) Data retention az adatokat meddig őrzi ( 20-100 év) Biztonsági bitek: titkosítás lehetséges a flash olvasása tiltható (törölhetőség) 3

Debug adaterrel (JTAG vagy C2) A debug adapter előre programozott chipen is elérhető MOVX utasítással is írható (bitek 0-ra állítása) Törlés: az összes bit 1-re állítása A tápfeszültség-monitort kötelező bekapcsolni és RESET forrásként konfigurálni! 4

Engedélyező bitek PSWE (program store write enable) PSEE (program store erase enable) Írás: PSWE=1 Törlés: PSWE=1 és PSEE=1 Az íráshoz/törléshez még kulcs is kell: FLKEY=0xA5; FLKEY=0xF1; 512-byte blokkok, lapok törölhetők 512-byte blokkba lehet írni egy engedélyezéssel 5

void FLASH_PageErase (unsigned int addr) { bit ea_save = EA; // Preserve EA char xdata * data pwrite; // FLASH write pointer } EA = 0; // Disable interrupts VDM0CN = 0xA0; // Enable VDD monitor RSTSRC = 0x02; // VDD mon reset source pwrite = (char xdata *) addr; // set pointer FLKEY = 0xA5; // Key Sequence 1 FLKEY = 0xF1; // Key Sequence 2 PSCTL = 0x03; // PSWE = 1; PSEE = 1 VDM0CN = 0xA0; // enable VDD monitor RSTSRC = 0x02; // VDD mon resetsource *pwrite = 0; // Initiate page erase PSCTL &= ~0x03; // PSWE = 0; PSEE = 0 EA = ea_save; // Restore interrupts 6

void FLASH_ByteWrite (unsigned int addr, char byte) { bit ea_save = EA; // Preserve EA char xdata * data pwrite; // FLASH write pointer } EA = 0; // Disable interrupts VDM0CN = 0xA0; // Enable VDD monitor RSTSRC = 0x02; // VDD monitor reset pwrite = (char xdata *) addr; // set pointer FLKEY = 0xA5; // Key Sequence 1 FLKEY = 0xF1; // Key Sequence 2 PSCTL = 0x01; // PSWE=1, enable write VDM0CN = 0xA0; // Enable VDD monitor RSTSRC = 0x02; // VDD monitor reset *pwrite = byte; // Write the byte PSCTL &= ~0x01; // PSWE=0,disable write EA = ea_save; // Restore interrupts 7

0xFC lock byte: 0x7DFF (F410, 32k) flash címen n = lock byte értéke negálva: ennyi blokk zárolva (első n-1 blokk és a 0x7DFF blokk) Az alábbi példa: 0xFC negálva: 0x03 Page 0 Page 1 Page 2 Page 62 Page 63 RESERVED 0x0000 0x0200 0x0400 0x7C00 0x7E00 0x7DFF (lock byte) 8

VDD monitort RESET után azonnal engedélyezni kell RESET forrásként Írás előtt a lapot törölni kell Íráskor, törléskor belső órajelre célszerű kapcsolni Írás: 50 us Blokk törlés: 20 ms Olvasás: 40ns! Max: 25MHz 9

10

A processzorok adatbuszán csak rövid ideig érvényes az adat Számos periféria azonos buszt használ Kétirányú busz A busz szélessége adott, korlátozott Megoldás: portok létrehozása Programozható ki és bemenetre Bármikor olvasható A beírt adat a következő írásig azonos marad, a kimeneten logikai jel formájában megjelenik 11

DATA BUS SET WRITE CLEAR D C Q DIGITAL PERIPHERAL PORT OUT PORT DRIVER READ PORT IN READ-MODIFY-WRITE pl: ANL P0,#32 ANALOG PERIPHERAL ANALOG I/O 12

Ha a portra írunk, a D-tárolót írjuk minden bithez külön tároló tartozik A bit beállítható és törölhető is, RESET után értéke 1 A port olvasásakor a 3-állapotú drivert engedélyezi a READ jel A READ, WRITE, SET, CLR jeleket a processzor generálja 13

Logikai jellel vezérelhető eszközökhöz: Áramkörök logikai bemeneteinek meghajtása LED Külső meghajtó-fokozattal: relé (jelfogó), mágnesszelep, motorok, stb. Logikai jeleket adó eszközökhöz, olvasásra: Kapcsoló, nyomógomb, billentyűzet Áramkörök logikai kimeneteinek figyelése Külső elektronikával: fénykapuk, Hall-detektorok, stb. 14

Rp PORT DRIVER Vdd WEAK PULL-UP ANALOG MODE PUSH-PULL MODE AND OR Vdd Vdd PORT OUT OUT ENABLE OR PORT IN ANALOG IN 15

Rp Vdd Alapmód: open-drain 0: erős kötés GND-re 1: 100k Vdd-re 1: input mód is PORT OUT 16

Vdd Push-pull mód 0: erős kötés GND-re 1: erős kötés Vdd-re PORT OUT 17

OPEN-DRAIN MÓD Logikai 1 kimenet esetén bementként is funkcionálhat kevés perifériát lehet jól meghajtani kicsi áramot tud adni a kimenet Ha a kimeneten kapacitás van, lassú a felfutás ( RC) Ha a kimeneten ellenállás van, könnyen elhúzhatja Logikai 0 kimenet esetén erős meghajtás nagy áramot tud húzni PUSH-PULL MÓD Erős meghajtás mindkét állapot esetére Mindig érdemes használni, kivéve amikor open-drain szükséges (pl. wired-or) Kimondottan fontos, ha gyors jeleket kell előállítani nagyobb áramot kell adni 18

Rp Vdd Vdd Digitális mód Schmitt-trigger input 100k gyenge felhúzóellenállás Vdd I L Analóg mód Kikapcsolja a felhúzóellenállást Kikapcsolja a port inputot Nagyimpedanciás bemenet 19

parameter conditions min typ max units Voltage on any Port 0 Pin -0.3V - 5.5 V Voltage on any Port I/O Pin (except Port 0 pins) Maximum output current sunk by any Port pin Maximum output current sourced by any Port pin Maximum Total current through Vdd, Vio,... and GND -0.3V - Vio+0.3 V - 100 ma - 100 ma 500 ma 20

parameter conditions min typ max units Output High Voltage (Port I/O push-pull ) IOH = 3 ma IOH = 70 μa Output Low Voltage Vio = 2.0 V: IOL = 70 μa IOL = 8.5 ma Vio = 4.0 V: IOL = 70 μa IOL = 8.5 ma Vio 0.5 Vio 50mV - - - - V Input High Voltage Vio x 0.7 - - 50 800 40 400 Input Low Voltage - - Vio x 0.3 Input Leakage Current Weak Pullup Off - <0.1 1 μa Weak Pullup Impedance - 120 - k mv 21

Mindig tartsuk be a feltételeket! Ha megsértjük az ABSOLUTE MAXIMUM RATINGS feltételeket az áramkör károsodhat az áramkört azonnal selejtezni kell! nem szabad egy próbateszttel megmenteni Ha megsértjük az ELECTRICAL CHARACTERISTICS feltételeket az áramkör helyes működése nem garantált más részfunkciók is hibásan működhetnek! maradéktalanul meg kell szüntetni az okokat 22

BEMENŐ FESZÜLTSÉG >Vdd: áram a táp felé <GND: áram a 0V felé terheli a jelforrást ha nem korlátos, kárt okoz soros ellenállás védhet érték választása külső áramkörös védelem A PORT TÚLTERHELÉSE Nem megfelelő logikai szint jöhet létre Hibás működés A portok összárama a Vdd/GND áramához járul A Vdd/GND kivezetések árama korlátos! Károsodás történhet soros ellenállás védhet érték választása 23

I dd csökkentés: külső meghajtók pl. 74AHCT541, 74AHCT125, 74AHCT138 Melyik logikai család megfelelő? HC, HCT, AHC, AHCT, LVC? 5V vagy 3,3V? Még nagyobb áram szükséges? tranzisztor tranzisztortömb (pl. ULN2803) 24

1 2 3 OE 541 Vcc OE 20 19 18 1 2 A0 A1 138 Vcc Y0 16 15 4 17 3 A2 Y1 14 5 16 4 E1 Y2 13 6 15 5 E2 Y3 12 7 14 6 E3 Y4 11 8 13 7 Y7 Y5 10 9 12 8 GND Y6 9 10 GND 11 25

1 OE 2 D0 574 Vcc Q0 20 19 74x574 D Q 3 4 5 6 7 D1 D2 D3 D4 D5 Q1 Q2 Q3 Q4 Q5 18 17 16 15 14 C CP 74x574 D Q CP 8 D6 Q6 13 9 D7 Q7 12 10 GND CP 11 26

1 2 3 4 5 6 7 8 Q1 Q2 Q3 Q4 Q5 Q6 Q7 595 Vcc 16 Q0 15 DS 14 OE 13 STC 12 SHC 11 MR 10 GND Q7S 9 DS: soros adat bemenet SHC: soros clock STC: kimenetre tárolás Q0..Q7: kimenetek Q7S: soros kimenet MR: reset (törlés) OE: kimenet engedélyezés 27

74AHCT595 DS B7 B6 B5 B4 B3 B2 B1 B0 SHC STC Q Előző érték B7..B0 28

8 GND 8 GND 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q1 Q2 Q3 Q4 Q5 Q6 Q7 595 595 Vcc Q0 DS OE STC SHC MR Q7S Vcc Q0 DS OE STC SHC MR Q7S 16 15 14 13 12 11 10 9 16 15 14 13 12 11 10 9 LOAD CLOCK DATA 29

10k 10k V+ V+ R BC817 500mA IRLML2502 4A MCU V+ MCU V+ R BC817 500mA IRLML2502 4A 30

ULN2803 COM 1 18 2 17 IN 2k7 OUT 3 4 5 16 15 14 6 13 7k2 3k 7 12 GND 8 11 9 GND COM 10 31

A mikrovezérlőt tartalmazó eszközt gyakran a felhasználó beállíthatja, a működést ellenőrizheti Szükség van adatok bevitelére megjelenítésére Általában digitális adatokról van szó, ezek lebonthatók kétállapotú elemekre 32

A portokon csak digitális jel olvasható A nyomógomb és kapcsoló rövidzár vagy szakadás Ebből kell logikai 0 és 1 értéknek megfelelő feszültséget előállítani Egyszerű mód: tápfeszültség (logikai 1) kötünk egy ellenállást és vele sorba a nyomógombot, amit a GND pontra (logikai 0) kötünk benyomott állapot: 0, kiengedett: 1 33

R R R R Mekkora legyen az ellenállás? A portokon eleve van felhúzó ellenállás Zavarérzékenyebb Kondenzátor segít Vdd Vdd Vdd Vdd C 34

Rp Rp Mekkora legyen az ellenállás? A portokon eleve van felhúzó ellenállás Zavarérzékenyebb Kondenzátor segít Vdd C8051Fxxx Vdd C8051Fxxx Vdd Vdd C 35

A kapcsolás pillanatában zavarjelek Sok parazita kapcsolgatás Hogyan javítsuk? Rövid ideig csak prell, hosszabbra valódi kapcsolás! A kondenzátor segít További javítás szoftveres hardveres 36

#define BUTTON_ON (!P0.3) void main(void) { while (1) { if (BUTTON_ON) { while (BUTTON_ON); DoShortProcess(); } } } Milyen hátrányok vannak? Hogy lehet javítani? 37

#define BUTTON_ON (!P0.3) #define BUTTON_ON_TICK 10 volatile bit ButtonPressed; void TMRHandler interreupt TMRVECTOR // 10ms period { static bit buttonstate=0, detected=0; static unsigned char counter=0; if (ButtonPressed) return; // not yet handled // nothing to do 38

if (BUTTON_ON) // it is pressed { if (buttonstate) // it was on { counter++; if (counter == BUTTON_ON_TICK) detected=1; } buttonstate=1; // save state } 39

} else // it is released { buttonstate=0; // save state counter=0; // reset counter if (detected) { ButtonPressed=1; // notify main program detected=0; // reset, end of detection } } if (ButtonPressed) { DoSomething(); ButtonPressed=0; } 40

Ne várja meg a felengedést 1. Egyforma hosszú detektálási idők 2. Az első detektálási idő hosszabb legyen 3. Gyorsuló detektálás 41

Sok nyomógomb beolvasása telefonbillenytűzet point-of-sale (POS) terminál automated teller machine (ATM) A szükséges jelek redukálására mátrix A beolvasáshoz minden lehetőséget meg kell nézni Megállhatunk, ha megtaláltunk egyet Több is lenyomva? 42

43

MCU Pn.0 Pn.1 Pn.2 Pn.3 Pn.4 Pn.5 Pn.6 1 2 3 4 5 6 7 8 9 * 0 # Pn.0-Pn.2 kimenetek Pn.3-Pn.6 bemenetek 1. oszlop tesztje: Pn.2=0, Pn.1=1, Pn.0=1 Pn.3-Pn.6 beolvasása 2. oszlop tesztje: Pn.2=1, Pn.1=0, Pn.0=1 Pn.3-Pn.6 beolvasása 3. oszlop tesztje: Pn.2=1, Pn.1=1, Pn.0=0 Pn.3-Pn.6 beolvasása 44

Rp R Negatív logika C8051Fxxx Vdd Vdd PORT OUT 45

R Negatív logika Vdd C8051Fxxx Vdd PORT OUT 46

R Pozitív logika is: a kimenet push-pull legyen C8051Fxxx Vdd PORT OUT 47

R R R R R R R R G F Vdd A B Vdd F A B A B C D E F G DP G E C D DP Pn.0 Pn.1 Pn.2 Pn.3 Pn.4 Pn.5 Pn.6 Pn.7 E D Vdd C DP 48

Negatív logika: PORT=~ledbits; // bytewise BCD G F E D C B A ledbits 0 0 1 1 1 1 1 1 3Fh 1 0 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5Bh 3 1 0 0 1 1 1 1 4Fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 0 1 6Eh 6 1 1 1 1 1 0 1 7Eh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7Fh 9 1 1 0 1 1 1 1 6Fh 49

Fényesség nagyobb áram meghajtó lehet szükséges tranzisztorok vagy tranzisztortömb (pl. ULN2803A) Több kijlező? külső latch (pl. 74HCT574) időosztásos kapcsolás (a fényerő csökken) 50

GND VDD Vo RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BLA/C BLC/A 1 16 Legelterjedtebb kiépítések: 2x16 karakter 2x20 karakter 4x16 karakter 4x20 karakter Opcionális háttérvilágítás Táp (bemenet) GND Vdd (5V vgy kisebb) Vo (bemenet) kontraszt, Vdd-hez közeli Vezérlőjelek (bemenet) RS: cím vagy adat RW: olvasás, írás E: engedélyezés Adatbusz (kétirányú) DB0-DB7 DB4-DB7 négybites módban háttérvilágító LED (BL) Anód és katód, nem standard 50mA-300mA 51

WRITE TIMING READ TIMING RS R/W E DATA IN Tas >40ns Tpw >230ns Tdsw >40ns VALID Tah >10ns Th >10ns TcycE >500ns E lefutó éle ír be Érvényes a lefutó élnél RS R/W E DATA OUT Tas >40ns Tpw >230ns Tddr >160ns Tah >10ns Th >5ns VALID TcycE >500ns E felfutó éle indít olvasást Érvényes a lefutó élnél 52

UTASÍTÁSREGISZTER ELÉRÉSE RS=0 Inicializálás Üzemmód beállítása Kijelző törlése Kurzorpozíció beállítása Villogó kurzor Automatikus kurzorléptetés ADATREGISZTER ELÉRÉSE RS=1 karakterek írása a kijelzőre aktuális kurzorpozícióra Karakter kódjának írásával Egysoros kijelzők kurzorcímei 0x00+i Kétsoros kijelzők kurzorcímei 1. sor: 0x00+i 2. sor: 0x40+i Négysoros kijelzők kurzorcímei 1. sor: i 2. sor: 0x40+i 3. sor: sorhossz+i 4. sor: 0x40+ sorhossz+i 53

Utasítás adatbitek megjegyzés Clear display Return home Entry mode set Display on/off Cursor or display shift Function set B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 0 0 0 0 1 A teljes kijelző törlése 0 0 0 0 0 0 1 - A kurzor és beviteli mód alaphelyzetbe hozása 0 0 0 0 0 1 ID S Beviteli mód: ID=1:kurzor jobbra S=1:teljes kijelző eltolás 0 0 0 0 1 D C B Kijelző: D=1 bekapcsolás, C=1 kurzor be, B=1 kurzor villog 0 0 0 1 SC RL - - SC=1:kijelző, 0:kurzor RL=1:jobbra, 0: balra mozgatás 0 0 1 DL N F - - DL=1:8-bites, 0:4-bites mód N=1:2 sor, 0:1 sor F=1:5x10, 0:5x8 képpont egy betű 54

Utasítás adatbitek megjegyzés B7 B6 B5 B4 B3 B2 B1 B0 Set CGRAM address Set DDRAM address 0 1 A5 A4 A3 A2 A1 A0 karaktertáblába írás címe saját karakterek definiálására 1 A6 A5 A4 A3 A2 A1 A0 a kijelzőre írás címe, azaz a kurzor pozicionálása RS=0 és R/W=0 kell az utasítások küldéséhez Az utasítások valamennyi ideig futhatnak (~40us) Ez alatt nem szabad a kijelzőbe írni! Megoldás: megfelelő szoftveres késleltetés az utasítás kiadása után az állapotbit beolvasása (B7), R/W=1 állításával 55

#define LCD_RS P0.5 #define LCD_RW P0.6 #define LCD_E P0.7 #define LCD_PORT P1 unsigned char line_address[4]; void LCD_Init(unsigned char rows, unsigned char cols) { unsigned char i; line_address[0]=0; line_address[1]=0x40; line_address[2]=cols; line_address[3]=0x40+cols; 56

} LCD_RW=0; LCD_E=0; LCD_RS=0; Delay_ms(50); LCD_DATA=0x30; LCD_PulseE(); Delay_ms(5); LCD_PulseE(); Delay_ms(1); // Special initialization sequence // 8-bit mode // 8-bit mode LCD_PulseE(); // 8-bit mode LCD_Write(0x38); // 8-bit mode, 2 lines LCD_Write(0x08); // display off LCD_Write(0x01); // display clear LCD_Write(0x06); // entry mode: increment cursor LCD_Write(0x0C); // display on, no cursor, no blink 57

void LCD_PulseE(void) { unsigned char i; for(i=0;i<100;i++); LCD_E=1; for(i=0;i<100;i++); LCD_E=0; } void LCD_Write(unsigned char a) { LCD_DATA=a; LCD_PulseE(); Delay_ms(2); // or check busy flag } 58

void LCD_Clear(void) { LCD_RS=0; LCD_Write(1); LCD_RS=1; } void LCD_MoveTo(unsigned char line, unsigned char pos) { LCD_RS=0; LCD_Write(0x80 (line_address[line]+pos)); LCD_RS=1; } 59

Két részletben lehet írni a regisztereket A felső négy bitet először Az alsó négy bitet ezután A D7..D4 adatbiteket kell használni 60

stdio átirányítás? printf? void putchar(char c) { LCD_Write(c); } LCD_MoveTo(0,10); // first line, 10th position printf("x=%d",x); // write A /r és /n kezelése nincs megoldva nem nagyon van rá igény, inkább LCD_MoveTo A további LCD függvények szükségesek clear, move, blink on/off, etc. 61

A crossbar engedélyezése nélkül nem aktív RESET-kor a port I/O még nem aktív A külső elektronika ezt figyelembe kell vegye! motorvezérlés külső áramkörök fals jeleket kaphatnak megfelelő inicializálás a többi áramkörnek 62

63

PERIPHERAL #1 PERIPHERAL #2 CROSSBAR PORT CELL P0.0 P0.7 PERIPHERAL #3 P0 PORT CELL P1.0 P1.7 P1 64

Peripheral #1 Peripheral #2 Selected peripherals inactive peripheral Peripheral #3 Port latches #1 Port input #1 Pins #1 Pin skip Selected #1 Port latches #2 Port latches #3 Port input #2 Port input #3 Pins #2 Pins #3 Selected #2 65

TX UART RX P0.4 LATCH P0.4 INPUT P0.5 LATCH P0.5 INPUT C8051F410 P0.4 P0.5 66

A perifériák prioritási sorrendben kapcsolódnak a kivezetésekre (a portcella bitek sorrendjében) A bekapcsolt perifériák foglalnak kivezetést átveszik a kivezetés kezelését a processzortól a társított kivezetés olvasható a processzor számára A maradék kivezetések normál portbitek a processzor közvetlenül írhatja, olvashatja Lehetséges kivezetések kihagyása is (pin skip) ekkor a crossbar a következő szabad kivezetést köti be 67

68

Ha a crossbar nincs engedélyezve, az I/O sem Ha a program futása közben változtatni kell a kiosztást: a crossbar kikapcsolása új kiosztás definiálása a crossbar bekapcsolása a külső jeleket ez befolyásolhatja! 69

70

Időzítési feladatok felhasználói felület kezelése mechatronikai rendszerek periodikus megszakítások adatátvitel, kommunikáció ütemezése időtartamtok mérése timeout generálás Számlálás események számlálása frekvenciamérés 71

L0 L1 L2 L3 L4 L5 L6 L7 H0 H1 H2 H3 H4 H5 H6 H7 OSCILLATOR EXTERNAL SIGNAL Timer mode Counter mode low byte 16-bit counter overflow pulse (H7: 1 0) high byte 1 D C SET Q CLEAR FLAG to peripherals UART, PCA, clock signal counter value max value-1 max value initial value initial value+1 overflow 72

Bemenet: periodikus vagy külső jel Túlcsordulás pulzust generál beállít egy flaget A flag törlésig 1 marad A pulzus meghajthat más perifériákat (független a flagtől) 73

Klasszikus 8051 periféria Sokféle üzemmód Silicon Laboraories továbbfejlesztés teljes sebesség is (SYSCLK) rugalmasabb megszakításkezelés 74

SYSCLK/12 SYSCLK/4 SYSCLK/48 EXT OSC/8 CLK0 SYSCLK T0 /INT0 IN0PL GATE0 XOR OR TR0 AND AND TCLK0 CLOCK0 az órajelforrásokból áll elő TR0 engedélyezi a számlálást GATE0 engedélyezi a külső jellel való kapuzást IN0PL invertálja a külső kapuzó jelet TCLK0 = (TIMER? CLK0 :T0) & TR0 & (!GATE0 (INT0 ^ IN0PL)) Timer1 számára hasonló, de független beállítás 75

MODE 0 TCLK0 TL0, 5 LSBs TH0 TF0 MODE 1 TCLK0 TL0 TH0 TF0 13-bites számláló Minden TCLK0 lefutóél egyet növel a számláló értékén A számláló két 8-bites részből áll TH0: a nagyobb helyi értékű byte TL0: a kisebb helyi értékű byte TL0-nak csak az alsó 5 bitje aktív, a felső három határozatlan TF0 1-re vált, ha a számláló túlcsordul TF0 megszakítást válthat ki, ha engedélyezve van, ekkor automatikusan törlődik, egyébként szoftveresen kell törölni Mode 1 azonos, de mind a 16 bit aktív 76

Késleltetés generálás Megszakítás generálás hardveres (fix időzítés) szoftveresen felülírható Frekvencia (rezonáns szenzorok, VFC, R vagy C) Periódus Időtartam (gate használata) 77

A függvényhívás és műveletek ideje is hozzáadódik steps lépés idejéig várakozik void Delay(unsigned short steps) { TMOD=(TMOD & 0xF0) 0x01; // 16-bit timer CKCON=CKCON 0x04; // timer0 clk=sysclk TH0=-steps >> 8; // 65536-steps TL0=-steps; TF0=0; TR0=1; while (!TF0); TR0=0; } 78

RESET érték: timer0 és 1 órajel=sysclk/12 steps timer lépésenként megszakítás (túlcsordulás) Megszakítási késleltetés befolyásolja, kicsit szoftverfüggő TMOD=(TMOD & 0xF0) 0x01; // 16-bit timer TR0=1; // run timer IE=0x82; // enable global & timer0 interrupts void Timer0Handler(void) interrupt 1 { TR0=0; // stop timer TH0=-steps >> 8; // 65536-steps TL0=-steps; TR0=1; // start timer } 79

Frekvencia, szenzorok, VFC, R vagy C mérése Adott ideig számláljuk a lefutó éleket Tartomány 0-fmax vagy fmin-fmax Felbontás? Két timer az egyik számlálja az eseményeket a másik az időtartamot (pontosság?) T0 TH0,TL0 TR0 0 1 2 3 4 5 6 Counting 80

TCON=0; // stop timers TMOD=0x15; // T0:16-bit counter T1:timer TH0=0; // initialise counter TL0=0; // initialise counter TH1=-steps >> 8; // 65536-steps TL1=-steps; // TR0=1 for steps*timer period TF1=0; // clear timer 1 flag TCON=0x50; // run both timers while (!TF1); // assembly? TCON=0; // stop both timers Az eredmény TH0/TL0 regiszterekben van Esetleges megszakítások ronthatják az eredményt! A timerek másra ezalatt nem használhatók Összességében: kicsit szoftverfüggő, nem teljesen hardveres megoldás 81

N periódust megszámlálunk Megmérjük, mennyi T ideig tart T K t t = timer lépésidő Periódus = T/N K t/n Két timer használata számlálás N esemény bekövetkeztéig a szükséges időtartam megmérése, azaz K mérése 82

N periods (L=65536-N) T0 TH0,TL0 L L L+1 65534 65535 0 TF0 T1 CLK TH1,TL1 TR0,TR1 0 0 1 2 K-3 K-2 K-1 K K t Counting 83

TCON=0; // stop timers TMOD=0x15; // T0:16-bit counter T1:timer TH1=0; // clear T1 timer value TL1=0; // clear T1 timer value TH0=-N >> 8; // 65536-N TL0=-N; // N events to overflow (TF0=1) TF0=0; // clear timer 0 flag TCON=0x50; // run both timers while (!TF0); // wait for N events (assembly?) TCON=0; // stop both timers Az eredmény a TH1/TL1 regiszterekben van (K) Esetleges megszakítások ronthatják az eredményt! A timerek másra ezalatt nem használhatók Összességében: kicsit szoftverfüggő, nem teljesen hardveres megoldás 2015.12.06. 11:38 Digitális perifériák és használatuk 84

Digitalizálás timer periódusok számlálásával A timerek GATE bemenete használható Megoldás: A számláló adott órajellel megy A külső jel aktív idejéig engedjük a számlálást Elég egy timer INT0 engedélyezése a crossbaron szükséges 85

T0 CLK TH0,TL0 /INT0 0 0 1 K-2 K t K-1 K TR0 Counting waiting while high waiting for falling edge 86

TR0=0; // stop timer TH0=TL0=0 // clear timer TMOD=0x09; // T0:16-bit gated timer mode IT0=0; // level triggered /INT0 IE0=0; // clear INT0 flag while (!IE0); // wait for input going down IT0=1; // edge triggered /INT0 IE0=0; // clear INT0 flag TR0=1; // enable timer while (!IE0); // wait for end of pulse TR0=0; // stop timer Az eredmény a TH0/TL0 regiszterekben van A pulzusnak TR0=1 után kell indulnia! Erre várakozás a kódban INT0-t a crossbaron engedélyezni kell, megszakításban is kezelhető Esetleges megszakítások ronthatják az eredményt! Kicsit szoftverfüggő, nem teljesen hardveres megoldás 87

TCLK0 TL0 TF0 t TL0 0 1 TF0 0 0 TH0 8-bites számláló TH0 tartalmazza a kezdőértéket Ez TL0 túlcsordulásakor beíródik innen folytatódik a számlálás Példa: TL0=0; TH0=252; TF0=0; Periódus: (256-TH0) t TF0: szoftver vagy megszakítás törli 4 t 4 t 255 252 253 254 255 252 253 254 255 252 253 0 1 1 1 1 1 1 0 0 1 1 CLR TF0 88

Soros bitátviteli ráta: baud rate (UART) Periodikus megszakítások generálása Kiszolgáló a PCA-hoz (Timer0, lásd később) 8-bit: korlátozott felbontás és pontosság Nagyobb periódus nagyobb pontosság Mindig ellenőrizzük, mennyi lett a periódus 89

Period 256 TH0 t 256 TH0 / f clk 1/ Period f desired f actual f clk / 256 TH 0 TH 0 256 f clk / f desired 0.5 f actual f clk / 256 256 f clk / f desired 0.5 90

Actual frequency/fclk 1 0,8 0,6 0,4 0,2 0 0 0,2 0,4 0,6 0,8 1 Desired frequency/fclk 91

Error [%] 50 25 0-25 -50 0 0,2 0,4 0,6 0,8 1 Desired frequency/fclk 92

Baud rate = Timer1 overflow rate / 2 F410 SYSCLK: 191406Hz 9600 bit/s = 191406/(256-TH1) / 2 TH1=256-SYSCLK/BAUDRATE/2 246=0xF6 BAUDRATE=9570 bit/s, jó ez? SYSCLK: 2%! TMOD=(TMOD & 0x0F) 0x20; // mode 2 CKCON=CKCON 0x08; // timer1clk=sysclk TH1=0xF6; TR1=1; 93

Interrupt rate = Timer0 overflow rate F410 SYSCLK: 191406Hz TH0=256-SYSCLK/IRQRATE Elvi tartomány: 748Hz-191406Hz (TH0=0-255) A periódus > IRQ végrehajtási idő legyen TMOD=(TMOD & 0xF0) 0x02; // mode 2 CKCON=CKCON 0x04; // timer0clk=sysclk TH0=65; // 1000Hz TR0=1; IE=0x82; // enable interrupt 94

SYSCLK/12 SYSCLK/4 SYSCLK/48 EXT OSC/8 CLK0 TH0 TF1 SYSCLK T0 /INT0 IN0PL GATE0 XOR OR TR0 AND AND TCLK0 TL0 TF0 Két független 8-bites számláló (Timer 1 inaktív ekkor) TL0-t a szokásos komplex órajel hajtja TH0-t a skálázott órajel vagy SYSCLK 95

Periodikus megszakítások generálása TL0 számlálásra, megszakítások generálására Órajel a perifériák számára 96

Az MCS-51 mikrovezérlőben: Timer 0 és 1 8052: Timer 2 hozzáadása Silicon Labs további timerek hozzáadása kétféle megoldás (pl. F120 és F410) 16-bit auto reload nagyobb tartomány, pontosság 97

SYSCLK SYSCLK/12 EXT OSC/8 AND TCLKn TMRnL TMRnH TFnH TRn TMRnRLL TMRnRLH C8051F410 98

SYSCLK/12 SYSCLK/4 SYSCLK 0xFF 0xFF EXT OSC/8 Tn AND TMRnL TMRnH TFn TRn TnEX EXENn AND OR TMRnRLL TMRnRLH D Q C Q Tn EXFn C8051F120 99

TMR2 =TMR2H*256 +TMR2L TMR2RL =TMR2RLH*256 +TMR2RLL TMR2RL N t N t TMR2 TMR2RL TMR2RL+1 65534 65535 TMR2RL TMR2RL+1 65534 65535 TMR2RL TMR2RL+1 TF2H ( interrupt) 0 0 t 0 0 1 1 0 0 1 1 Hardware sets TF2H generates interrupt Software clears TF2H 100

/************************** steps = period/dt dt=1/timer clock steps = timer clock*period reload value = 65536-steps ***************************/ unsigned long period; // in us unsigned long tmrclk; // timer clock in Hz unsigned short tmrrl; // reload value tmrrl = -tmrclk*period/1000000l; 2015.12.06. 11:18 A C8051Fxxx mikrovezérlők felépítése és programozása 101

SYSCLK SYSCLK/12 EXT OSC/8 AND TMRnH TFnH TRn TMRnRLH SYSCLK TMRnL TFnL TMRnRLL 102

Flag felhasználásával (megszakítás engedélyezés): Periodikus megszakítások generálása A túlcsordulási pulzussal (timer megszakítás nincs!): Baud rate generátor (UART) SMBus bit rate, timeout A/D konverzió indítása, mintavételezéses mérés D/A konverzió indítása, időfüggő jel generálása F120 processzoron kimeneti négyszögjel Code profiling SYSCLK legyen a számláló órajele a kódrészlet elején a számláló nullázása és indítása a kódrészlet végén a számláló állása a futási időt adja 103

$include (C8051F410.INC) LED EQU P0.2 CSEG at 0000h jmp Main ; reset, jump to the main ORG 002Bh ; Timer 2 IRQ vector anl TMR2CN,#07Fh ; clear interrupt flag cpl LED ; complement LED reti ; return from interrupt 2015.12.06. 11:18 A C8051Fxxx mikrovezérlők felépítése és programozása 104

Main: anl PCA0MD, #0BFh ; watchdog off mov PCA0MD, #000h mov XBR1, #040h ; crossbar on mov TMR2RLL, #0B2h ; Timer 2 reload register mov TMR2RLH, #0C1h ; mov TMR2L, #0B2h ; Timer 2 counter initial value mov TMR2H, #0C1h mov TMR2CN, #004h ; Start Timer 2 mov IE, #0A0h ; enable interrupts jmp $ ; repeat forever END fclk=1/ t=191406/12 Hz 15950 Hz (RESET utáni alapérték) 1 sec = 15950 t TMR2RL = 65536-15950 = 49586 = 0xC1B2 2015.12.06. 11:18 A C8051Fxxx mikrovezérlők felépítése és programozása 105

Kevés a 16-bit? Szoftveres kiterjesztés: Túlcsorduláskor egy változó értékét növeljük Megszakítási rutinban void TimerIRQ(void) interrupt TIMER_VECTOR { static unsigned char counter=0; } counter = (counter+1) % countermax; if (!counter) Process(); // overflow 106

TMR (HW) TF COUNTER (SW) 65534 0 65535 0 0 1 1 1 INT+SW DELAY 0 65534 65535 0 1 0 0 1 1 1 107

108

Adott órajellel fut egy 16-bites számláló Mellette van több 16-bites regiszter Lehetőségek A számláló értéke átmásolódik a regiszterbe A számláló értékének összehasonlítása a regiszterével A kétféle esemény detektálható (megszakítás) Külső jel állítható elő (hardware output) Külső jel használható (hardware input) 109

TO PORT I/O TO INTERRUPT HANDLER SYSCLK/12 SYSCLK/4 TIMER0 EXT CLK IN SFR BUS SNAPSHOT REGISTER PCA0L READ SYSCLK EXT OSC/8 PCA0L PCA0H CF RTC OSC/8 CEX0 CEX1 CEX2 CEX3 CEX4 CEX5 PCA0CPL0 PCA0CPH0 CCF0 PCA0CPL1 PCA0CPH1 CCF1 PCA0CPL2 PCA0CPH2 CCF2 PCA0CPL3 PCA0CPH3 CCF3 PCA0CPL4 PCA0CPH4 CCF4 PCA0CPL5 PCA0CPH5 CCF5 110

SYSCLK/12 SYSCLK/4 TIMER0 EXT CLK IN SYSCLK EXT OSC/8 RTC OSC/8 PCA0L SFR BUS SNAPSHOT REGISTER PCA0H PCA0L READ CF Sokféle órajelforrás Akár Timer0 8-bit auto-reload túlcsordulás Timer 0 16-bittel való kiterjesztése Lassabb, programozható órajel 16-bites biztonságos olvasás (PCA0L először) 111

PCA0CPLn PCA0CPHn CEXn CCFn PCA clock PCA0L PCA0H Külső jel felfutó, lefutó vagy mindkét átmeneténél A PCA0 számláló a PCACPn regiszterekbe kerül A CCFn flag 1-re vált, megszakítás is létrejöhet Események, jelváltások időpillanatainak detektálására Frekvencia, periódusidő, pulzusszélesség, kitöltési tényező mérésére alkalmas 112

Pulzusszélesség mérése Felfutó él engedélyezése Megszakítás engedélyezése A megszakításban: capture regiszter elmentése lefutó él engedélyezése következő megszakításban capture regiszter aktuális és előző értékének különbsége Feladat: a kód megírása 113

CAPTURE REGISTER=K CAPTURE REGISTER=L PCA CLK PCA0 0 1 2 K-1 K K+1 L-1 L L+1 CEXn (L-K) t INTERRUPT INTERRUPT 114

RESET Write to PCA0CPLn OR 0 PCA0CPLn PCA0CPHn Write to PCA0CPHn PCA clock 1 16-bit COMPARATOR PCA0L PCA0H CCFn FONTOS! Írási sorrend: PCA0CPLn, PCA0CPHn A CCFn 1-re vált, ha a PCA0 és PCA0CPn regiszter azonos Detektálás után CCFn törlése, új PCA0CPn érték beírása Változatos szoftveres időzítésekhez 115

Software updates compare register COMPARE REGISTER=K COMPARE REGISTER=L PCA CLK PCA0 0 1 2 K-1 K K+1 L-1 L L+1 CCFn software clears CCFn 116

Programozható késleltetés Adott idő múlva bekövetkező megszakítás Növekvő/csökkenő időnként bekövetkező megszakítás Forráskódok? 117

RESET Write to PCA0CPLn OR 0 PCA0CPLn PCA0CPHn D Q C Q CEXn Write to PCA0CPHn 1 16-bit COMPARATOR CCFn PCA clock PCA0L PCA0H FONTOS! Írási sorrend: PCA0CPLn, PCA0CPHn Azonos a software timer móddal, de kimenő jelet is ad Általános váltási idejű logikai jelek előállítására 118

Software updates compare register COMPARE REGISTER=K COMPARE REGISTER=L PCA CLK PCA0 0 1 2 K-1 K K+1 L-1 L L+1 CEXn (L-K) t 119

Periodikus négyszögjel Növekvő/csökkenő időnként változó jel Változó szélességű impulzusok (PWM) Változó időközönkénti impulzusok Egymáshoz képest precízen időzített jelváltások több modul használatával több jel A jelváltásokkor megszakítás ez állíthatja be a következő jelváltási időt részben szoftveres, befolyásolja a minimális időt! 120

PCA0CPLn 8-bit adder PCA0CPHn Enable 8-bit comparator D Q C Q CEXn PCA clock PCA0L 8-bit felbontású teljesen hardveres négyszögjel-forrás 50% kitöltési tényező f=f PCA /PCA0CPHn/2 121

PCA0CPHn=3 PCACLK PCA0L 255 0 1 2 3 4 5 6 7 8 9 10 PCA0CPLn 0 3 3 3 6 6 6 9 9 9 12 12 CEXn 122

PCA0CPHn PCA0CPLn Enable 8-bit comparator S Q R CEXn PCA clock PCA0L OVERFLOW 8-bites PWM, programozható kitöltési tényező f PCA /256 frekvencia FONTOS! Írási sorrend: PCA0CPLn, PCA0CPHn 123

PCA CLK PCA0L CEXn 255 0 1 K-1 K K+1 254 255 0 1 K t 256 t (256-K) t 124

PCA0CPLn PCA0CPHn Enable 16-bit comparator S Q R CEXn PCA clock PCA0L PCA0H OVERFLOW 16-bites PWM, programozható kitöltési tényező fpca/65536 frekvencia FONTOS! Írási sorrend: PCA0CPLn, PCA0CPHn 125

65535 0 1 K-1 K K+1 65534 65535 0 1 PCA CLK PCA0 CEXn K t 65536 t (65536-K) t 126

Lassú rendszerek vezérlése LED/lámpa fényerő Motor fordulatszám Fűtőszál Peltier elem Hangszóró 127

Analóg jel? A frekvencia elég nagy a rendszer sebességéhez képest? Szűrés szükséges? Mekkora a hullámossága szűrés után? A logikai jel amplitúdója mekkora és milyen stabil? Ha mérjük a hatást, javítható a pontosság CEXn R V REF R C C CEXn 128

V ref R C V V ref CEXn Közelítés A legnagyobb ingadozás: 50% kitöltés T/2 ideig I=(V ref /2)/R Töltés:I T/2 V V V REF Q C T 4RC T I 2 C VREF 2 RC T 2 129

Ha RC nő, a feltétel egyre jobban teljesül 8-bit PWM példa SYSCLK=191406 Hz T=256/191406s 1,34ms legyen U/VREF<1/256 RC>64 1,34ms pl.: 10k, 10uF RC T 4 V REF U 130

Általánosabban, a rendszer időállandójából a rendszer időállandója: A vezérlőjel 0 állapotához tartozó érték: x min A vezérlőjel 1 állapotához tartozó érték: x max Megengedett ingadozás: x A PWM jel periódusideje: T T 4 x max x x min Termikus példa: =50s A gerjesztés 80⁰C-ot emel 0,5⁰C ingadozáshoz: T<4 50s 0,5/80=1,25s 131

PCA0CPH5 Enable PCA0L overflow 8-bit comparator match AND RESET PCA clock PCA0L PCA0H Write to PCA0CPH5 enables adder 8-bit adder PCA0CPL5 Bizonyos C8051Fxxx processzorokon Elfoglal egy PCA csatornát, ha aktív Ha engedélyezve van, zárolva van a PCA clock Ez alkalmazásokat korlátozhat 132

PCA0L overflow PCA CLK/256 PCA0CPLn=4 PCA0H 255 0 1 2 3 4 5 6 7 8 x x PCA0CPH5 3 3 3 Write to PCA0CPH5 6 6 8 8 8 8 8 x x /RESET 133

134

Valós idő mérésére, óra Elemről önállóan megy, ha a táp ki van kapcsolva Ébresztő funkció, felkelti a processzort Alacsony fogyasztás RTC 8051 CORE 135

ALARM5 ALARM4 ALARM3 ALARM2 ALARM1 ALARM0 47-bit COMPARATOR 4 7 4 6 4 5 4 4 4 3 4 2 4 1 4 3 0 9 3 8 3 7 3 6 3 5 3 4 3 3 3 3 2 1 3 0 2 9 2 8 2 7 2 6 2 5 2 2 4 3 2 2 2 1 2 0 1 9 1 8 1 7 1 1 6 5 1 4 1 3 1 2 1 1 1 0 0 9 0 0 8 7 0 6 0 5 0 4 0 3 0 2 0 1 X ALARM IRQ 32768Hz OSC RTC5 RTC4 RTC3 RTC2 RTC1 RTC0 CAPTURE5 CAPTURE4 CAPTURE3 CAPTURE2 CAPTURE1 CAPTURE0 136

Processzor órajelét adhatja alacsony fogyasztás pontos PCA órajelét adhatja RTC clock/8, (4096Hz, 65536 lépés: 16s) Óra, naptár másodpercek (5 byte : RTC5..RTC1) másodperc konvertálása dátummá (1970-től) Alarm megszakítás hosszú idejű altatások (nagyon alacsony fogyasztás) 137