Gingl Zoltán, 2013, Szeged Mikrovezérlők Alkalmazástechnikája 2015.06.28. 22:20 Működést támogató perifériák és használatuk 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 2015.06.28. 22:20 Működést támogató perifériák és használatuk 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 2015.06.28. 22:20 Működést támogató perifériák és használatuk 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 2015.06.28. 22:20 Működést támogató perifériák és használatuk 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 R Vdd V2 V1 C 0 2015.06.28. 22:21 Működést támogató perifériák és használatuk 5
2015.06.28. 22:21 Működést támogató perifériák és használatuk 6 R RC t R V V t V RC t e V V t V (0) ) ( 1 ln 1 (0) ) ( / C R V(0) VR
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 7
Pierce oszcillátor C 1 C L C L C 0 2015.06.28. 22:21 Működést támogató perifériák és használatuk 8
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 9
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] 2015.06.28. 22:20 Működést támogató perifériák és használatuk 10
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 11
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 12
C8051F410 clock generator Vdd 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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 13
R és C: f=1,23/(rc) Csak C: f=kf/(cvdd); (f:mhz, Vdd: V, C:pF, KF: állítható, C100pF) Limitált, alacsonyabb frekvenciákhoz Nem pontos Gyors feléledési idő Egyszerű, kis fogyasztású A belső oszcillátor legtöbbször kiváltja 2015.06.28. 22:21 Működést támogató perifériák és használatuk 14
A belső oszcillátor gyorsan feléled, RESET után alapértelmezett C és RC oszcillátorok is gyorsan felélednek 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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 15
Belső (24,5MHz0,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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 16
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 } 2015.06.28. 22:21 Működést támogató perifériák és használatuk 17
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 } 2015.06.28. 22:21 Működést támogató perifériák és használatuk 18
ST Microelectronics http://www.st.com/internet/com/technical_re SOURCES/TECHNICAL_LITERATURE/APPLICATION _NOTE/CD00221665.pdf 2015.06.28. 22:21 Működést támogató perifériák és használatuk 19
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<180s t RESET 2015.06.28. 22:21 Működést támogató perifériák és használatuk 20
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 21
Vdd Vdd OSCILLATOR TIMEOUT COUNTER MAX809 R2 R1 I AND 4k7 C RESET GND GND 2015.06.28. 22:21 Működést támogató perifériák és használatuk 22
Power supply monitor Brown-out detector Vdd Vrst /RESET td t 2015.06.28. 22:21 Működést támogató perifériák és használatuk 23
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 24
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 25 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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 26
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 27
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 28
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 Nt-nél rövidebb időnként kell jeleznie a WDT-nek, ellenkező esetben RESET 2015.06.28. 22:21 Működést támogató perifériák és használatuk 29
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 <Nt <Nt Nt RESET 2015.06.28. 22:21 Működést támogató perifériák és használatuk 30
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 } } 2015.06.28. 22:21 Működést támogató perifériák és használatuk 31
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 32
2015.06.28. 22:21 Működést támogató perifériák és használatuk 33
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 34
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 2015.06.28. 22:21 Működést támogató perifériák és használatuk 35
2015.06.28. 22:21 Működést támogató perifériák és használatuk 36
2015.06.28. 22:21 Működést támogató perifériák és használatuk 37
2015.06.28. 22:21 Működést támogató perifériák és használatuk 38