Gingl Zoltán, 2015, Szeged Mikrovezérlők Alkalmazástechnikája 1
A processzornak ütemjel (órajel) szükséges Számos periféria órajelét is adja Rendkívül sokféle opció DC-100MHz, pl. 32768Hz (órakvarc) Fogyasztás/sebesség hangolható C8051F410 mikrovezérlő Órajel Sebesség Áramfelvétel Üzemidő (CR2012, 200mAh) 32768 Hz 32768 IPS 17 ua 490 nap 1 MHz 1 MIPS 430 ua 19 nap 50 MHz 50 MIPS 13,5 ma Az elem áramkorlátja felett 2
Az oszcillátor analóg periféria! Ha külső elemek vannak, a kivezetéseket analógnak kell konfigurálni (később részletezve) A kimenete digitális, de a processzoron belül Az áramkörből kivezethető az órajel 3
C8051F410 clock generator 24,5 MHz oscillator N 1,2,4,8,16,32,64,128 External oscillator interface 2 CLOCK MULTIPLIER SYSCLK 2 x4 n SmaRTClock oscillator 4
Nem szükséges külső alkatrész Programozható frekvencia: 24,5MHz/2 i, i=0..7 Pontosság: 24,5±0,5MHz (2%) A finomhangolás programozható (kalibrálható) gyors feléledés 5
C8051F410 clock generator 24,5 MHz oscillator N 1,2,4,8,16,32,64,128 External oscillator interface 2 CLOCK MULTIPLIER SYSCLK 2 x4 n SmaRTClock oscillator 6
Legpontosabb (20ppm-100ppm) Pontos időzítésekhez (UART, mintavételezés) Pontos időmérésekhez Stabilizálódási idő (~1ms) ha használjuk, várni kell a feléledésre! Gondos tervezést igényel Rövid vezetékek loading capacitor értékek, CL Érzékeny a nemideális áramköri részekre, zavarokra 7
f/f [ppm] f f C 0 C 1 C L 2 C L C0=4pF C1=16fF CL=16pF 200 150 100 50 0-50 -100 12 13 14 15 16 17 18 19 20 CL [pf] 8
C8051F410 clock generator 24,5 MHz oscillator N 1,2,4,8,16,32,64,128 External oscillator External oscillator interface 2 CLOCK MULTIPLIER SYSCLK 2 x4 n SmaRTClock oscillator 9
Komplett oszcillátor IC Logikai kimenőjel (TTL/CMOS kompatibilis) Kvarc vagy szilícium alapú Pontos, gyári specifikálás Kész megoldás, megbízható Több processzor vagy periféria azonos órajelet használhat 10
A belső oszcillátor gyorsan feléled, RESET után alapértelmezett Kvarc és PLL ms körüli feléledési idővel Ha az oszcillátorok működnek, bármelyikre válthatunk futás közben Lehet rövid időre átkapcsolni a gyors működésre Vigyázni kell, hogy a váltás ne befolyásoljon más perifériát (pl. UART) Missing clock detector RESET-et adhat 11
Belső (24,5MHz 0,5MHz) f:24,5mhz/n, N=1,2,4,8,16,32,64,128 RESET érték: N=128, f=191406hz void Oscillator_Init() { OSCICN = 0x82; } f 24,5MHz / 7 2 OSCICN&7 12
Külső, kvarckristály void PortIO_Init { P1MDIN = 0xFC; // analog input! } P1SKIP XBR1 = 0x03; // skip = 0x40; // crossbar on void Oscillator_Init() { int i = 0; P1 = 0x03; // set as input OSCXCN = 0x67; // enable for (i = 0; i < 3000; i++); // 1ms while ((OSCXCN & 0x80) == 0); // stable? CLKSEL = 0x01; // select clock } 13
Belső vagy külső szorozható: 2 vagy 4 értékkel További skálázás: 1, 2/3, 1/2, 2/5, 1/3, 2/7 Példa: 2*belső, azaz 2*24,5MHz=49MHz void Oscillator_Init() { int i = 0; CLKMUL = 0x80; // enable for (i = 0; i < 20; i++); // 5us CLKMUL = 0xC0; // initialize while ((CLKMUL & 0x20) == 0); // stable? CLKSEL = 0x02; // select } 14
A táp felfutása adott ideig tart A megfelelő Vrst szint elérésekor egy rövid (td) RESET Vdd Vrst Vdd 4k7 C /RESET td<180 s t RESET 15
Ha a táp felfutási ideje >1ms, akkor külső RESET áramkör szükséges A legbiztonságosabb megoldás kritikus alkalmazásokban mindig célszerű Választék: aktív alacsony, aktív magas küszöbfeszültség számos tápfeszültséghez reset időtartam (1ms..200ms) Egy ellenálláson keresztül kell bekötni (a processzor is vezérelheti a RESET jelet) Minimum 20us ideig aktív legyen 16
Vdd Vdd OSCILLATOR TIMEOUT COUNTER MAX809 R2 R1 I AND 4k7 C RESET GND GND 17
Power supply monitor más néven: brown-out detector Vdd Vrst /RESET td t 18
A mag gyakran kis tápfeszültséget igényel A külső perifériák tápfeszültsége lehet más Ne kelljen külső stabilizátor a kisebb tápfeszültséghez A stabilizálást javíthatjuk Low-dropout regulator kis feszültségesés 19
parameter conditions min typ max units Input Voltage Range * - 5,25 V Load Current - - 50 ma Load Regulation - 7 15 mv/ma Output Voltage (VDD) REG0MD=0 2,0 2,1 2,25 V Output Voltage (VDD) REG0MD=1 2,35 2,5 2,55 V *Output Voltage = Nominal Output Voltage (Load Regulation x Load Current) Vdd min 20 t
2.15V..5.25V C8051F410 C8051F410 10uF 100nF VREG IN 2.0V..2.75V VREG IN 10uF 100nF VDD OUT 10uF 100nF VDD IN VREGIN-VDD>Idd*15mV/mA 21
A bemeneti maximális feszültséget ne lépjük túl Csatolásmentesítő kondenzátorok kellenek ki- és bemeneteken 100nF és 10uF párhuzamosan kötve a GND-re Ne húzzuk felfelé a kimenetet, akkor nem tud stabilizálni Ha külső egységeket táplálunk, figyeljünk az áramkorlátra, terhelhetőségre 22
RESET generálása, ha a program hibásan működik végtelen ciklus hibás kódra futás verem felborulás elekromágneses zavar RESET után automatikusan bekapcsolva ha nem használjuk, azonnal ki kell kapcsolni 23
Működési elv: a programnak adott idő alatt jelezni kell a WDT-nek ellenkező esetben RESET generálódik Megoldás: egy számláló adott órajellel lép ( t időnként) N lépés megtétele után RESET ha jelez a program neki, újra N lépés van a RESET-ig így a programnak N t-nél rövidebb időnként kell jeleznie a WDT-nek, ellenkező esetben RESET 24
signaling signaling C Processing Processing Processing t WDT 0 1 2 3 4 5 6 0 1 2 3 4 0 1 2 3 4 5 6 7 <N t <N t N t RESET 25
Részletek egy későbbi fejezetben Alapállapot: t=256*12/191406 s N=125, timeout: 2,006 s PCA0CPL5=125; //125 void main(void) { while (1) { Process(); // feladat elvégzése <2s PCA0CPH5=0; // jelzés a WDT-nek } } 26
RESET után automatikusan aktív Ha nem használjuk, azonnal le kell kapcsolni A C start-up kód túl hosszú lehet A jelzés lehet megszakítási rutinban Nem véd a főprogram hibái ellen Kevésbé robusztus Gondos tervezést igényel A legjobb, ha be van kapcsolva Kikapcsolás csak tesztelés, prototípus esetén A kikapcsolás is tiltható! Csak RESET hatástalanít 27
28
Mód leírás kilépés áramfelvétel (@ 1MHz) NORMAL a processzor fut - 300uA IDLE STOP PCON.0 beállításával CPU nem fut perifériák működnek, oszcillátor fut memória, regiszterek állapota PCON.1 beállításával CPU, perifériák, belső oszcillátor mind áll Analóg perifériákat a programozó állíthatja le RESET WDT engedélyezett IRQ csak RESET SUSPEND belső oszcillátor megállítása Port 0 or Port 1 Match Comparator0/1 is logic 0. smartclock Oscillator Fail smartclock Alarm 150uA 0,15uA 0,15uA 29
Várakozás adott ideig idle mód Az engedélyezett megszakítás felkelti a processzort Más megszakítás megzavarhatja! TMR2H=-Steps >> 8; // 65536-Steps TMR2L=-Steps; TF2H=0; // clear timer 2 flag EA=0xA0; // enable interrupts TR2=1; // run timer 2 PCON =1; // set idle mode 30