Sunteți pe pagina 1din 27

1. Ce este un C?

=>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 &?

S-ar putea să vă placă și