=>MICROCONTROLERUL ESTE UN MICROCALCULATOR INTR-UN SINGUR CIP, CU MEMORIE DE
PROGRAM INCLUSA SI INTERFETE I/O CARE POT FI PROGRAMATE PENTRU A EFECTUA DIFERITE FUNCTII DE CONTROL. =>MICROCONTROLERUL INCLUDE IN MOD UZUAL: CPU UNITATEA CENTRALA DE PROCESARE; RAM/ROM/EEPROM/FLASH MEMORII; INTERFETE I/O STANDARD SI CONFIGURABILE; TIMERE SI CONTROLLER DE INTRERUPERI. =>MICROCONTROLERELE AU AJUNS SA FIE FOLOSITE PE SCARA LARGA: - PENTRU CA AU REOLUTIONAT MODUL DE REZOLARE A PROBLEMELOR DE CONTROL A PROCESELOR; - PENTRU CA INLOCUIESC DULAPURI INTREGI DE ECHIPAMENT CONENTIONAL MECANIC, ELECTRIC, ELECTRONIC SAU ELECTROMECANIC; - PENTRU CA SUNT MULT MAI FIABILE IN E!PLOATARE; - PENTRU CA SUNT MULT MAI IEFTINE; - PENTRU CA O SCHIMBARE A FLU!ULUI TEHNOLOGIC NU IMPLICA SCHIMBAREA INTREGULUI ECHIPAMENT, CI NUMAI A PROGRAMULUI. =>DOMENII DE UTILIZARE: CONTROL INDUSTRIAL: CONTROLUL CUPTOARELOR; CONTROLUL ILUMINATULUI; CONTROLUL MAGAZIILOR DE SCULE ALE MASINILOR UNELTE; CONTROLUL ACCESULUI; CONTROLUL ECHIPAMENTELOR CU COMPLE!ITATE MICA SI MEDIE. AUTOMOTIE: - CONTROLUL MOTORULUI "ECU#; - CONTROLUL SASIULUI "BOD$ CONTROL#: CONTROLUL ACTIONARII GEAMURILOR; CONTROLUL DEZABURIRII; CONTROLUL CLIMATIZARII; CONTROLUL FRANELOR "ABS#; CONTROLUL TRACTIUNII "ESP#; CONTROLUL ACCESULUI. ELECTROCASNICE: CUPTOARE CU MICROUNDE; FRIGIDERE; ARAGAZE; ASPIRATOARE; HOTE; CENTRALE TERMICE; TELEIZOARE. COMUNICATII: TELEFOANE; CENTRALE TELEFONICE; INTERNET; %IRELESS. AUTOMATIZARI DIERSE: SEMAFORIZARE; CONTROLUL ECHIPAMENTELOR DE TESTARE SI ANALIZA; ETC. 2. Structura generala a unui C. => UNITATEA CENTRALA "CPU# - CONTINE DISPOZITIELE DE BAZA CARE SUNT CERUTE PENTRU FUNCTIONAREA UNUI MICROCONTROLLER. ACEASTA INCLUDE: UNITATEA LOGICA SI ARITMETICA "ALU#; MEMORIA; OSCILATORUL; RESET; INTRERUPERI; SET DE INSTRUCTIUNI. => PERIFERICE - SUNT DISPOZITIE CARE ADAUGATE, FAC DIFERENTA FATA DE UN MICROPROCESOR. PORTURI I/O DE UZ GENERAL; TIMERE; CAPTURA, COMPARARE SI MODULATIA IMPULSURILOR IN DURATA "CCP%M#; INTERFETE SERIALE STANDARD; INTERFETE PARALELE; REFERINTE DE TENSIUNE; COMPARATOARE; CONERTOARE ANALOG DIGITALE; AFISAJ LCD. => FUNCTII SPECIALE - AJUTA LA CRESTEREA FLE!IBILITATII IN PROIECTARE, A REALIZARII UNUI SISTEM DE INCREDERE, CU UN COST MULT REDUS. FUNCTII: CONFIGURARE; PO%ER ON RESET "POR#; BRO%N OUT RESET "BOR#; %ATCHDOG TIMER; SLEEP; OSCILATORUL INTERN; PROGRAMAREA IN CIRCUIT "ICSP#. => ARHITECTURA INFLUENTEAZA PERFORMANTELE GLOBALE: ITEZA OPERATIONALA; STRUCTURA MEMORIEI DISPONIBILE. &# ARHITECTURA ON NEUMANN - CARACTERISTICI: INSTRUCTIUNILE SI DATELE SUNT ADUSE PE ACELASI BUS; BANDA LIMITATA; NUMAR MARE DE CICLI PROCESOR/ CICLU DE FETCH. ARHITECTURA HARARD - CARACTERISTICI: SPATIU DE MEMORIE SEPARAT PENTRU INSTRUCTIUNI SI DATE; SUNT POSIBILE LARGIMI DIFERITE PENTRU BUSURILE DE DATE SI INSTRUCTIUNI; NUMAR MINIM DE CICLI PROCESOR PENTRU UN CICLU DE FETCH; CRESTEREA REALA A THROUGHPUT-ULUI. 3. Unitatea centrala a unui microcontroller. => ALU ESTE O UNITATE ARITMETICA SI LOGICA DE UZ GENERAL. => ALU EFECTUEAZA FUNCTII ARITMETICE SI LOGICE INTRE DATE DIN REGISTRUL DE LUCRU SI ORICARE ALT REGISTRU. => MICROCONTROLERELE "MCU# PIC'()*+ DE LA FIRMA MICROCHIP, CONTIN O UNITATE ALU DE , BITI SI UN REGISTRU DE LUCRU "%# DE , BITI. => ALU POATE EFECTUA URMATOARELE OPERATII: INSUMARE; SCADERE; DEPLASARE "SHIFT#; OPERATII LOGICE. => DACA NU SE MENTIONEAZA ALTFEL, OPERATIILE ARITMETICE SE FAC IN COMPLEMENT FATA DE DOI. => IN INSRUCTIUNI CU DOI OPERANZI, UZUAL UNUL DIN OPERANZI ESTE REGISTRUL DE LUCRU "%# IAR CELALALT OPERAND ESTE UN REGISTRU DE UZ GENERAL SAU O CONSTANTA. => IN INSTRUCTIUNILE CU UN SINGUR OPERAND, OPERANDUL ESTE REGISTRUL DE LUCRU "%# SAU UN REGISTRU DE UZ GENERAL. => REGISTRUL % ESTE UN REGISTRU DE LUCRU DE , BITI, NEADRESABIL. => IN FUNCTIE DE INSTRUCTIUNILE E!ECUTATE, ALU POATE AFECTA ALORILE BITILOR CARR$ "C#, DIGIT CARR$ "DC# SI ZERO "Z# DIN REGISTRUL STATUS. 4. Memoria de program a unui C. => ESTE COMPUSA DIN - BLOCURI: MEMORIA DE PROGRAM SI MEMORIA DE DATE. => FIECARE BLOC ARE PROPRIUL BUS. => ACCESUL LA BLOCURILE DE MEMORIE POATE SA APARA IN ACELASI CICLU SISTEM. ORGANIZAREA MEMORIEI DE PROGRAM: => MCU DIN FAMILIA MICROCHIP MIDRANGE AU UN CONTOR DE PROGRAM DE &. BITI => ,/ SPATIU DE ADRESARE. => INSTRUCTIUNILE SUNT ORGANIZATE PE &0 BITI SI SUNT 1SINGLE %ORD2. REZULTA UN SPATIU DE ADRESARE DE ,/ 3 &0 BITI. => SPATIUL DE MEMORIE DE PROGRAM ESTE DIIZATA IN 0 PAGINI DE CATE -/ FIECARE: 45 - 6FF5; ,445 - FFF5; &4445 - &6FF5; &,445 - &FFF5. =>IN FUNCTIE DE TIPUL MCU SUNT IMPLEMENTATE NUMAI O PORTIUNE "PAGINA# DE MEMORIE. =>IN FIGURA DIN URMATOARE SE POATE EDEA STIA HARD%ARE CU , NIELE DE ADANCIME: => PENTRU A SARI INTRE PAGINILE DE MEMORIE DE PROGRAM, TREBUIE MODIFICATI CEI MAI SEMNIFICATII BITI DIN CONTORUL DE PROGRAM "PC#. ACEASTA SE FACE PRIN MODIFICAREA ALORII UNUI REGISTRU SPECIAL SFR NUMIT PROGRAM COUNTER LATCH HIGH "PCLATCH#. => DACA SE E!ECUTA INSTRUCTIUNI CONSECUTIE, CONTORUL DE PROGRAM A TRECE DE GRANITELE PAGINII FARA INTERENTIA UTILIZATORULUI. => PENTRU DISPOZITIE CARE AU IMPLEMENTAT MAI PUTIN DE ,/ DE MEMORIE DE PROGRAM, ACCESAREA UNEI LOCATII PESTE CEA FIZICA A CAUZA ACCESAREA ADRESEI DIN PAGINA FIZICA, IGNORAND BITUL SAU BITII DIN PCLATCH. ECTORUL DE RESET: UN RESET A FORTA CONTORUL DE PROGRAM LA ALOAREA 45; OM NUMI ACEASTA ADRESA 7ADRESA ECTORULUI DE RESET8; ORICE RESET A STERGE CONTINUTUL REGISTRULUI PCLATCH. ECTORUL DE INTRERUPERE: CAND O INTRERUPERE ESTE RECUNOSCUTA, PC ESTE FORTAT LA ADRESA 44405. OM DENUMI ACEASTA ADRESA 7ADRESA ECTORULUI DE INTRERUPERE8; NU SE MODIFICA REGISTRUL PCLATCH - TREBUIE AUT GRIJA DACA ADRESA DE SALT DIN INTRERUPERE ESTE IN ALT BANC DE MEMORIE. - INAINTE DE A FI MODIFICAT DE ISR, CONTINUTUL PCLATCH TREBUIE SALAT, ASTFEL INCAT DUPA REENIREA DIN RUTINA DE INTRERUPERE, CONTINUTUL SAU SA POATA FI RESTAURAT. 5. Contorul de program PC. => CONTORUL DE PROGRAM "PC# SPECIFICA ADRESA INSTRUCTIUNII CARE TREBUIE ADUSA PENTRU E!ECUTIE. ARE DIMENSIUNEA DE &. BITI. => ESTE COMPUS DIN DOI B$TE, UNUL MAI SEMNIFICATI "PCH#, ALTUL MAI PUTIN SEMNIFICATI "PCL#. => B$TE-UL CEL MAI PUTIN SEMNIFICATI ESTE DENUMIT REGISTRUL PCL. ESTE UN REGISTRU CARE POATE FI ATAT CITIT CAT SI SCRIS. => B$TE-UL CEL MAI SEMNIFICATI ESTE DENUMIT REGISTRUL PCH. PCH CONTINE BITII 9&-:,> DIN PC SI NU POATE FI DIRECT CITIT SI SCRIS, CI NUMAI PRIN INTERMEDIUL REGISTRULUI PCLATCH. SITUATIA DE MAI JOS NE ARATA CUM PC ESTE INCARCAT PRIN SCRIEREA PCL "PCLATH 90:4> PCH#: SITUATIA DE MAI JOS NE ARATA CUM PC ESTE INCARCAT IN TIMPUL UNEI INSTRUCTIUNI GOTO "PCLATH 90:.> PCH#: SITUATIA DE MAI JOS NE ARATA CUM PC ESTE INCARCAT IN TIMPUL UNEI INSTRUCTIUNI CALL "PCLATH 90:.> PCH#, CU PC INCARCAT "PUSH:;# IN ARFUL STIEI: SITUATIA DE MAI JOS NE ARATA CUM ESTE INCARCAT PC IN TIMPUL UNEI INSTRUCTIUNI IN CARE PC ESTE INCARCAT "POP:;# DIN ARFUL STIEI: 6. Stiva. => STIA ESTE O MEMORIE DE TIP LIFO "LAST IN FIRST OUT#. STIA PERMITE APARITIA UNOR COMBINATII DE PANA LA , APELURI DE SUBRUTINE SAU INTRERUPERI. => STIA CONTINE ADRESA DE REINTOARCERE DIN RAMURA DE PROGRAM ACTIA IN E!ECUTIA PROGRAMULUI. => MICROCONTROLLERELE DIN GAMA DE MIJLOC AU O STIA CU , NIELE 3&. BITI. => SPATIUL STIEI NU SE POATE CITI SAU SCRIE. SPATIUL STIEI NU FACE PARTE DIN SPATIUL DE MEMORIE PROGRAM SAU MEMORIE DE DATE. => CONTORUL DE PROGRAM ESTE 1IMPINS2 "PUSH:;# IN STIA LA E!ECUTIA UNEI INSTRUCTIUNI CALL SAU CAND O INTRERUPERE PROOACA O RAMIFICARE A PROGRAMULUI. => STIA ESTE GOLITA "POP:;# IN CAZUL APARITIEI UNEIA DIN INSTRUCTIUNILE RETURN, RETL% SAU RETFIE. => PCLATCH NU ESTE MODIFICAT CAND SE E!ECUTA OPERATII CU STIA. => NU E!ISTA INDICATOARE DE DEPASIRE A NUMARULUI MA!IM DE PUSH-URI IN STIA. . Memoria de date. => MEMORIA DE DATE ESTE FORMATA DIN ZONA REGISTRILOR CU FUNCTII SPECIALE "SFR# SI DIN ZONA REGISTRILOR PENTRU OPERATII GENERALE "GPR#. => SFR CONTROLEAZA OPERAREA DISPOZITIULUI IAR GPR ESTE ZONA DE MEMORARE DATE GENERALE. => MEMORIA DE DATE ESTE IMPARTITA IN BANCURI DE MEMORIE ATAT PENTRU ZONA GPR CAT SI PENTRU ZONA SFR. ZONA GPR ESTE IMPARTITA IN BANCURI PENTRU A PUTEA PERMITE ADRESAREA A MAI MULT DE <= BITI DE MEMORIE RAM. REGISTRII PENTRU FUNCTII SPECIALE "SFR>#, UTILIZATI PENTRU CONTROLUL MODULELOR PERIFERICE SI A FUNCTIUNILOR CENTRALE. => PENTRU A PUTEA FACE SELECTIA BANCURILOR DE MEMORIE AEM NEOIE DE BITI DE CONTROL. ACESTIA SUNT LOCALIZATI IN REGISTRUL STATUS "STATUS96:?>#. => ORGANIZAREA BANCURILORDIFERA DE LA DISPOZITI LA DISPOZITI. => PENTRU A MUTA CONTINUTUL UNUI REGISTRU IN ALTUL, ALOAREA TREBUIE SA TREACA PRIN REGISTRUL %. REZULTA - CICLURI MASINA PENTRU MUTARI REGISTRU- REGISTRU. => INTREAGA MEMORIE POATE FI ACCESATA DIRECT SAU INDIRECT. ADRESAREA DIRECTA POATE NECESITA UTILIZAREA BITILOR RP&:RP4. => ADRESAREA INDIRECTA NECESITA UTILIZAREA REGISTRULUI DE SELECTARE A BANCURILOR "FSR#. ADRESAREA INDIRECTA UTILIZEAZA BITUL REGISTRULUI POINTER INDIRECT "IRP# DIN REGISTRUL STATUS PENTRU ACCESAREA ZONELOR BAN/4/BAN/& SAU BAN/-/BAN/. ALE MEMORIEI DE DATE. !. "dresarea directa. => ADRESAREA DIRECTA ESTE O METODA DE ACCESARE A MEMORIEI. ADRESAREA DIRECTA POATE NECESITA UTILIZAREA BITILOR RP&:RP4. => E!EMPLU DE INSTRUCTIUNE: #. "dresarea indirecta. => ADRESAREA INDIRECTA ESTE UN MOD DE ADRESARE A MEMORIEI DE DATE, IN CARE ADRESA MEMORIEI DE DATE DIN INSTRUCTIUNE NU ESTE FI!ATA. => ESTE UTILIZAT UN REGISTRU SFR CA POINTER LA LOCATIA DIN MEMORIA DE DATE CARE TREBUIE CITITA SAU SCRISA. => DEOARECE ACEST PIONTER ESTE IN RAM, CONTINUTUL SAU POATE FI MODIFICAT DE CATRE PROGRAM. => E!EMPLU DE INSTRUCTIUNE - UTILIZAREA ADRESARII INDIRECTE SIMPLE PENTRU A STERGE RAM "LOCATIILE -45 -F5# INTR-UN NUMAR MINIM DE INSTRUCTIUNI: BCF STATUS, IRP ; Indirect addressing Bank0/1 MOVL 0!"0 ; Initia#i$e %&inter t& RAM MOVF FSR '()T CLRF I'*F ; C#ear I'*F register I'CF FSR,F ; Inc %&inter BTFSS FSR,+ ; A## d&ne, -OTO '()T ; 'O, c#ear ne!t CO'TI'U( ; . ; /(S, c&ntin0e 1$. %ntreruperi. => MICROCONTROLLERELE POT AEA MULTE SURSE DE INTRERUPERI, INCLUZAND IN GENERAL O SURSA DE INTRERUPERE PENTRU FIECARE MODUL PERIFERIC. => ANUMITE MODULE POT GENERA INTRERUPERI MULTIPLE "E!. USART#. => INTRERUPERILE CURENTE POT SA APARA DE LA: PINUL DE INTRERUPERE INT "INTRERUPERE E!TERNA#; INTRERUPEREA LA DEPASIREA ALORII MA!IME A REGISTRULUI TMR4; INTRERUPERE LA SCHIMBAREA STARII PINILOR RB6:RB0 AI PORTULUI B; INTRERUPERE LA SCHIMBAREA STARII COMPARATORULUI; INTRERUPERE DE LA PORTUL PARALEL; INTRERUPERI DE LA PORTUL SERIAL USART "INTRERUPERE DE RECEPTIE, DE TRANSMISIE SI LA EROARE#; INTRERUPERE LA TERMINAREA CICLULUI DE CONERSIE ANALOG-NUMERICA; INTRERUPERE DE LA AFISAJ LCD; INTRERUPERE LA TERMINAREA SCRIERII DATELOR IN MEMORIA EEPROM; INTRERUPERE DE DEPASIRE TIMER& / TIMER-; INTRERUPERE CCP; INTRERUPERE SSP. => E!ISTA CEL PUTIN UN REGISTRU UTILIZAT IN CONTROLUL SI STAREA INTRERUPERILOR, ACESTA FIIND INTCON. => DACA MCU ESTE PREAZUT CU INTRERUPERI DE LA DISPOZITIELE PERIFERICE, ACESTA ARE SI PERECHI DE REGISTRII PIR SI PIE. => REGISTRUL INTCON BIT6 GIE :GLOBAL INTERRUPT ENABLE BIT & = ALIDEAZA TOATE INTRERUPERILE NEMASCATE; 4 = INALIDEAZA TOATE INTRERUPERILE; BIT= PEIE :PERIPHERAL INTERRUPT ENABLE BIT & = ALIDEAZA TOATE INTRERUPERILE NEMASCATE DE LA PERIFERICE; 4 = INALIDEAZA TOATE INTRERUPERILE DE LA PERIFERICE; BIT? TOIE :TMR4 OERFLO% INTERRUPT ENABLE BIT & = ALIDEAZA INTRERUPEREA DE DEPASIRE TMR4; 4 = INALIDEAZA INTRERUPEREA DE DEPASIRE TMR4; BIT0 INTE :INT E!TERNAL INTERRUPT ENABLE BIT & = ALIDEAZA INTRERUPEREA PE PINUL E!TERN INT; 4 = INALIDEAZA INTRERUPEREA PE PINUL E!TERN INT. BIT. RBIE :RB PORT CHANGE INTERRUPT ENABLE BIT & = ALIDEAZA INTRERUPEREA LA SCHIMBAREA ALORILOR IN REGISTRUL PORTULUI B; 4 = INALIDEAZA INTRERUPEREA LA SCHIMBAREA ALORILOR IN REGISTRUL PORTULUI B; BIT- TOIF :TMR4 OERFLO% INTERRUPT FLAG BIT & = ALOARE DEPASITA A REGISTRULUI TMR4; 4 = ALOARE NEDEPASITA A REGISTRULUI TMR4; BIT& INTF :INT E!TERNAL INTERRUPT FLAG BIT & = INTRERUPEREA E!TERNA A APARUT; 4 = INTRERUPEREA E!TERNA NU A APARUT; BIT4 RBIF :RB PORT CHANGE INTERRUPT FLAG BIT & = CEL PUTIN UNUL DIN PINI RB6:RB0 SI-A SCHIMBAT STAREA; 4 = NICI UNUL DIN PINI RB6:RB0 NU SI-A SCHIMBAT STAREA. => BITUL GIE "INTCON96># ESTE STERS LA RESET. => INSTRUCTIUNEA RETFIE "REINTOARCERE DIN INTRERUPERE#, LA IESIREA DIN RUTINA DE INTRERUPERE SETEAZA BITUL GIE, CARE PERMITE E!ECUTIA ORICAREI INTRERUPERI CARE POATE APAREA. 11. &atenta intreruperii. => LATENTA INTRERUPERII ESTE DEFINITA CA TIMPUL SCURS DIN MOMENTUL APARITIEI EENIMENTULUI CARE GENEREAZA INTRERUPEREA, PANA IN MOMENTUL IN CARE INSTRUCTIUNEA DE LA ADRESA 44405 ESTE E!ECUTATA. => PENTRU INTRERUPERI SINCRONE "TIPIC INTERNE# LATENTA ESTE DE .TC$. => PENTRU INTRERUPERI ASINCRONE "TIPIC E!TERNE#, CUM AR FI INT SAU SCHIMBAREA STARII PORTULUI B, LATENTA ESTE TIPIC . - ..6? TC$. INTRERUPERI INT SI E!TERNE => INTRERUPEREA E!TERNA PE PINUL INT ESTE ACTIATA PE FRONT. => DACA BITUL INTEDG "OPTION9=># ESTE SETAT, TRIGERAREA SE FACE PE FRONTUL CRESCATOR. => DACA BITUL INTEDG "OPTION9=># ESTE STERS, TRIGERAREA SE FACE PE FRONTUL DESCRESCATOR. => INTRERUPEREA POATE FI ALIDATA SAU INALIDATA PRIN SETAREA SAU STERGEREA BITULUI INTE ENABLE "INTCON90>#. => BITUL INTF TREBUIE STERS PRIN PROGRAM IN CADRUL RUTINEI DE TRATARE A INTRERUPERII, INAINTEA REALIDARII ACESTEI INTRERUPERI. => INTRERUPEREA INT POATE TREZI PROCESORUL DIN STAREA SLEEP, DACA ANTERIOR INTRARII IN STAREA SLEEP BITUL INTE A FOST SETAT. 12. Salvarea conte'tului in intreruperi. => IN INTRERUPERI, ESTE AUTOMAT SALATA IN STIA NUMAI ALOAREA CONTORULUI DE PROGRAM PC. PENTRU SALAREA SI A ALORILOR DIN ALTI REGISTRII, CUM AR FI REGISTRUL % SAU STATUS, TREBUIE SCRIS UN PROGRAM. => ACTIUNEA DE SALARE A INFORMATIILOR ESTE CUNOSCUTA SUB DENUMIREA GENERICA DE PUSH-ING IAR ACTIUNEAA DE RESTAURARE A INFORMATIILOR INAINTE DE REINTOARCEREA DIN RUTINA DE INTRERUPERI ESTE CUNOSCUTA SUB DENUMIREA DE POP- ING. => ACTIUNILE PUSH SI POP NU AU MNEMONICI SPECIALE, ELE SUNT NUMAI ACTIUNI CONCEPTUALE. => ACTIUNILE PUSH SI POP POT FI IMPLEMENTATE CA O SECENTA DE PROGRAM. UZUAL SE FOLOSESC MACRO-URI. PASI DE URMAT PENTRU REALIZAREA UNUI PROGRAM PUSH / POP: &. MEMOREAZA CONTINUTUL REGISTRULUI % IN BANCUL DE MEMORIE CURENT; -. MEMOREAZA REGISTRUL STATUS IN BAN/4; .. E!ECUTA CODUL RUTINEI DE INTRERUPERE "ISR#; 0. REFACE STAREA REGISTRULUI STATUS SI A BITILOR DE SELECTIE A BANCULUI DE MEMORIE; ?. REFACE STAREA REGISTRULUI %. E!EMPLU: MO%F %@TEMP ; C+AB % C+ D T:'A+*D*B R:E(>C:* ; *:ED*;F:>> +G )H**:IC JDIK S%APF STATUS,% ; SLDA STATUS I(JJF:> DI; AFD): (IC+ ; % *:E(>C:* MO%F STATUS@TEMP ; SDM: STATUS C+ D T:'A+*D*B *:E(>C:* ; (I BDIK4 : : "IIC:**HAC S:*M(): R+HC(I: "ISR# # : S%APF STATUS@TEMP,% ; SLDA +*(E(IDF STATUS *:E(>C:* MDFH: ; (IC+ % "*:>C+*:> +*(E(IDF JDIK# MO%F STATUS ; R:>C+*: STATUS *:E(>C:* G*+' ; % *:E(>C:* S%APF %@TEMP,F ; SLDA %@T:'A I(JJF:> DI; *:CH*I ; MDFH: C+ %@T:'A S%APF %@TEMP,% ; SLDA %@T:'A C+ % C+ *:>C+*: ; +*(E(IDF % MDFH: L(C5+HC DGG:)C(IE ; STATUS 13 ( 14. Porturi %)* digitale. +egistrul de port. Scriere. Citire => PINUL I/O DE UZ GENERAL POATE FI CONSIDERAT CA CEL MAI SIMPLU PERIFERIC. => PINII I/O PERMIT MICROCONTROLLERULUI SA MONITORIZEZE SI SA CONTROLEZE ALTE DISPOZITIE. => PENTRU FLE!IBILITATE SI FUNCTIONALITATE, PINI I/O POT AEA MAI MULTE FUNCTIUNI ALTERNATIE. => TIPUL FUNCTIUNII ESTE DAT DE TIPUL DISPOZITIULUI SI DE NECESITATILE I/O. => REGISTRUL PORT ESTE UN LATCH PENTRU DATELE DE IESIRE. => CAND REGISTRUL PORT ESTE CITIT, SE CITESTE STAREA PREZENTA A PINILOR I/O, NU LATCH-UL. => INSTRUCTIUNILE CARE SE REFERA LA PORTURI SUNT DE TIP CITESTE-MODIFICA-SCRIE. => CAND MAI MULTE FUNCTIUNI PERIFERICE SUNT MULTIPLE!ATE IN ACELASI PORT, FUNCTIONALITATEA PINULUI I/O RESPECTI TREBUIE SCHIMBATA ASTFEL INCAT SA FIE IN CONCORDANTA CU CERINTELE FUNCTIUNII RESPECTIE. => UN E!EMPLU ESTE CONERTORUL ANALOG DIGITAL "A/D# SAU MODULUL DRIER LCD => LA RESET, ACESTI PINI SUNT FORTATI CA PINI DE I/O DE UZ GENERAL SI TREBUIE PROGRAMATI CA PINI DE INTRARE ANALOGICA, CONTROLATI DE REGISTRUL ADCON&. => CITIREA PINILOR CONFIGURATI CA INTRARI ANALOGICE A DUCE LA REZULTATUL 142. 15 ( 16. Porturi %)* digitale. +egistrul de directie. Scriere. Citire => DIRECTIA IN SAU OUT A UNUI PIN ESTE CONTROLATA DE REGISTRUL DE DIRECTIE A DATELOR NOTAT TRIS, CHIAR SI CAND ACESTA ESTE UTILIZAT CA INTRARE ANALOGICA. => TRIS9N> CONTROLEAZA DIRECTIA PORTULUI N. => UN 1&2 PE BITUL CORESPUNZATOR UNUI PIN IL DESEMNEAZA CA PIN DE INTRARE "INPUT#, IN TIMP CE UN 142 PE BITUL CORESPUNZATOR UNUI PIN IL DESEMNEAZA CA PIN DE IESIRE "OUTPUT#. => UTILIZATORUL TREBUIE SA SE ASIGURE CA BITII TRIS SE MENTIN SETATI TOT TIMPUL CAND SE UTILIZEAZA ACESTI PINI CA INTRARI ANALOGICE. => BITII DIN REGISTRUL TRIS SUNT SUPRASCRISI IN CAZUL ANUMITOR PERIFERICE, CAND ACESTEA SUNT ALIDATE. => TREBUIE EITATE INSTRUCTIUNI DE TIP CITESTE-MODIFICA-SCRIE "BSF, BCF, !OR%F# CARE AU CA DESTINATIE REGISTRUL TRIS. C(C(*:D *:E(>C*HFH( PORTN :)5(MDF:DOP )H + )(C(*: D I(M:F:F+* ;: C:I>(HI: :N(>C:IC: A: A(I( ";D)P A(I(( *:>A:)C(M( >HIC ;: (IC*D*:#, C*DI>G+*'DC( A*(I )(*)H(C: T*(EE:*-S)5'(CC, QI I(M:F: TTL. A>CG:F, ;D)P HI DIH'(C A(I :>C: )+IG(EH*DC A:IC*H (IC*D*:, DCHI)( + )(C(*: :EDFP )H 4 MD )+*:>AHI;: HIH( I(M:F ;: C:I>(HI: :EDF )H >>. P: ;: DFCP AD*C:, ;D)P >: )(C:>C: + MDF+D*: :EDFP )H &, D):D>CD MD )+*:>AHI;: HIH( I(M:F ;: C:I>(HI: :EDF )H ;;. 1. %nitiali,area porturilor digitale. => ESTE RECOMANDAT CA LA INITIALIZAREA UNUI PORT I/O SA SE RESPECTE URMATOAREA SUCCESIUNE: &. INITIALIZAREA REGISTRULUI PORTN; -. INITIALIZAREA REGISTRULUI TRISN. => RESPECTAREA SUCCESIUNII ELIMINA POSIBILITATEA APARITIEI GLITCH-ULUI LA NIELUL PINULUI, IN TIMP CE ALORILE DIN LATCH-UL DE DATE AL PORTULUI SUNT INTR-O STARE ALEATOARE. => E!EMPLU DE INITIALIZARE A PORTULUI B: CLRF STATUS ; Bank0 CLRF PORTB ; Initialize PORTB by clearing output ata latc!e" BSF STATUS# RP0 ; Select Bank$ %O&L' 0(CF ; &alue u"e to initialize ata irection %O&'F TRISB ; PORTB)*+0, - input" ; PORTB).+/, - output" ; PORTB)0+1, - input" OPERATII SUCCESIE LA UN PORT I/O => PENTRU SCRIEREA ACTUALA LA UN PORT I/O LA SFARSITUL CICLULUI DE INSTRUCTIUNE, LA FEL CA IN CAZUL CITIRII, DATELE TREBUIE SA FIE ALIDE LA INCEPUTUL CICLULUI DE INSTRUCTIUNE. => TREBUIE AUT GRIJA CAND APAR INSTRUCTIUNI DE SCRIERE URMATE DE OPERATIUNI DE CITIRE, PE ACELASI PORT. => SECENTA DE PROGRAM TREBUIE SA PERMITA STABILIZAREA ALORII TENSIUNII LA PIN, INAINTE CA URMATOAREA INSTRUCTIUNE CARE CAUZEAZA CITIREA DE LA PORT SA FIE E!ECUTATA, ALTFEL S-AR PUTEA CITI ECHEA STARE A PORTULUI IN LOC DE CEA CURENTA. => E!EMPLU DE MODEL I/O CARE POATE CAUZA O ASTFEL DE SITUATIE: DACA FRECENTA I/O CRESTE, CRESTE PERICOLUL DESCRIS ANTERIOR. CEA MAI BUNA SOLUTIE ESTE INSERIEREA CU PINUL RESPECTI A UNUI REZISTOR. O SOLUTIE MULT MAI IEFTINA ESTE INSERAREA IN PROGRAM AUNUI CICLU NOP. 1!. Porturi %)* analogice. => P+*CH*(F: I/O DIDF+E(): (IC:E*:DOP )(*)H(C: ADC >DH DAC )H 'D( 'HFC: )DIDF:, )+'AD*DC+D*: DIDF+E():, G(FC*: DIC(DF(:*:. => DACA PINI SUNT MULTIPLE!ATI CU INTRARI ANALOGICE, LA UN POR, ACESTI PINI SUNT CONFIGURATI CA INTRARI ANALOGICE, CA SI CUM AR FI CONTROLATI DE REGISTRUL ADCON&. CITIREA PINILOR CONFIGURATI CA INTRARI ANALOGICE DA CA REZULTAT 142. => DACA PINI SUNT MULTIPLE!ATI CU INTRARI DE COMPARATOR, LA UN POR, ACESTI PINI SUNT CONFIGURATI CA INTRARI ANALOGICE, CA SI CUM AR FI CONTROLATI DE REGISTRUL CMCON. CITIREA PINILOR CONFIGURATI CA INTRARI ANALOGICE DA CA REZULTAT 142. => CAND MAI MULTE FUNCTIUNI PERIFERICE SUNT MULTIPLE!ATE IN ACELASI PORT, FUNCTIONALITATEA PINULUI I/O RESPECTI TREBUIE SCHIMBATA ASTFEL INCAT SA FIE IN CONCORDANTA CU CERINTELE FUNCTIUNII RESPECTIE. => UN E!EMPLU ESTE CONERTORUL ANALOG DIGITAL "A/D# SAU MODULUL DRIER LCD. LA RESET, ACESTI PINI SUNT FORTATI CA PINI DE I/O DE UZ GENERAL SI TREBUIE PROGRAMATI CA PINI DE INTRARE ANALOGICA, CONTROLATI DE REGISTRUL ADCON&. 1#. -imer $. => TIMERELE SUNT CIRCUITE DE TEMPORIZARE SI/SAU NUMARARE INDEPENDENTE DE FUNCTIONAREA CPU. LA DEPASIREA ALORII MA!IME SETEAZA UN BIT DE DEPASIRE SI POT GENERA INTRERUPERI. POT E!ISTA MAI MULTE TIMERE INTR-UN MICROCONTROLER. => TIMER0 ARE URMATOARELE PROPRIETATI: TIMER / COUNTER DE , BITI; POATE FI CITIT SI SCRIS; PRESCALER "PREDIIZOR# DE , BITI PROGRAMABIL SOFT%ARE; SURSA PENTRU SEMNALUL CLOC/ POATE FI E!TERNA SAU INTERNA; POATE GENERA INTRERUPERI LA DEPASIREA ALORII MA!IME A REGISTRULUI TIMER DE LA FF5 LA 445; SE POATE SELECTA FRONTUL SEMNALULUI DE CLOC/ PENTRU SURSA E!TERNA. => REGISTRUL DE CONTROL ESTE OPTION@REG. J(C 6 RBPU "&#: %:DK PHFF-HA EIDJF: J(C & = %:DK AHFF-HA> D*: ;(>DJF:;; 4 = %:DK AHFF-HA> D*: :IDJF:; JB (I;(M(;HDF A+*C FDC)5 MDFH:>; J(C = INTEDG: IIC:**HAC E;E: S:F:)C J(C & = IIC:**HAC +I *(>(IE :;E: +G INT A(I; 4 = IIC:**HAC +I GDFF(IE :;E: +G INT A(I; J(C ? T4CS: TMR4 CF+)K S+H*): S:F:)C J(C & = T*DI>(C(+I +I T4C/I A(I; 4 = IIC:*IDF (I>C*H)C(+I )B)F: )F+)K "CL/OUT#; J(C 0 T4SE: TMR4 S+H*): E;E: S:F:)C J(C & = II)*:':IC +I 5(E5-C+-F+L C*DI>(C(+I +I T4C/I A(I; 4 = II)*:':IC +I F+L-C+-5(E5 C*DI>(C(+I +I T4C/I A(I; J(C . PSA: P*:>)DF:* A>>(EI':IC J(C & = P*:>)DF:* (> D>>(EI:; C+ C5: %DT; 4 = P*:>)DF:* (> D>>(EI:; C+ C5: T(':*4 '+;HF:. J(C -:4 PS-:PS4: P*:>)DF:* RDC: S:F:)C J(C> => TMR0 Interrupt Timing 2$. -imer 1. => TIMERELE SUNT CIRCUITE DE TEMPORIZARE SI/SAU NUMARARE INDEPENDENTE DE FUNCTIONAREA CPU. LA DEPASIREA ALORII MA!IME SETEAZA UN BIT DE DEPASIRE SI POT GENERA INTRERUPERI. POT E!ISTA MAI MULTE TIMERE INTR-UN MICROCONTROLER. => TIMER1 ARE URMATOARELE PROPRIETATI: TIMER / COUNTER DE &= BITI "TMR&H, TMR&L#; POATE FI CITIT SI SCRIS; PRESCALER "PREDIIZOR# DE 0 BITI PROGRAMABIL SOFT%ARE; SURSA PENTRU SEMNALUL CLOC/ POATE FI E!TERNA SAU INTERNA; POATE GENERA INTRERUPERI LA DEPASIREA ALORII MA!IME A REGISTRULUI TIMER DE LA FFFF5 LA 44445; TIMER& POATE OPERA IN TREI MODURI: TIMER SINCRON, NUMARATOR SINCRON SI NUMARATOR ASINCRON. => REGISTRUL DE CONTROL ESTE T&CON. J(C 6:= UI('AF:':IC:;: R:D; D> R4R J(C ?:0 T&C/PS&:T&C/PS4: T(':*& IIAHC CF+)K P*:>)DF: S:F:)C J(C> && = &:, P*:>)DF: MDFH:; &4 = &:0 P*:>)DF: MDFH:; 4& = &:- P*:>)DF: MDFH:; 44 = &:& P*:>)DF: MDFH:; J(C . T&OSCEN: T(':*& O>)(FFDC+* EIDJF: J(C & = O>)(FFDC+* (> :IDJF:;; 4 = O>)(FFDC+* (> >5HC +GG; J(C - T&S$NC: T(':*& ENC:*IDF CF+)K IIAHC SBI)5*+I(ODC(+I S:F:)C J(C %5:I TMR&CS = &: & = D+ I+C >BI)5*+I(O: :NC:*IDF )F+)K (IAHC; 4 = SBI)5*+I(O: :NC:*IDF )F+)K (IAHC; %5:I TMR&CS = 4: T5(> J(C (> (EI+*:;. T(':*& H>:> C5: (IC:*IDF )F+)K L5:I TMR&CS = 4. J(C & TMR&CS: T(':*& CF+)K S+H*): S:F:)C J(C & = ENC:*IDF )F+)K G*+' A(I T&OSO/T&C/I "+I C5: *(>(IE :;E:#; 4 = IIC:*IDF )F+)K "FOSC/0#; J(C 4 TMR&ON: T(':*& OI J(C & = EIDJF:> T(':*&; 4 = SC+A> T(':*&. =>REGISTRII ASOCIATI LUI TIMER&: =>TIMER1 - OPERARE IN MOD TIMER: MODUL TIMER ESTE SELECTAT PRIN STERGEREA TMR&CS "T&CON9&>#; INTRAREA DE CLOC/ A TIMER& ESTE FOSC/0; BITUL DE CONTROL AL SINCRONIZARII T&S$NC "T&CON9-># NU ARE EFECT DEOARECE SEMNALUL DE CLOC/ INTERN ESTE INTOTDEAUNA SINCRONIZAT. =>TIMER1 - OPERARE IN MOD NUMARATOR SINCRONIAT: MODUL NUMARATOR ESTE SELECTAT PRIN SETAREA TMR&CS "T&CON9&>#. IN ACEST MOD TIMERUL ESTE INCREMENTAT LA FIECARE FRONT CRESCATOR. DACA BITUL T&S$NC ESTE STERS, SEMNALUL CLOC/ E!TERN ESTE SINCRONIZAT CU SEMNALUL DE CLOC/ INTERN. SINCRONIZAREA ESTE REALIZATA DUPA PRESCALER "NUMARATOR ASINCRON#. IN ACEASTA CONFIGURATIE, IN MODUL SLEEP, TIMER& NU A FI INCREMENTAT. =>TIMER1 - OPERARE IN MOD NUMARATOR ASINCRON: MODUL NUMARATOR ESTE SELECTAT PRIN SETAREA TMR&CS "T&CON9&>#. IN ACEST MOD TIMERUL ESTE INCREMENTAT LA FIECARE FRONT CRESCATOR. DACA BITUL T&S$NC ESTE SETAT, SEMNALUL CLOC/ E!TERN NU ESTE SINCRONIZAT CU SEMNALUL DE CLOC/ INTERN. IN ACEASTA CONFIGURATIE, IN MODUL SLEEP, TIMER& A FI INCREMENTAT. TIMER& POATE FI IMPLEMENTAT CA UN CEAS DE TIMP REAL. TIMER& NU POATE FI UTILIZAT PENTRU OPERATII DE CAPTURA SAU COMPARARE. 21. -imer 2. => TIMERELE SUNT CIRCUITE DE TEMPORIZARE SI/SAU NUMARARE INDEPENDENTE DE FUNCTIONAREA CPU. LA DEPASIREA ALORII MA!IME SETEAZA UN BIT DE DEPASIRE SI POT GENERA INTRERUPERI. POT E!ISTA MAI MULTE TIMERE INTR-UN MICROCONTROLER. => TIMER! ARE URMATOARELE PROPRIETATI: TIMER DE , BITI; POATE FI CITIT SI SCRIS; PRESCALER SI POSTSCALER PROGRAMABILE SOFT%ARE; REGISTRU DE PERIOADA; UTILIZAT DE MODULUL CCP PENTRU GENERAREA P%M; UTILIZAT DE MODULUL UART PENTRU GENERAREA BAUD RATE. => REGISTRUL DE CONTROL ESTE T-CON. J(C 6 UI('AF:':IC:;: R:D; D> R4R J(C =:. TOUTPS.:TOUTPS4: T(':*- OHCAHC P+>C>)DF: S:F:)C J(C> 4444 = &:& P+>C>)DF:; 444& = &:- P+>C>)DF:; S &&&& = &:&= P+>C>)DF:; J(C - TMR-ON: T(':*- OI J(C & = T(':*- (> +I; 4 = T(':*- (> +GG; J(C &:4 T-C/PS&:T-C/PS4: T(':*- CF+)K P*:>)DF: S:F:)C J(C> 44 = P*:>)DF:* (> &; 4& = P*:>)DF:* (> 0; &N = P*:>)DF:* (> &=. =>REGISTRII ASOCIATI LUI TIMER-: => SURSA SEMNALULUI DE CLOC/ PENTRU TIMER-: O SINGURA SURSA FOSC/0 PRESCALER &:&, &:0 SAU &:&= => REGISTRUL TMR-: POATE FI CITIT SAU SCRIS; TMR- SE INCREMENTEAZA DE LA 445 PANA CAND ESTE EGAL CU PR- SI APOI SE RESETEAZA LA 445 LA URMATORUL SEMNAL DE INCREMENTARE; ESTE STERS LA SEMNALE DE RESET %DT, POR, MCLR, BOR SI LA SETAREA PR-. => REGISTRUL PR- - POATE FI CITIT SAU SCRIS. => IESIRE COMPARATOR TMR-: TIMER- POSTSCALER; INTRAREA DE CLOC/ A SSP. => STERGEREA TIMER- PRESCALER SI POSTSCALER: LA SCRIEREA IN REGISTRUL TMR-; LA SCRIEREA IN REGISTRUL T-CON; LA ORICE RESET A MICROCONTROLLERULUI; PR-. => OPERAREA IN MODUL SLEEP: TMR- NU SE INCREMENTEAZA; PRESCALERUL RETINE ULTIMA ALOARE, FIIND GATA DE OPERARE DUPA CE MICROCONTROLLERUL REINE DIN STAREA SLEEP. 22. Modul de captura. => MODULELE CCP "COMPARARE/CAPTURA/P%M# CONTIN UN REGISTRU DE &= BITI, CARE POATE OPERA CA REGISTRU DE &= BITI DE COMPARARE, CA REGISTRU DE &= BITI DE CAPTURA SAU CA REGISTRU DE &4 BITI MASTER/SLAE DE FACTOR DE UMPLERE PENTRU GENERARE P%M. => FIECARE MODUL CCP ARE . REGISTRII. INTR-UN MICROCONTROLER POT FI MAI MULTE MODULE CCP. => REGISTRUL DE CONTROL CCPNCON: B(C 6:= I:('AF:':ICDC, >: )(C:>) 142 B(C ?:0 GD)C+* ;: H'AF:*: P%M J(C4 >( J(C&, MSB (I *:E(>C*HF CCPRNL (I '+; )DACH*D >DH )+'AD*D*: IH >: HC(F(O:DOD B(C .:4 J(C( ;: >:F:)C(: D '+;HFH( CCPN 4444 = CCP +A*(C "*:>:C:DOD '+;HFHF CCP#; 4&44 = '+; )DACH*D, FD G(:)D*: G*+IC ;:>)*:>)DC+*; 4&4& = '+; )DACH*D, FD G(:)D*: G*+IC )*:>)DC+*; 4&&4 = '+; )DACH*D, FD G(:)D*: DF 0 G*+IC )*:>)DC+*; 4&&& = '+; )DACH*D, FD G(:)D*: DF &= G*+IC )*:>)DC+*; &444 = '+; )+'AD*D*:, (I(C(DF A(I CCP 142, FD :EDF(CDC: 1&2, J(C CCPIF; &44& = '+; )+'AD*D*:, (I(C(DF A(I CCP 1&2, FD :EDF(CDC: 142, J(C CCPIF; &4&4 = '+; )+'AD*D*:, >: E:I:*:DOD INT >+GC, A(I CCP I:DG:)CDC, J(C CCPIF 1&2; &4&& = '+; )+'AD*D*:, C*(EE:* FD :M:I(':IC >A:)(DF, J(C CCPIF 1&2; &&NN = '+; P%M. MODUL CAPTURA => IN MOD CAPTURA, LA UN EENIMENT, SE CAPTUREAZA ALOAREA TMR& IN CCPRNH:CCPRNL. => UN EENIMENT ESTE SELECTAT PRIN BITII DE CONTROL CCPNM.:CCPNM4 "CCPNCON9.:4>#. CAND SE REALIZEAZA O CAPTURA, SE SETEAZA BITUL DE CERERE DE INTRERUPERE CCPNIF. BITUL CCPNIF TREBUIE STERS PRIN SOFT%ARE. => DACA APARE O NOUA CAPTURA INAINTE CA SA SE CITEASCA REGISTRII CCPRN, ALOAREA ANTERIOARA ESTE PIERDUTA. => TIMER& TREBUIE SA FUNCTIONEZE IN MOD DE NUMARATOR SINCRONIZAT. O CAPTURA NU RESETEAZA TIMER&. => TIMER& A GENERA INTRERUPERI LA DEPASIREA ALORII MA!IME "FFFF#. 23. Modul comparator ./unctia de comparare digitala0. => MODULELE CCP "COMPARARE/CAPTURA/P%M# CONTIN UN REGISTRU DE &= BITI, CARE POATE OPERA CA REGISTRU DE &= BITI DE COMPARARE, CA REGISTRU DE &= BITI DE CAPTURA SAU CA REGISTRU DE &4 BITI MASTER/SLAE DE FACTOR DE UMPLERE PENTRU GENERARE P%M. => FIECARE MODUL CCP ARE . REGISTRII. INTR-UN MICROCONTROLER POT FI MAI MULTE MODULE CCP. => REGISTRUL DE CONTROL CCPNCON: B(C 6:= I:('AF:':ICDC, >: )(C:>) 142 B(C ?:0 GD)C+* ;: H'AF:*: P%M J(C4 >( J(C&, MSB (I *:E(>C*HF CCPRNL (I '+; )DACH*D >DH )+'AD*D*: IH >: HC(F(O:DOD B(C .:4 J(C( ;: >:F:)C(: D '+;HFH( CCPN 4444 = CCP +A*(C "*:>:C:DOD '+;HFHF CCP#; 4&44 = '+; )DACH*D, FD G(:)D*: G*+IC ;:>)*:>)DC+*; 4&4& = '+; )DACH*D, FD G(:)D*: G*+IC )*:>)DC+*; 4&&4 = '+; )DACH*D, FD G(:)D*: DF 0 G*+IC )*:>)DC+*; 4&&& = '+; )DACH*D, FD G(:)D*: DF &= G*+IC )*:>)DC+*; &444 = '+; )+'AD*D*:, (I(C(DF A(I CCP 142, FD :EDF(CDC: 1&2, J(C CCPIF; &44& = '+; )+'AD*D*:, (I(C(DF A(I CCP 1&2, FD :EDF(CDC: 142, J(C CCPIF; &4&4 = '+; )+'AD*D*:, >: E:I:*:DOD INT >+GC, A(I CCP I:DG:)CDC, J(C CCPIF 1&2; &4&& = '+; )+'AD*D*:, C*(EE:* FD :M:I(':IC >A:)(DF, J(C CCPIF 1&2; &&NN = '+; P%M. => IN MOD COMPARARE, ALOAREA DIN CCPRNH:CCPRNL RSTE COMPARATA CONSTANT CU ALOAREA DIN TMR&. => LA APARITIA UNEI EGALITATI, PINUL CCPN ESTE: PUS PE 1&2; PUS PE 142; RAMANE NESCHIMBAT. => ACTIUNEA ASUPRA PINULUI ESTE DETERMINATA DE ALOAREA BITILOR DE CONTROL CCPNM.:CCPNM4 "CCPNCON9.:4># => ESTE GENERATA O INTRERUPERE. TIMER& TREBUIE SA FUNCTIONEZE IN MOD DE NUMARATOR SINCRONIZAT. => O CAPTURA NU RESETEAZA TIMER&. TIMER& A GENERA INTRERUPERI LA DEPASIREA ALORII MA!IME "FFFF#. 24 ( 25. Modul P1M. Setarea perioadei ) Setarea /actorului de umplere. => MODULELE CCP "COMPARARE/CAPTURA/P%M# CONTIN UN REGISTRU DE &= BITI, CARE POATE OPERA CA REGISTRU DE &= BITI DE COMPARARE, CA REGISTRU DE &= BITI DE CAPTURA SAU CA REGISTRU DE &4 BITI MASTER/SLAE DE FACTOR DE UMPLERE PENTRU GENERARE P%M. => FIECARE MODUL CCP ARE . REGISTRII. INTR-UN MICROCONTROLER POT FI MAI MULTE MODULE CCP. => REGISTRUL DE CONTROL CCPNCON: B(C 6:= I:('AF:':ICDC, >: )(C:>) 142 B(C ?:0 GD)C+* ;: H'AF:*: P%M J(C4 >( J(C&, MSB (I *:E(>C*HF CCPRNL (I '+; )DACH*D >DH )+'AD*D*: IH >: HC(F(O:DOD B(C .:4 J(C( ;: >:F:)C(: D '+;HFH( CCPN 4444 = CCP +A*(C "*:>:C:DOD '+;HFHF CCP#; 4&44 = '+; )DACH*D, FD G(:)D*: G*+IC ;:>)*:>)DC+*; 4&4& = '+; )DACH*D, FD G(:)D*: G*+IC )*:>)DC+*; 4&&4 = '+; )DACH*D, FD G(:)D*: DF 0 G*+IC )*:>)DC+*; 4&&& = '+; )DACH*D, FD G(:)D*: DF &= G*+IC )*:>)DC+*; &444 = '+; )+'AD*D*:, (I(C(DF A(I CCP 142, FD :EDF(CDC: 1&2, J(C CCPIF; &44& = '+; )+'AD*D*:, (I(C(DF A(I CCP 1&2, FD :EDF(CDC: 142, J(C CCPIF; &4&4 = '+; )+'AD*D*:, >: E:I:*:DOD INT >+GC, A(I CCP I:DG:)CDC, J(C CCPIF 1&2; &4&& = '+; )+'AD*D*:, C*(EE:* FD :M:I(':IC >A:)(DF, J(C CCPIF 1&2; &&NN = '+; P%M. => IN MOD P%M, LA PINUL DE IESIRE CCPN, SE A GENERA UN SEMNAL P%M CU REZOLUTIA DE &4 BIT. => PENTRU A FI DISPONIBIL CA PIN DE IESIRE, ACESTA TREBUIE SA AIBA BITUL CORESPONDENT DIN REGISTRUL TRIS SETAT PE 142. => STERGEREA REGISTRULUI CCPNCON A FORTA LATCH-UL P%M DE IESIRE LA STAREA INITIALA 142. ACESTA NU ESTE LATCH-UL DE PORT. => TIMER-UL DE , BITI ESTE CONCATENAT CU - BITI AI CLOC/ INTERN SAU CU - BITI AI PRESCALERULUI PENTRU A CREA O BAZA DE TIMP DE &4 BITI. => O IESIRE P%M ARE O BAZA DE TIMP "PERIOADA T# SI UN TIMP IN CARE ESTE PE 1&2, "T&#. PERIOADA => PERIOADA P%M ESTE SPECIFICATA PRIN SCRIEREA REGISTRULUI PR-. => PERIOADA P%M = T"PR-#U&V303TOSC3"ALOAREA PRESCALER TMR-# TTIMPV. => FRECENTA P%M "FP%M# = &/TPERIOADA P%MV. => CAND TMR- = PR-, OR APAREA TREI EENIMENTE LA URMATORUL CICLU DE INCREMENTARE: TMR- ESTE STERS; PINUL CCPN ESTE PUS PE 1&2 "E!CEPTIE DACA FACTORUL DE UMPLERE P%M ESTE 4W, PINUL CCPN NU A FI SETAT#; FACTORUL DE UMPLERE P%M ESTE TRANSFERAT DIN CCPRNL IN CCPRNH. => POSTSCALER-UL TMR- NU ESTE UTILIZAT IN DETERMINAREA FRECENTEI P%M. POATE FI UTILIZAT PENTRU A AEA O RATA DE REIMPROSPATARE A SERO, ALTA DECAT IESIREA P%M. => CALCULUL PERIOADEI P%M PRESUPUNEM CA FRECENTA DORITA A P%M ESTE 6,.&-?KHO: F OSC = -4 MHO TMR- PRESCALE =& &/6,.&-? KHO= T"PR-# U &V 0 &/-4 MHO & &-., '> = T"PR-# U &V 0 ?4 I> & PR- = =. "ACTORUL DE UMPLERE => FACTORUL DE UMPLERE AL P%M ESTE SPECIFICAT PRIN SCRIEREA IN REGISTRUL CCPRNL SI IN BITII DCNB&:DCNB4 "CCPNCON9?:0>#. => REZOLUTIA MA!IMA ESTE DE &4 BITI. CCPRNL CONTINE , BITI MSB. => DCNB&:DCNB4 "CCPNCON9?:0># LSB => PENTRU CALCULUL FACTORULUI DE UMPLERE P%M: P%M ;) = "DCNB<:DCNB4#3TOSC3ALOAREA PRESCALER TMR- T>V => BITI DCNB<:DCNB4 POT FI SCRISI LA ORICE MOMENT DE TIMP, DAR ALOAREA NU ESTE TRECUTA IN CCPRNH DECAT DUPA CE APARE EGALITATEA INTRE PR- SI TMR-, ADICA LA SFARSITUL PERIOADEI CURENTE. => IN MOD P%M REGISTRUL CCPRNH ESTE UNUL DE TIP READONL$. => DUBLA BUFFERARE ESTE ESENTIALA PENTRU CA MODULUL P%M SA FUNCTIONEZE FARA GLITCH-URI. => CAND ALOAREA REGISTRULUI CCPRNH PLUS CEI DOI BITI ESTE EGALA CU ALOAREA TMR- CONCATENATA CU ALOAREA CELOR - BITI INTERNI X-CLOC/ SAU TMR- PRESCALER, PINUL CCPN ESTE PUS PE 142. ACESTA ESTE SFARSITUL CICLULUI. => ALOAREA MA!IMA A REZOLUTIEI P%M PENTRU O FRECENTA DATA ESTE: REZ = F+E- "FOSC / FP%M# TBITIV => DACA ALOAREA FACTORULUI DE UMPLERE P%M ESTE MAI MARE DECAT PERIOADA P%M, PINUL CCPN NU AJUNGE LA 142. ACEST LUCRU PERMITE UN FACTOR DE UMPLERE DE &44W. => GASIREA REZOLUTIEI MA!IME A FACTORULUI DE UMPLERE PRESUPUNEM CA AEM O FRECENTA P%M DE 6,.&-?KHO SI FRECENTA OSCILATOR ESTE DE -4MHO: &/6,.&-? KHO= -P%M RESOLUTION &/-4 MHO & &-., '> = -P%M RESOLUTION ?4 I> & -?= = -P%M RESOLUTION F+E"-?=# = "P%M R:>+FHC(+I# F+E"-# ,.4 = P%M R:>+FHC(+I 26. Comparatoare analogice. => MODULUL COMPARATOR CONTINE UNUL SAU MAI MULTE COMPARATOARE ANALOGICE. => INTRAREA SI IESIREA COMPARATOARELOR SUNT MULTIPLE!ATE CU PINI DE INTRARE/IESIRE. => CA INTRARE A COMPARATOARELOR, PE LANGA PINI DE INTRARE/IESIRE, POATE FI SI IESIREA SURSEI DE REFERINTA INTERNE. => CONTROLUL FUNCTIONARII COMPARATORULUI SE FACE CU REGISTRUL CMCON. =>REGISTRUL CMCON: J(C 6 C-OUT: C+'AD*DC+*- OHCAHC II;()DC+* J(C & = C- INU > C- IN 4 = C- INU 9 C- IN J(C = C&OUT: C+'AD*DC+*& OHCAHC II;()DC+* J(C & = C& INU > C& IN 4 = C& INU 9 C& IN J(C ?:0 N:('AF:':ICDC(: R:D; D> R4R J(C . CIS: C+'AD*DC+* IIAHC SL(C)5 J(C CM-:CM4: = 44&: CM-:CM4 = 4&4: & = C& IN )+II:)C> C+ AN. & = C& IN )+II:)C> C+ AN. 4 = C& IN )+II:)C> C+ AN4 C- IN )+II:)C> C+ AN- 4 = C& IN )+II:)C> C+ AN4 C- IN )+II:)C> C+ AN& J(C -:4 CM-:CM4: B(C( S:F:)C(: M+; C+'AD*DC+* => "UNCTIONAREA COMPARATORULUI: => SCHEMA MODULULUI COMPARATOR: => INTRERUPERILE GENERATE DE COMPARATOR TREBUIE DEZACTIATE IN TIMPUL CONFIGURARII DINAMICE A MODULULUI COMPARATOR. IN CAZ CONTRAR POATE APAREA O INTRERUPERE FALSA. => TIMPUL DE RASPUNS AL UNUI COMPARATOR ESTE TIMPUL MINIM TRECUT DE LA MOMENTUL SELECTARII UNEI NOI TENSIUNI DE REFERINTA SAU SURSA DE INTRARE PANA LA MOMENTUL LA CARE IESIREA COMPARATORULUI ARE O STARE STABILA. => IESIREA COMPARATORULUI SE CITESTE PRIN INTERMEDIUL REGISTRULUI CMCON. => IN FUNTIE DE CONFIGURATIE, IESIREA COMPARATORULUI POATE FI CONECTATA DIRECT LA PIN. IN ACEST MOD, IESIREA LA PIN ESTE ASINCRONA CU CLOC/-UL SISTEM. => REGISTRUL TRIS A FUNCTIONA UZUAL, ALIDAND SAU INALIDAND PINI I/O IN ACEST MOD. => LA CITIREA REGISTRULUI PORTN TOTI PINI CONFIGURATI CA INTRARE ANALOGICA OR FI CITITI CU ALOAREA 142. DACA ACESTI PINI SUNT CONFIGURATI CA INTRARE DIGITALA SI SE APLICA O TENSIUNE ANALOGICA, ALOAREA CITITA ESTE IN CONCORDANTA CU SPECIFICATIILE TRIGERULUI SCHMITT. => NIELE ANALOGICE APLICATE ORICARUI PIN DEFINIT CA INTRARE DIGITALA POATE CAUZA CA BUFFERUL DE INTRARE SA CONSUME MAI MULT CURENT DECAT ESTE IN SPECIFICATII. INTRERUPERI => FLAG-UL DE INTRERUPERE AL COMPARATORULUI ESTE SETAT ORICAND ALOAREA DE IESIRE A ACESTUIA SE SCHIMBA. PENTRUA A DETERMINA DACA S-A SCHIMBAT STAREA ACTUALA A COMPARATORULUI TREBUIE CA SA SE MEMOREZE STAREA BITILOR DE IESIRE. => FLAG-UL DE INTRERUPERE A COMPARATORULUI ESTE BITUL CMIF. ACEST FLAG ESTE SETAT LA APARITIA UNEI INTRERUPERI SI TREBUIE RESETAT SOFT%ARE. => PENTRU ALIDAREA INTRERUPERII TREBUIE SETATI ATAT BITII CMIE CAT SI PEIE. => UTILIZATORUL, IN RUTINA DE TRATARE A INTRERUPERII, POATE STERGE BITUL DE INTRERUPERE IN URMATOARELE MODURI: ORICE CITIRE SAU SCRIERE IN REGISTRUL CMNCON. ACEASTA A INCARCA IN REGISTRUL CMCOM NOUA ALOARE A BITILOR CMNCON; STERGEREA BITULUI CMIF. => O CONDITIE DE INTRERUPERE A CONTINUA SA SETEZE BITUL CMIF. CITIREA CMCON A TERMINA CONDITIA DE INTRERUPERE SI PERMITE BITULUI CMIF SA FIE STERS. => DACA APARE O SCHIMBARE A REGISTRULUI CMCON "COUT# CAND SE INCEPE O OPERATIE DE CITIRE, "INCEPUTUL CICLULUI X-# ATUNCI FLAG-UL DE INTRERUPERE POATE SA NU FIE SETAT. 26. +e/erinta de tensiune. => IN FUNCTIE DE CONFIGURATIA SETATA, LA INTRAREA COMPARATORULUI SE POATE APLICA O TENSIUNE DE REFERINTA INTERNA. => ALOAREA TENSIUNII DE REFERINTA POATE FI SETATA PRIN SCRIEREA IN REGISTRUL TENSIUNII DE REFERINTA RCON. => ECUATIILE CARE DETERMINA ALOAREA TENSIUNII DE IESIRE SUNT: RR = & "F+L *DIE:#: CREF = "R.:R4 / -0# N DD RR = 4 "5(E5 *DIE:#: CREF = "DD / 0# U "R.:R4 N DD / .-# CALCULUL R.:R4 IN FUNCTIE DE TENSIUNEA DE REFERINTA: => SCHEMA REFERINTEI DE TENSIUNE: => REGISTRUL DE CONTROL AL REFERINTEI DE TENSIUNE: J(C 6 REN: REF EIDJF: & = REF )(*)H(C A+L:*:; +I; 4 = REF )(*)H(C A+L:*:; ;+LI; J(C = ROE: REF OHCAHC EIDJF: & = REF (> (IC:*IDFFB )+II:)C:; C+ C+'AD*DC+* '+;HF:2> REF. T5(> M+FCDE: F:M:F (> DF>+ +HCAHC +I C5: REF A(I; 4 = REF (> I+C )+II:)C:; C+ C5: )+'AD*DC+* '+;HF:. T5(> M+FCDE: (> ;(>)+II:)C:; G*+' C5: REF A(I; J(C ? RR: REF RDIE: >:F:)C(+I & = 4 C+ 4.6? DD, L(C5 DD/-0 >C:A >(O:; 4 = 4.-? DD C+ 4.6? DD, L(C5 DD/.- >C:A >(O:; J(C 0 UI('AF:':IC:;: R:D; D> R4R J(C .:4 R.:R4: REF MDFH: >:F:)C(+I 4 Y R.:R4 Y &?