micro control ere

24
INTRODUCERE CE ESTE UN MICROCONTROLLER? UN CALCULATOR, DEOARECE: TOATE CALCULATOARELE AU O UNITATE CENTRALA DE PROCESARE (CPU) TOATE CALCULATOARELE AU MEMORII PENTRU PROGRAM SI PENTRU LUCRU TOATE CALCULATOARELE COMUNICA CU EXTERIORUL PRIN PORTURI SPECIALIZATE I/O 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 UN CIP CU DENSITATE FOARTE MARE DE INTEGRARE, CARE INCLUDE TOATE COMPONENTELE NECESARE PENTRU O FUNCTIE DE CONTROLLER. UZUAL INCLUDE: CPU – UNITATEA CENTRALA DE PROCESARE RAM/ROM/EEPROM/FLASH – MEMORII INTERFETE I/O STANDARD SI CONFIGURABILE TIMERE SI CONTROLLER DE INTRERUPERI DE CE MICROCONTROLLERE? PENTRU CA AU REVOLUTIONAT MODUL DE REZOLVARE A PROBLEMELOR DE CONTROL A PROCESELOR. PENTRU CA INLOCUIESC DULAPURI INTREGI DE ECHIPAMENT CONVENTIONAL MECANIC, ELECTRIC, ELECTRONIC SAU ELECTROMECANIC PENTRU CA SUNT MULT MAI FIABILE IN EXPLOATARE PENTRU CA SUNT MULT MAI IEFTINE PENTRU CA O SCHIMBARE A FLUXULUI TEHNOLOGIC NU IMPLICA SCHIMBAREA INTREGULUI ECHIPAMENT, CI NUMAI A PROGRAMULUI DOMENII DE APLICATIE CONTROL INDUSTRIAL CONTROLUL CUPTOARELOR CONTROLUL ILUMINATULUI CONTROLUL MAGAZIILOR DE SCULE ALE MASINILOR UNELTE CONTROLUL ACCESULUI CONTROLUL ECHIPAMENTELOR CU COMPLEXITATE MICA SI MEDIE AUTOMOTIVE CONTROLUL MOTORULUI (ECU) CONTROLUL SASIULUI (BODY CONTROL) CONTROLUL ACTIONARII GEAMURILOR CONTROLUL DEZABURIRII CONTROLUL CLIMATIZARII CONTROLUL FRANELOR (ABS) CONTROLUL TRACTIUNII (ESP) CONTROLUL ACCESULUI ELECTROCASNICE CUPTOARE CU MICROUNDE FIGIDERE ARAGAZE ASPIRATOARE

Upload: bo-bogdan

Post on 09-Feb-2016

18 views

Category:

Documents


0 download

DESCRIPTION

beriliu

TRANSCRIPT

Page 1: Micro Control Ere

INTRODUCERECE ESTE UN MICROCONTROLLER?

UN CALCULATOR, DEOARECE:TOATE CALCULATOARELE AU O UNITATE CENTRALA DE PROCESARE (CPU)TOATE CALCULATOARELE AU MEMORII PENTRU PROGRAM SI PENTRU LUCRUTOATE CALCULATOARELE COMUNICA CU EXTERIORUL PRIN PORTURI SPECIALIZATE I/O

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

UN CIP CU DENSITATE FOARTE MARE DE INTEGRARE, CARE INCLUDE TOATE COMPONENTELE NECESARE PENTRU O FUNCTIE DE CONTROLLER.

UZUAL INCLUDE:CPU – UNITATEA CENTRALA DE PROCESARERAM/ROM/EEPROM/FLASH – MEMORIIINTERFETE I/O STANDARD SI CONFIGURABILETIMERE SI CONTROLLER DE INTRERUPERI

DE CE MICROCONTROLLERE?

PENTRU CA AU REVOLUTIONAT MODUL DE REZOLVARE A PROBLEMELOR DE CONTROL A PROCESELOR.

PENTRU CA INLOCUIESC DULAPURI INTREGI DE ECHIPAMENT CONVENTIONAL MECANIC, ELECTRIC, ELECTRONIC SAU ELECTROMECANICPENTRU CA SUNT MULT MAI FIABILE IN EXPLOATARE

PENTRU CA SUNT MULT MAI IEFTINE

PENTRU CA O SCHIMBARE A FLUXULUI TEHNOLOGIC NU IMPLICA SCHIMBAREA INTREGULUI ECHIPAMENT, CI NUMAI A PROGRAMULUI

DOMENII DE APLICATIECONTROL INDUSTRIAL

CONTROLUL CUPTOARELOR CONTROLUL ILUMINATULUI CONTROLUL MAGAZIILOR DE SCULE ALE MASINILOR UNELTE CONTROLUL ACCESULUI CONTROLUL ECHIPAMENTELOR CU COMPLEXITATE MICA SI MEDIE

AUTOMOTIVE CONTROLUL MOTORULUI (ECU) CONTROLUL SASIULUI (BODY CONTROL)

CONTROLUL ACTIONARII GEAMURILORCONTROLUL DEZABURIRIICONTROLUL CLIMATIZARIICONTROLUL FRANELOR (ABS)CONTROLUL TRACTIUNII (ESP)CONTROLUL ACCESULUI

ELECTROCASNICE CUPTOARE CU MICROUNDE FIGIDERE ARAGAZE ASPIRATOARE HOTE CENTRALE TERMICE TELEVIZOARE

COMUNICATII TELEFOANE CENTRALE TELEFONICE INTERNET WIRELESS

AUTOMATIZARI DIVERSE SEMAFORIZARE CONTROLUL ECHIPAMENTELOR DE TESTARE SI ANALIZA ALTE 1001,1 APLICATII

Page 2: Micro Control Ere

STRUCTURA UNUI MICROCONTROLLER

UNITATEA CENTRALA (CPU)CONTINE DISPOZITIVELE DE BAZA CARE SUNT CERUTE PENTRU FUNCTIONAREA UNUI

MICROCONTROLLER. ACEASTA INCLUDE: UNITATEA LOGICA SI ARITMETICA (ALU) MEMORIA OSCILATORUL RESET INTRERUPERI SET DE INSTRUCTIUNI

PERIFERICESUNT DISPOZITIVE CERE ADAUGATE, FAC DIFERENTA FATA DE UN MICROPROCESOR

PORTURI I/O DE UZ GENERAL TIMERE CAPTURA, COMPARARE SI MODULATIA IMPULSURILOR IN DURATA (CCPWM) INTERFETE SERIALE STANDARD INTERFETE PARALELE REFERINTE DE TENSIUNE COMPARATOARE CONVERTOARE ANALOG DIGITALE AFISAJ LCD

FUNCTII SPECIALEAJUTA LA CRESTEREA FLEXIBILITATII IN PROIECTARE, A REALIZARII UNUI SISTEM DE INCREDERE, CU

UN COST MULT REDUS CONFIGURARE POWER ON RESET (POR) BROWN OUT RESET (BOR) WATCHDOG TIMER SLEEP OSCILATORUL INTERN PROGRAMAREA IN CIRCUIT (ICSP)

ARHITECTURA

ARHITECTURA INFLUENTEAZA PERFORMANTELE GLOBALE VITEZA OPERATIONALA STRUCTURA MEMORIEI DISPONIBILE

SE UTILIZEAZA DOUA ARHITECTURI VON NEUMANN HARVARD

ARHITECTURA VON NEUMANN

INSTRUCTIUNILE SI DATELE SUNT ADUSE PE ACELASI BUS BANDA LIMITATA NUMAR MARE DE CICLI PROCESOR/ CICLU DE FETCH

ARHITECTURA HARVARD

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

Page 3: Micro Control Ere

ARHITECTURA TIPICA VON NEUMANN (PROCESOR PENTIUM)

ARHITECTURA TIPICA HARVARD (PROCESOR MICROCHIP)

Page 4: Micro Control Ere

UNITATEA CENTRALACPU

POATE ASIMILATA CU CREIERUL MICROCONTROLLERULUI. ESTE RESPOSABILA CU ADUCEREA INSTRUCTIUNII CORECTE PENTRU EXECUTIE, DECODAREA ACESTEI INSTRUCTIUNI SI APOI EXECUTIA ACESTEI INSTRUCTIUNI. CPU LUCREAZA IN CONJUNCTIE CU ALU PENTRU A COMPLETA EXECUTIA INSTRUCTIUNII (IN OPERATII ARITMETICE SI LOGICE)

CPUCPU CONTROLEAZA:

BUSUL ADRESELOR DE MEMORIE PROGRAM BUSUL ADRESELOR DE MEMORIE DE DATE ACCESUL LA STIVA

ALUALU ESTE O UNITATE ARITMETICA SI LOGICA DE UZ GENERALALU EFECTUEAZA FUNCTII ARITMETICE SI LOGICE INTRE DATE DIN REGISTRUL DE LUCRU SI ORICARE ALT REGISTRU MICROCONTROLERELE (MCU) PICmicro DE LA FIRMA MICROCHIP, CONTIN O UNITATE ALU DE 8 BITI SI UN REGISTRU DE LUCRU (W) DE 8 BITI

POATE EFECTUA URMATOARELE OPERATII: INSUMARE SCADERE DEPLASARE (SHIFT) OPERATII LOGICE

DACA NU SE MENTIONEAZA ALTFEL, OPERATIILE ARITMETICE SE FAC IN COMPLEMENT FATA DE DOIIN INSRUCTIUNI CU DOI OPERANZI, UZUAL UNUL DIN OPERANZI ESTE REGISTRUL DE LUCRU (W)CELALALT OPERAND ESTE UN REGISTRU DE UZ GENERAL SAU O CONSTANTAIN INSTRUCTIUNILE CU UN SINGUR OPERAND, OPERANDUL ESTE REGISTRUL DE LUCRU (W) SAU UN REGISTRU DE UZ GENERALREGISTRUL W ESTE UN REGISTRU DE LUCRU DE 8 BITI, NEADRESABILIN FUNCTIE DE INSTRUCTIUNILE EXECUTATE, ALU POATE AFECTA VALORILE BITILOR CARRY (C), DIGIT CARRY (DC) SI ZERO (Z) DIN REGISTRUL STATUS

MEMORIAESTE COMPUSA DIN DOUA BLOCURI :

MEMORIA DE PROGRAM MEMORIA DE DATE

FIECARE BLOC ARE PROPRIUL BUSACCESUL LA BLOCURILE DE MEMORIE POATE SA APARA IN ACELASI CICLU SISTEM

Page 5: Micro Control Ere

ORGANIZAREA MEMORIEI DE PROGRAMMCU DIN FAMILIA MICROCHIP MID-RANGE AU UN CONTOR DE PROGRAM DE 13 BITI => 213 = 8K SPATIU DE ADRESAREINSTRUCTIUNILE SUNT ORGANIZATE PE 14 BITI SI SUNT ‘SINGLE WORD’REZULTA UN SPATIU DE ADRESARE DE 8K * 14 BITISPATIUL DE MEMORIE DE PROGRAM ESTE DIVIZATA IN PATRU PAGINI DE CATE 2K FIECARE

0h - 7FFh 800h - FFFh 1000h - 17FFh1800h - 1FFFh

IN FIGURA DIN SLIDE-UL ANTERIOR SE POATE VEDEA SI STIVA HARDWARE CU 8 NIVELE DE ADANCIMEIN FUNCTIE DE TIPUL MCU SUNT IMPLEMENTATE NUMAI O PORTIUNE (PAGINA) DE MEMORIEPENTRU A SARI INTRE PAGINILE DE MEMORIE DE PROGRAM, TREBUIE MODIFICATI CEI MAI SEMNIFICATIVI BITI DIN CONTORUL DE PROGRAM (PC)ACEASTA SE FACE PRIN MODIFICAREA VALORII UNUI REGISTRU SPECIAL SFR NUMIT PROGRAM COUNTER LATCH HIGH (PCLATCH)DACA SE EXECUTA INSTRUCTIUNI CONSECUTIVE, CONTORUL DE PROGRAM VA TRECE DE GRANITELE PAGINII FARA INTERVENTIA UTILIZATORULUIPENTRU DISPOZITIVE CARE AU IMPLEMENTAT MAI PUTIN DE 8K DE MEMORIE DE PROGRAM, ACCESAREA UNEI LOCATII PESTE CEA FIZICA VA CAUZA ACCESAREA ADRESEI DIN PAGINA FIZICA, IGNORAND BITUL SAU BITII DIN PCLATCHVECTORUL DE RESET

UN RESET VA FORTA CONTORUL DE PROGRAM LA VALOAREA 0hVOM NUMI ACEASTA ADRESA “ADRESA VECTORULUI DE RESET”ORICE RESET VA STERGE CONTINUTUL REGISTRULUI PCLATCH

VECTORUL DE INTRERUPERE CAND O INTRERUPERE ESTE RECUNOSCUTA, PC ESTE FORTAT LA ADRESA 0004h. VOM DENUMI ACEASTA ADRESA :

“ADRESA VECTORULUI DE INTRERUPERE” NU SE MODIFICA REGISTRUL PCLATCH

TREBUIE AVUT GRIJA DACA ADRESA DE SALT DIN INTRERUPERE ESTE IN ALT BANK DE MEMORIEINAINTE DE A FI MODIFICAT DE ISR, CONTINUTUL PCLATCH TREBUIE SALVAT, ASTFEL INCAT DUPA REVENIREA DIN RUTINA DE INTRERUPERE, CONTINUTUL SAU SA POATA FI RESTAURAT

Page 6: Micro Control Ere

CONTORUL DE PROGRAM (PC)CONTORUL DE PROGRAM (PC) SPECIFICA ADRESA INSTRUCTIUNII CARE TREBUIE ADUSA PENTRU EXECUTIEARE DIMENSIUNEA DE 13 BITIESTE COMPUS DIN DOI BYTE, UNUL MAI SEMNIFICATIV (PCH), ALTUL MAI PUTIN SEMNIFICATIV (PCL)BYTE – UL CEL MAI PUTIN SEMNIFICATIV ESTE DENUMIT REGISTRUL PCLESTE UN REGISTRU CARE POATE FI ATAT CITIT CAT SI SCRISBYTE-UL CEL MAI SEMNIFICATIV ESTE DENUMIT REGISTRUL PCHPCH CONTINE BITII <12:8> DIN PC SI NU POATE FI DIRECT CITIT SI SCRIS, CI NUMAI PRIN INTERMEDIUL REGISTRULUI PCLATCHSITUATIA 1 ARATA CUM PC ESTE INCARCAT PRIN SCRIEREA PCL (PCLATH<4:0> ® PCH).

SITUATIA 2 ARATA CUM PC ESTE INCARCAT IN TIMPUL UNEI INSTRUCTIUNI GOTO (PCLATH<4:3> ® PCH).

SITUATIA 3 ARATA CUN PC ESTE INARCAT IN TIMPUL UNEI INSTRUCTIUNI CALL (PCLATH<4:3> ® PCH), CU PC INCARCAT (PUSHed) IN VARFUL STIVEI

SITUATIA 4 ARATA CUM ESTE INCARCAT PC IN TIMPUL UNEI INSTRUCTIUNI IN CARE PC ESTE INCARCAT (POPed) DIN VRFUL STIVEI

Page 7: Micro Control Ere

STIVASTIVA ESTE O MEMORIE DE TIP LIFO (LAST IN FIRST OUT)STIVA PERMITE APARITIA A UNOR COMBINATII DE PANA LA 8 APELURI DE SUBRUTINE SAU INTRERUPERISTIVA CONTINE ADRESA DE REINTOARCERE DIN RAMURA DE PROGRAM ACTIVA IN EXECUTIA PROGRAMULUIMICROCONTROLLERELE DIN GAMA DE MIJLOC AU O STIVA CU 8 NIVELE x 13 BITISPATIUL STIVEI NU SE POATE CITI SAU SCRIESPATIUL STIVEI NU FACE PARTE DIN SPATIUL DE MEMORIE PROGRAM SAU MEMORIE DE DATE CONTORUL DE PROGRAM ESTE ‘IMPINS’ (PUSHed) IN STIVA LA EXECUTIA UNEI INSTRUCTIUNI CALL SAU CAND O INTRERUPERE PROVOACA O RAMIFICARE A PROGRAMULUISTIVA ESTE GOLITA (POPed) IN CAZUL APARITIEI UNEIA DIN INSTRUCTIUNILE RETURN, RETLW SAU RETFIEPCLATCH NU ESTE MODIFICAT CAND SE EXECUTA OPERATII CU STIVANU EXISTA INDICATOARE DE DEPASIRE A NUMARULUI MAXIM DE PUSH-URI IN STIVA

ORGANIZAREA MEMORIEI DE DATEMEMORIA DE DATE ESTE FORMATA DIN ZONA REGISTRILOR CU FUNCTII SPECIALE (SFR) SI DIN ZONA REGISTRILOR PENTRU OPERATII GENERALE (GPR)SFR CONTROLEAZA OPERAREA DISPOZITIVULUIGPR – ZONA PENTRU MEMORARE DATE GENERALEMEMORIA 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 96 BITI DE MEMORIE RAMREGISTRII PENTRU FUNCTII SPECIALE (SFRs) UTILIZATI PENTRU CONTROLUL MODULELOR PERIFERICE SI A FUNCTIUNILOR CENTRALE.

PENTRU A PUTEA FACE SELECTIA BANCURILOR DE MEMORIE AVEM NEVOIE DE BITI DE CONTROLACESTIA SUNT LOCALIZATI IN REGISTRUL STATUS (STATUS<7:5>)ORGANIZAREA BANCURILOR DIFERA DE LA DISPOZITIV LA DISPOZITIV

Page 8: Micro Control Ere

PENTRU A MUTA CONTINUTUL UNUI REGISTRU IN ALTUL, VALOAREA TREBUIE SA TREACA PRIN REGISTRUL WREZULTA DOUA CICLURI MASINA PENTRU MUTARI REGISTRU-REGISTRUINTREAGA MEMORIE POATE FI ACCESATA DIRECT SAU INDIRECTADRESAREA DIRECTA POATE NECESITA UTILIZAREA BITILOR RP1:RP0ADRESAREA INDIRECTA NECESITA UTILIZAREA REGISTRULUI DE SELECTARE A BANCURILOR (FSR)

ADRESAREA INDIRECTA UTILIZEAZA BITUL REGISTRULUI POINTER INDIRECT (IRP) DIN REGISTRUL STATUS PENTRU ACCESAREA ZONELOR BANK0/BANK1 SAU BANK2/BANK3 ALE MEMORIEI DE DATE

ADRESAREA DIRECTA

Page 9: Micro Control Ere

EXEMPLU DE INSTRUCTIUNE

ADRESAREA INDIRECTAADRESAREA INDIRECTA ESTE UN MOD DE ADRESARE A MEMORIEI DE DATE, IN CARE ADRESA MEMORIEI DE DATE DIN INSTRUCTIUNE NU ESTE FIXATAESTE UTILIZAT UN REGISTRU SFR CA POINTER LA LOCATIA DIN MEMORIA DE DATE CARE TREBUIE CITITA SAU SCRISADEOARECE ACEST PIONTER ESTE IN RAM, CONTINUTUL SAU POATE FI MODIFICAT DE CATRE PROGRAM

Page 10: Micro Control Ere

EXEMPLU: UTILIZAREA ADRESARII INDIRECTE SIMPLE PENTRU A STERGE RAM (LOCATIILE 20h – 2Fh) INTR-

UN NUMAR MINIM DE INSTRUCTIUNIBCF STATUS, IRP ; Indirect addressing Bank0/1

MOVLW 0x20 ; Initialize pointer to RAMMOVWF FSR ;

NEXT CLRF INDF ; Clear INDF registerINCF FSR,F ; Inc pointerBTFSS FSR,4 ; All done?GOTO NEXT ; NO, clear next

CONTINUE ;: ; YES, continue

Page 11: Micro Control Ere

INTRERUPERI

MICROCUNTROLLERELE POT AVEA MULTE SURSE DE INTRERUPERIINCLUDE IN GENERAL O SURSA DE INTRERUPERE PENTRU FIECARE MODUL PERIFERICANUMITE MODULE POT GENERA INTRERUPERI MULTIPLE (EX. USART)INTRERUPERILE CURENTE POT SA APARA DE LA:

PINUL DE INTRERUPERE INT (INTRERUPERE EXTERNA)INTRERUPEREA LA DEPASIREA VALORII MAXIME A REGISTRULUI TMR0INTRERUPERE LA SCHIMBAREA STARII PINILOR RB7:RB4 AI PORTULUI BINTRERUPERE LA SCHIMBAREA STARII COMPARATORULUI

INTRERUPERILE CURENTE POT SA APARA DE LA:INTRERUPERE DE LA PORTUL PARALELINTRERUPERI DE LA PORTUL SERIAL USART:

INTRERUPERE DE RECEPTIEINTRERUPERE DE TRANSMISIEINTRERUPERE LA EROARE

INTRERUPERE LA TERMINAREA CICLULUI DE CONVERSIE ANALOG-NUMERICAINTRERUPERILE CURENTE POT SA APARA DE LA:

INTRERUPERE DE LA AFISAJ LCDINTRERUPERE LA TERMINAREA SCRIERII DATELOR IN MEMORIA EEPROMINTRERUPERE DE DEPASIRE TIMER1INTRERUPERE DE DEPASIRE TIMER2INTRERUPERE CCPINTRERUPERE SSP

EXISTA CEL PUTIN UN REGISTRU UTILIZAT IN CONTROLUL SI STAREA INTRERUPERILOR: INTCONDACA MCU ESTE PREVAZUT CU INTRERUPERI DE LA DISPOZITIVELE PERIFERICE, ACESTA ARE SI PERECHI DE REGISTRII PIR SI PIE

SCHEMA LOGICA PENTRU INTRERUPERI

Page 12: Micro Control Ere

REGISTRUL INTCON

BIT7 GIE :GLOBAL INTERRUPT ENABLE BIT 1 = VALIDEAZA TOATE INTRERUPERILE NEMASCATE 0 = INVALIDEAZA TOATE INTRERUPERILE

BIT6 PEIE : PERIPHERAL INTERRUPT ENABLE BIT 1 = VALIDEAZA TOATE INTRERUPERILE NEMASCATE DE LA PERIFERICE 0 = INVALIDEAZA TOATE INTRERUPERILE DE LA PERIFERICE

BIT5 TOIE : TMR0 OVERFLOW INTERRUPT ENABLE BIT 1 = VALIDEAZA INTRERUPEREA DE DEPASIRE TMR0 0 = INVALIDEAZA INTRERUPEREA DE DEPASIRE TMR0

BIT4 INTE :INT EXTERNAL INTERRUPT ENABLE BIT 1 = VALIDEAZA INTRERUPEREA PE PINUL EXTERN INT 0 = INVALIDEAZA INTRERUPEREA PE PINUL EXTERN INT

BIT3 RBIE :RB PORT CHANGE INTERRUPT ENABLE BIT 1 = VALIDEAZA INTRERUPEREA LA SCHIMBAREA VALORILOR IN REGISTRUL PORTULUI B 0 = INVALIDEAZA INTRERUPEREA LA SCHIMBAREA VALORILOR IN REGISTRUL PORTULUI B

BIT2 TOIF :TMR0 OVERFLOW INTERRUPT FLAG BIT 1 = VALOARE DEPASITA A REGISTRULUI TMR0 0 = VALOARE NEDEPASITA A REGISTRULUI TMR0

BIT1 INTF :INT EXTERNAL INTERRUPT FLAG BIT 1 = INTRERUPEREA EXTERNA A APARUT 0 = INTRERUPEREA EXTERNA NU A APARUT

BIT0 RBIF :RB PORT CHANGE INTERRUPT FLAG BIT 1 = CEL PUTIN UNUL DIN PINI RB7:RB4 SI-A SCHIMBAT STAREA 0 = NICI UNUL DIN PINI RB7:RB4 NU SI-A SCHIMBAT STAREA

BITUL GIE (INTCON<7>) ESTE STERS LA RESETINSTRUCTIUNEA RETFIE, (REINTOARCERE DIN INTRERUPERE), LA IESIREA DIN RUTINA DE INTRERUPERE SETEAZA BITUL GIE, CARE PERMITE EXECUTIA ORICAREI INTRERUPERI CARE POATE APAREA

LATENTA INTRERUPERIILATENTA INTRERUPERII ESTE DEFINITA CA TIMPUL SCURS DIN MOMENTUL APARITIEI EVENIMENTULUI CARE GENEREAZA INTRERUPEREA, PANA IN MOMENTUL IN CARE INSTRUCTIUNEA DE LA ADRESA 0004h ESTE EXECUTATA.PENTRU INTRERUPERI SINCRONE (TIPIC INTERNE) LATENTA ESTE DE 3TCYPENTRU INTRERUPERI ASINCRONE (TIPIC EXTERNE) CUM AR FI INT SAU SCHIMBAREA STARII PORTULUI B, LATENTA ESTE TIPIC 3 – 3.75 TCY

Page 13: Micro Control Ere

INTRERUPERI INT SI EXTERNE

INTRERUPEREA EXTERNA PE PINUL INT ESTE ACTIVATA PE FRONTDACA BITUL INTEDG (OPTION<6>) ESTE SETAT, TRIGERAREA SE FACE PE FRONTUL CRESCATORDACA BITUL INTEDG (OPTION<6>) ESTE STERS, TRIGERAREA SE FACE PE FRONTUL DESCRESCATORPOATE FI VALIDATA SAU INVALIDATA PRIN SETAREA SAU STERGEREA BITULUI INTE ENABLE (INTCON<4>)BITUL INTF TREBUIE STERS PRIN PROGRAM IN CADRUL RUTINEI DE TRATARE A INTRERUPERII, INAINTEA REVALIDARII ACESTEI INTRERUPERIINTRERUPEREA INT POATE TREZI PROCESORUL DIN STAREA SLEEP, DACA ANTERIOR INTRARII IN STAREA SLEEP BITUL INTE A FOST SETAT

SALVAREA CONTEXTULUI IN INTRERUPERI

IN INTRERUPERI, ESTE AUTOMAT SALVATA IN STIVA NUMAI VALOAREA CONTORULUI DE PROGRAM PC PENTRU SALVAREA SI A VALORILOR DIN ALTI REGISTRII, CUM AR FI REGISTRUL W SAU SATATUS, TREBUIE SCRIS UN PROGRAMACTIUNEA DE SALVARE 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-INGACTIUNILE PUSH SI POP NU AU MNEMONICI SPECIALE, ELE SUNT NUMAI ACTIUNI CONCEPTUALEACTIUNILE PUSH SI POP POT FI IMPLEMENTATE CA O SECVENTA DE PROGRAMUZUAL SE FOLOSESC MACRO-URI

EXEMPLU

PASI DE URMAT PENTRU REALIZAREA UNUI PROGRAM PUSH / POP1. MEMOREAZA CONTINUTUL REGISTRULUI W IN BANCUL DE MEMORIE CURENT2. MEMOREAZA REGISTRUL STATUS IN BANK03. EXECUTA CODUL RUTINEI DE INTRERUPERE (ISR)4. REFACE STAREA REGISTRULUI STATUS SI A BITILOR DE SELECTIE A BANCULUI DE MEMORIE5. REFACE STAREA REGISTRULUI W

EXEMPLU 1

MOVWF W_TEMP ; Copy W to a Temporary Register; regardless of current bank

SWAPF STATUS,W ; Swap STATUS nibbles and place; into W register

MOVWF STATUS_TEMP ; Save STATUS to a Temporary register; in Bank0

:: (Interrupt Service Routine (ISR) ):SWAPF STATUS_TEMP,W ; Swap original STATUS register value

; into W (restores original bank)MOVWF STATUS ; Restore STATUS register from

; W registerSWAPF W_TEMP,F ; Swap W_Temp nibbles and return

; value to W_TempSWAPF W_TEMP,W ; Swap W_Temp to W to restore original

; W value without affecting STATUS

Page 14: Micro Control Ere

EXEMPLU 2

MOVWF W_TEMP ; Copy W to a Temporary Register; regardless of current bank

SWAPF STATUS,W ; Swap STATUS nibbles and place; into W register

BCF STATUS,RP0 ; Change to Bank0 regardless of current bank

MOVWF STATUS_TEMP ; Save STATUS to a Temporary register in Bank0:: (Interrupt Service Routine (ISR) ):SWAPF STATUS_TEMP,W ; Swap original STATUS register value

; into W (restores original bank)MOVWF STATUS ; Restore STATUS register from W register

SWAPF W_TEMP,F ; Swap W_Temp nibbles and return; value to W_Temp

SWAPF W_TEMP,W ; Swap W_Temp to W to restore original; W value without affecting STATUS

PORTURI I/O

PINUL I/O DE UZ GENERAL POATE FI CONSIDERAT CA CEL MAI SIMPLU PERIFERICPINI I/O PERMIT MICROCONTROLLERULUI SA MONITORIZEZE SI SA CONTROLEZE ALTE DISPOZITIVEPENTRU FLEXIBILITATE SI FUNCTIONALITATE, PINI I/O POT AVEA MAI MULTE FUNCTIUNI ALTERNATIVETIPUL FUNCTIUNII ESTE DAT DE TIPUL DISPOZITIVULUI SI DE NECESITATILE I/ODIRECTIA IN SAU OUT A UNUI PIN ESTE CONTROLATA DE REGISTRUL DE DIRECTIE A DATELOR NOTAT TRISTRIS<x> CONTROLEAZA DIRECTIA PORTULUI x.UN ‘1’ PE BITUL CORESPUNZATOR UNUI PIN, IL DESEMNEAZA CA PIN DE INTRAREUN ‘0’ PE BITUL CORESPUNZATOR UNUI PIN, IL DESEMNEAZA CA PIN DE IESIREMEMORARE: ‘1’ INPUT ; ‘0’ OUTPUTREGISTRUL PORT ESTE UN LATCH PENTRU DATELE DE IESIRECAND REGISTRUL PORT ESTE CITIT, SE CITESTE STAREA PREZENTA A PINILOR I/O SI NU LATCH-UL!INSTRUCTIUNILE CARE SE REFERA LA PORTURI SUNT DE TIP CITESTE-MODIFICA-SCRIE

Page 15: Micro Control Ere

CAND MAI MULTE FUNCTIUNI PERIFERICE SUNT MULTIPLEXATE IN ACELASI PORT, FUNCTIONALITATEA PINULUI I/O RESPECTIV TREBUIE SCHIMBATA ASTFEL INCAT SA FIE IN CONCORDANTA CU CERINTELE FUNCTIUNII RESPECTIVEUN EXEMPLU ESTE CONVERTORUL ANALOG DIGITAL (A/D) SAU MODULUL DRIVER LCDLA RESET, ACESTI PINI SUNT FORTATI CA PINI DE I/O DE UZ GENERAL SI TREBUIE PROGRAMATI CA PINI DE INTRARE ANALOGICA, CONTROLATI DE REGISTRUL ADCON1CITIREA PINILOR CONFIGURATI CA INTRARI ANALOGICE VA DUCE LA REZULTATUL ‘0’

REGISTRUL TRISBITII DIN REGISTRUL TRIS SUNT SUPRASCRISI IN CAZUL ANUMITOR PERIFERICE, CAND ACESTEA SUNT VALIDATETREBUIE EVITATE INSTRUCTIUNI DE TIP CITESTE-MODIFICA-SCRIE (BSF, BCF, XORWF) CARE AU CA DESTINATIE REGISTRUL TRISREGISTRUL TRIS CONTROLEAZA DIRECTIA PINILOR PORTULUI, CHIAR CAND ACESTIA SUNT UTILIZATI CA INTRARI ANALOGICEUTILIZATORUL TERBUIE SA SE ASIGURE CA BITII TRIS SE MENTIN SETATI TOT TIMPUL CAND SE UTILIZEAZA ACESTI PINI CA INTRARI ANALOGICE

PORTURI I/O. NOTE1. DACA PINI SUNT MULTIPLEXATI CU INTRARI ANALOGICE, LA UN POR, ACESTI PINI SUNT CONFIGURATI

CA INTRARI ANALOGICE, CA SI CUM AR FI CONTROLATI DE REGISTRUL ADCON1. CITIREA PINILOR CONFIGURATI CA INTRARI ANALOGICE DA CA REZULTAT ‘0’

2. DACA PINI SUNT MULTIPLEXATI 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 ‘0’

3. DACA PINI SUNT MULTIPLEXATI CU DRIVERE LCD, LA UN POR, ACESTI PINI SUNT CONFIGURATI CA DRIVERE LCD, CA SI CUM AR FI CONTROLATI DE REGISTRUL LCDSE. PENTRU A CONFIGURA ACESTI PINI CA PORT DIGITAL, BITI CORESPONDENTI DIN REGISTRUL LCDSE TREBUIE STERSI. ORICE BIT SETAT IN REGISTRUL LCDSE SUPRASCRIE ORICE BIT CORESPONDENT SETAT IN REGISTRUL TRIS

4. PINI POT FI MULTIPLEXATI CU PORTUL PARALEL (PSP). PENTRU FUNCTIONAREA PORTULUI PSP, PINI I/O TREBUIE CONFIGURATI CA INTRARI DIGITALE SI TREBUIE SETAT BITUL PSPMODE

5. PORTUL PARALEL PSP ESTE MULTIPLEXAT NUMAI LA PORTURILA PORTD SI PORTE. PORTUL ESTE VALIDFAT NUMAI LA SETAREA BITULUI PSPMODE. IN ACEST MOD, USERUL TREBIUE SA SE ASIGURE CA BITI TRISE SUNT SETATI (PINI CONFIGURATI CA INTRARI DIGITALE) SI CA PORTE ESTE CONFIGURAT CA I/O DIGITAL. PORTD VA SUPRASCRIE VALORILE IN REGISTRUL TRISD. IN ACEST MOD BUFFERELE INTRARILOR CORESPUNZATOARE PORTD SI PORTE SUNT TTL. BITI DE CONTROL PENTRU OPERATII PSP SUNT SITUATI IN REGISTRUL TRISE

INITIALIZAREA PORTURILOREXEMPLU DE INITIALIZARE A PORTULUI B:

CLRF STATUS ; Bank0CLRF PORTB ; Initialize PORTB by clearing

; output data latchesBSF STATUS, RP0 ; Select Bank1MOVLW 0xCF ; Value used to initialize data

; directionMOVWF TRISB ; PORTB<3:0> = inputs,

; PORTB<5:4> = outputs; PORTB<7:6> = inputs

CONSIDERATII DE PROGRAMARE PENTRU PORTURI I/O BIDIRECTIONALE

ORICE INSTRUCTIUNE CARE EFECTUEAZA O OPERATIE DE SCRIERE, EFECTUEAZA DE FAPT O OPERATIE DE CITIRE URMATA DE O OPERATIE DE SCRIERE. INSTRUCTIUNILE BCF SI BSF, DE EXEMPLU, CITESC REGISTRUL IN CPU, EXECUTA OPERATIILE PE BIT SI SCRIU REZULTATUL INAPOI IN REGISTRUTREBUIE AVUT GRIJA CAND SE LUCREAZA CU ACESTE INSTRUCTIUNI DACA PORTUL ESTE SETAT PE UNII PINI CA INTRARE, IAR PE ALTII CA IESIREEXEMPLU: O OPERATIE TIP BSF A BITULUI5 APARTINAND PORTULUI B, VA CAUZA CITIREA TUTUROR CELOR 8 BITI PORTB IN CPU. APOI, INSTRUCTIUNEA BSF VA MODIFICA VALOAREA BITULUI 5 SI VALOAREA PORTB ESTE SCRISA IN LATCH-UL DE PORT. DACA UN ALT BIT AL PORTB ESTE UTILIZAT CA PIN BIDIRECTIONAL I/O SI ESTE DEFINIT CA INTRARE IN ACEST TIMP, SEMNALUL DE INTRARE PREZENT

Page 16: Micro Control Ere

LA PIN VA FI CITIT DE CPU SI RESCRIS IN LATCH-UL DE DATE A ACESTUI PIN. ATAT TIMP CAT PINUL STA IN STAREA DE INTRARE, NU APARE NICI O PROBLEMA. DAR DACA BITUL ESTE COMUTATA CA IESIRE, CONTINUTUL LATCH-ULUI DE DATE POATE FI NECUNOSCUT.

; Initial PORT settings: PORTB<7:4> Inputs; PORTB<3:0> Outputs; PORTB<7:6> have external pull-ups and are not connected to other circuitry;; PORT latch PORT pins; -------------- --------------BCF PORTB, 7 ; 01pp pppp 11pp ppppBCF PORTB, 6 ; 10pp pppp 11pp ppppBSF STATUS, RP0 ;BCF TRISB, 7 ; 10pp pppp 11pp ppppBCF TRISB, 6 ; 10pp pppp 10pp pppp;; Note that the user may have expected the pin values to be 00pp ppp.; The 2nd BCF caused RB7 to be latched as the pin value (high).

CONSIDERATII DE PROGRAMARE. OPERATII SUCCESIVE LA UN PORT I/O

SCRIEREA ACTUALA LA UN PORT I/O LA SFARSITUL CICLULUI DE INSTRUCTIUNE, LA FEL CA IN CAZUL CITIRII, DATELE TREBUIE SA FIE VALIDE LA INCEPUTUL CICLULUI DE INSTRUCTIUNETREBUIE AVUT GRIJA CAND APAR INSTRUCTIUNI DE SCRIERE URMATE DE OPERATIUNI DE CITIRE, PE ACELASI PORTSECVENTA DE PROGRAM TREBUIE SA PERMITA STABILIZAREA VALORII TENSIUNII LA PIN, INAINTE CA URMATOAREA INSTRUCTIUNE CARE CAUZEAZA CITIREA DE LA PORT SA FIE EXECUTATA, ALTFEL S-AR PUTEA CITI VECHEA STARE A PORTULUI IN LOC DE CEA CURENTA

EXEMPLU DE MODEL I/O CARE POATE CAUZA O ASTFEL DE SITUATIE:• DACA FRECVENTA I/O CRESTE, CRESTE PERICOLUL DESCRIS ANTERIOR• CEA MAI BUNA SOLUTIE ESTE INSERIEREA CU PINUL RESPECTIV A UNUI REZISTOR• O SOLUTIE MULT MAI IEFTINA ESTE INSERAREA IN PROGRAM AUNUI CICLU NOP

Page 17: Micro Control Ere

PORTURI I/OESTE RECOMANDAT CA LA INITIALIZAREA UNUI PORT I/O SA SE RESPECTE URMATOAREA SUCCESIUNE:

1. INITIALIZAREA REGISTRULUI PORTx2. INITIALIZAREA REGISTRULUI TRISx

RESPECTAREA SUCCESIUNII, ELIMINA POSIBILITATEA APARITIEI GLITCH-ULUI LA NIVELUL PINULUI, IN TIMP CE VALORILE DIN LATCH-UL DE DATE AL PORTULUI SUNT INTR-O STARE ALEATOARE

PORTURILE IN / OUT

INTRODUCEREPINII I/O DE UZ GENERAL POT FI CONSIDERATI CELE MAI SIMPLE ECHIPAMENTE PERIFERICEPENTRU A ADUGA FLEXIBILITATE SI FUNCTIONALITATE UNUI DISPOZITIV, UNII PINI SUNT PREVAZUTI CU MAI MULTE FUNCTIUNIACEST LUCRU SE REALIZEAZA PRIN MULTIPLEXARE, ALOCAREA FUNCTIUNILOR FACANDU-SE DINAMIC, PRIN PROGRAMPINII SUNT GRUPATI IN PORTURI DE MAXIM 8 BITIDENUMIREA GENERICA PENTRU ACESTE PORTURI ESTE PORTA, PORTB,… PANA LA NUMARUL MAXIM DE PORTURI IMPLEMENTATE PE MICROCONTROLLERUL UTILIZATPENTRU CELE MAI MULTE PORTURI, DIRECTIA PINILOR (INTRARE SAU IESIRE) ESTE CONTROLATA DE REGISTRUL DE DIRECTIE AL PORTULUI RESPECTIV, DENUMIT REGISTRUL TRISUN ‘1’ IN BITUL REGISTRULUI TRIS CORESPONDENT PINULUI, SETEAZA PINUL CA INTRAREUN ‘0’ IN BITUL REGISTRULUI TRIS CORESPONDENT PINULUI, SETEAZA PINUL CA IESIREREGISTRUL PORT ESTE LATCH PENTRU DATELE DE IESIRECAND ESTE CITIT REGISTRUL PORT, SE VA CITI NIVELELE LOGICE PREZENTE PE PINI DE I/O SI NU CONTINUTUL REGISTRULUI PORT!!!TREBUIE AVUT GRIJA CU COMENZI DE TIPUL CITESTE-MODIFICA-SCRIE, CAND ACESTEA SUNT ADRESATE PORTURILOR

PORT I/O TIPIC

TOATE OPERATIILE DE SCRIERE (CA DE EXEMPLU INSTRUCTIUNILE BCF SI BSF) SUNT OPERATII DE TIP CITIRE-MODIFICARE-SCRIEREO SCRIERE INTR-UN PORT IMPLICA FAPTUL CA ACEL PORT ESTE CITIT, SE MODIFICA VALOAREA SI ESTE SCRISA IN LATCHUL DE DATEDACA PE UN PIN ESTE MULTIPLEXATA O FUNCTIE PERIFERICA CU UN PIN GENERAL DE I/O, FUNCTIONALITATEA RESPECTIVULUI PIN SE SCHIMBA ASTFEL INCAT SA SE POTRIVEASCA CERINTELOR MODULULUI PERIFERIC

Page 18: Micro Control Ere

IN ANUMITE CAZURI, BITI DIN REGISTRUL TRIS SUNT SUPRASCRISI CAND ESTE VALIDAT PERIFERICULTREBUIE EVITATE INSTRUCTIUNI DE CITIRE-MODIFICARE-SCRIERE CARE AU CA DESTINATIE REGISTRUL TRISSCRIEREA CORECTA A REGISTRULUI TRIS SE VA FACE CONFORM SETARILOR PENTRU PERIFERICELE UTILIZATEPINII UNUI PORT POT FI MULTIPLEXATI CU INTRARI ANALOGICE SI INTRARI ANALOGICE VREF.OPERATIA PRIN CARE FIECARE DIN ACESTI ESTE SELECTAT CA FIIND INTRARE ANALOGICA SAU PIN I/O DIGITAL ESTE SETAREA/STERGEREA BITILOR DE CONTROL DIN REGISTRUL ADCON1 (A/D CONTROL REGISTER)CAND SUNT SELECTATI CA INTRARI ANALOGICE, ACESTI PINI SUNT CITITI CA ‘0’REGISTRUL TRIS CONTROLEAZA DIRECTIA PINILOR PORTULUI CHIAR SI CAND SUNT UTILIZATI CA INTRARI ANALOGICEUTILIZATORUL TREBUIE SA SE ASIGURE CA BITI DIN RGISTRUL TRIS RAMAN SETATI CAND UTILIZAM ACESTI PINI CA PINI DE INTRARE ANALOGICANOTA1

DACA PINI SUNT MULTIPLEXATI CU INTRARI ANALOGICE, LA UN POWER-ON RESET, ACESTIA SUNT CONFIGURATI CA INTRARI ANALOGICE, CA SI CUM AR FI CONTROLATI DE REGISTRUL ADCON1

CITIREA PINILOR UNUI PORT CONFIGURAT CA INTRARE ANALOGICA INTOARCE VALOAREA ‘0’NOTA2

DACA PINI SUNT MULTIPLEXATI CU INTRARI DE COMPARATOR, LA UN POWER-ON RESET, ACESTIA SUNT CONFIGURATI CA INTRARI ANALOGICE, CA SI CUM AR FI CONTROLATI DE REGISTRUL CMCON

CITIREA PINILOR UNUI PORT CONFIGURAT CA INTRARE ANALOGICA INTOARCE VALOAREA ‘0’NOTA3

DACA PINI SUNT MULTIPLEXATI CU IESIRI PENTRU AFISAJ LCD, LA UN POWER-ON RESET, ACESTIA SUNT CONFIGURATI CA IESIRI PENTRU AFISAJ LCD, CA SI CUM AR FI CONTROLATI DE REGISTRUL LCDSE

PENTRU A CONFIGURA ACESTI PINI CA PORT DIGITAL, BITI CORESPONDENTI DIN REGISTRUL LCDSE TREBUIE STERSI

ORICE BIT SETAT IN REGISTRUL LCDSE SUPRASCRIE BITII SETATI IN REGISTRUL CORESPONDENT TRIS

NOTA4 PINII POT FI MULTIPLEXATI CU PORTUL PARALEL (PSP) PENTRU CA PSP SA FUNCTIONEZE, PINII I/O TREBUIE CONFIGURATI CA INTRARI DIGITALE IAR

BITUL PSPMODE TREBUIE SETAT

PORTUL AESTE UN PORT BIDIRECTIONAL STANDARD DE 8 BITI, CU REGISTRUL DE DATE PORTAPORT I/O STANDARD CU EXCEPTIA RA4REGISTRUL DE DIRECTIE A DATELOR ESTE TRISA

SCHEMA INTERNA PENTRU RA7-RA0 EXCEPTIE RA4

Page 19: Micro Control Ere

EXCEPTIA RA4

INITIALIZAREA PORTULUI ACLRF STATUS ; Bank0CLRF PORTA ; Initialize PORTA by clearing output data latchesBSF STATUS, RP0 ; Select Bank1MOVLW 0xCF ; Value used to initialize data directionMOVWF TRISA ; PORTA<3:0> = inputs PORTA<5:4> = outputs

; TRISA<7:6> always read as '0'

PORTUL BESTE UN PORT BIDIRECTIONAL DE 8 BITI, CU REGISTRUL DE DATE PORTBREGISTRUL DE DIRECTIE A DATELOR ESTE TRISBFIECARE PIN ARE UN PULL-UP SLAB CONTROLAT DE UN SINGUR BIT, NUMIT RBPU SI SITUAT IN REGISTRUL (OPTION<7>)

ESTE DEZACTIVAT CAND PORTUL ESTE CONFIGURAT CA IESIRE ESTE DEZACTIVAT LA POWER-ON RESET

SCHEMA INTERNA PENTRU RB3-RB0

Page 20: Micro Control Ere

PATRU PINI AI PORTULUI B, RB7:RB4 AU FACILITATEA DE A GENERA INTRERUPERE LA SCHIMBAREA STARII ESTE DISPONIBILA DOAR LA SETAREA PINILOR PORTULUI CA INTRARISE GENEREAZA O INTRERUPERE PENTRU PORTUL B CU BITUL FLAG RBIF (INTCON<0>)INTRERUPEREA POATE TREZI DIN STAREA DE SLEEP CONTROLLERUL

SCHEMA INTERNA PENTRU RB7-RB4

PORTURI I/OESTE RECOMANDAT CA LA INITIALIZAREA UNUI PORT I/O SA SE RESPECTE URMATOAREA SUCCESIUNE:

1. INITIALIZAREA REGISTRULUI PORTx2. INITIALIZAREA REGISTRULUI TRISx

RESPECTAREA SUCCESIUNII, ELIMINA POSIBILITATEA APARITIEI GLITCH-ULUI LA NIVELUL PINULUI, IN TIMP CE VALORILE DIN LATCH-UL DE DATE AL PORTULUI SUNT INTR-O STARE ALEATOARE