Comanda porturilor numerice Programarea unui display LCD Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate A.Sarca 2013 ACSI C3-2 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Operatii cu interfete de Intrare-Iesire Adresate ca porturi de I/E instructiuni speciale: IN, OUT Separate de memoria sistemului Mai usor de evidentiat operarea cu un element I/E fata de operarea cu memoria depanare mai usoara Nu pot fi adresate direct in limbaje de nivel inalt (C/C++), ci doar in limbaj de asamblare Adresate ca memorie (memory Mapped I/O) instructiuni de adresare a memoriei Ocupa o zona din spatiul de adrese al memoriei sistemului Se pot adresa direct ca elemente de memorie (ca variabile ale programului), utilizand orice mod de adresare posibil Depanararea trebuie facuta atent (posibilitate de eroare) A.Sarca 2013 ACSI C3-3 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Scriere catre porturile de I/E (OUTPUT) Cuvinte de comanda setare de parametri de functionare a interfetei (viteza de lucru, setare / resetare stare unii parametri, comanda ON/OFF a unor elemente de iesire digitale, etc.) Cuvinte de date trimitere de date catre interfata (de ex.: valori conversie D/A, setare / resetare biti port iesire digital, etc.) Citire de la porturile de I/E (INPUT) Cuvinte de stare citire informatii de functionare a interfetei (viteza de lucru, stare unii parametri, citirea starii ON/OFF a unor elemente de intrare digitale, etc.) Cuvinte de date citire de date de la interfata (de ex.: valori conversie A/D, stare biti port intrare digital, etc.) A.Sarca 2013 ACSI C3-4 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Fiecarui bit al cuvantului de date al portului ii corespunde un element exterior de tip inchis / deschis (0/1 sau ON/OFF) INPUT citeste starea unui element de tip contact - cu doua stari - contact / buton / tasta OUTPUT seteaza starea unui element de executie de tip binar releu, contactor, bec, LED, etc. Registru Port de Intrare / Iesire (tipic pt. microcontrolere) Bit n Bit n-1 Bit k Bit 1 Bit 0 Intrare 0 Iesire 1 Iesire k Intrare n-1 A.Sarca 2013 ACSI C3-5 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Registru Port de iesire Bit n Bit n-1 Bit k Bit 1 Bit 0 Iesire 0 Iesire 1 Iesire k Iesire n Registru Port de intrare Bit n Bit n-1 Bit k Bit 1 Bit 0 Iesire 0 Iesire 1 Iesire k Iesire n-1 Iesire n A.Sarca 2013 ACSI C3-6 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Determinarea starii unui echipament [INPUT]: - se izoleaza bitul corespunzator in cuvantul de date citit de la portul de intrare - pentru izolare se utilizeaza o masca: 1 pe pozitia bitului selectat, 0 in rest - se efectueaza operatia SI logic (AND) intre cuvantul de date citit si masca Stare echipament k Cuvant de date citit de la port de INPUT Masca pentru izolarea bitului k Bitul k izolat Bit n Bit n-1 Bit k Bit 1 Bit 0 0 0 1 0 0 0 0 Bit k 0 0 AND = DataIN Mask k Data k Testare: Data_k = DataIN & Mask_k; IF (Data_k) { // bitul k este = 1 } else { // bitul k este = 0 } A.Sarca 2013 ACSI C3-7 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Setarea starii unui echipament [OUTPUT]: - se seteaza bitul corespunzator din cuvantul de date scris catre port (bit = 1) - pentru modificare se utilizeaza o masca: 1 pe pozitia bitului selectat, 0 in rest - se efectueaza operatia SAU logic (OR) intre cuvantul de date anterior scris la portul respectiv (pentru a nu se modifica starea celorlale echipamente de pe port) si masca Bit n Bit n-1 Bit k Bit 1 Bit 0 0 0 1 0 0 Setare echipament k Cuvant de date anterior scris la port de OUTPUT Masca pentru setarea bitului k Bitul k setat, ceilalti nemodificati OR DataOUT t-1 Mask k DataOUT t Bit n Bit n-1 1 Bit 1 Bit 0 Setare bit k: Mask_k = 0000100000b; // 1 pe pozitia k DataOUT |= Mask_k; // Output la port DataOUT A.Sarca 2013 ACSI C3-8 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Bit n Bit n-1 Bit k Bit 1 Bit 0 1 1 0 1 1 Resetare echipament k Cuvant de date anterior scris la port de OUTPUT Masca pentru resetarea bitului k Bitul k resetat, ceilalti nemodificati AND DataOUT t-1 Mask k DataOUT t Bit n Bit n-1 0 Bit 1 Bit 0 Resetarea starii unui echipament [OUTPUT]: - se reseteaza bitul corespunzator din cuvantul de date scris catre port (bit = 0) - pentru modificare se utilizeaza o masca: 0 pe pozitia bitului selectat, 1 in rest - se efectueaza operatia SI logic (AND) intre cuvantul de date anterior scris la portul respectiv (pentru a nu se modifica starea celorlale echipamente de pe port) si masca Resetare bit k: Mask_k = 11111011111b; // 0 pe pozitia k DataOUT &= Mask_k; // Output la port DataOUT A.Sarca 2013 ACSI C3-9 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate MSP430xG4618 - 10 porturi digitale de 8 biti porturile P1 la P10 - Orice bit din orice port poate fi setat ca bit de intrare sau de iesire - Pentru porturile P1 si P2 se pot genera intreruperi la tranzitii semnale de intrare - Perechile de porturi P7/P8 si P9/P10 sunt adresabile si ca porturi pe 16 biti - Porturi independente de intrare si de iesire Registrul de intrare PxIN citirea datelor de la portul de intrare x Bit = 0: Intrare de valoare low Bit = 1: Intrare de valoare high Registrul de iesire PxOUT setare/resetare date la portul de iesire x Bit = 0: Iesire setata la valoarea low Bit = 1: Iesire setata la valoarea high A.Sarca 2013 ACSI C3-10 Arhitectura i configurarea sistemelor integrate Arhitectura i configurarea sistemelor integrate Registrul de directie PxDIR selectare tip bit iesire sau intrare la port x Bit = 0: Pinul corespunzator este definit ca pin de intrare Bit = 1: Pinul corespunzator este definit ca pin de iesire Registrul de selectare functie PxSEL selectare functie I/O generica sau functie periferic Bit = 0: se selecteaza functia de I/O Bit = 1: se selecteaza functia de periferic asociata Alte registre: P1IFG, P2IFG registre indicatori intreruperi P1 sau P2 P1IES, P2IES registre selectie tip tranzitie pentru intreruperi P1 sau P2 P1IE, P2IE registre activare intreruperi P1 sau P2 A.Sarca 2013 ACSI C3-11 MSP430FG4618 Experimenters board MSP430FG4618 Experimenters board A.Sarca 2013 ACSI C3-12 MSP430FG4618 Experimenters board MSP430FG4618 Experimenters board LED1 - Bit 2, port 2 - OUTPUT LED2 - Bit 1, port 2 - OUTPUT LED4 - Bit 1, port 5 - OUTPUT Buton SW1 - Bit 0, port 1 - INPUT Buton SW2 - Bit 1, port 1 - INPUT Se utilizeaza: P1SEL - Bit 0 si Bit1 ca I/O [0] P1DIR - Bit 0 si Bit1 ca Input [0] P1IN - Citire stare SW1 pe Bit0, si SW2 pe Bit1 P1OUT - - Se utilizeaza: P2SEL - Bit1 si Bit2 ca I/O [0] P2DIR - Bit1 si Bit2 ca Output [1] P2IN - - P2OUT - Bit1 pentru comanda LED2, Bit2 pentru comanda LED1 A.Sarca 2013 ACSI C3-13 MSP430FG4618 controlerul LCD MSP430FG4618 controlerul LCD Modul static Fiecare segment pin controleaza 1 segment LCD Se utilizeaza COM0 A.Sarca 2013 ACSI C3-14 MSP430FG4618 controlerul LCD MSP430FG4618 controlerul LCD Modul 4-mux Fiecare segment pin controleaza 4 segmente LCD Se utilizeaza COM0, COM1, COM2, COM3 A.Sarca 2013 ACSI C3-15 Afisaj model SoftBaugh SBLCDA4 - 4mux LCD MSP430FG4618 Experimenters board MSP430FG4618 Experimenters board A.Sarca 2013 ACSI C3-16 Afisaj LCD model SoftBaugh SBLCDA4 MSP430FG4618 Experimenters board MSP430FG4618 Experimenters board A.Sarca 2013 ACSI C3-17 Afisaj LCD model SoftBaugh SBLCDA4 alocarea segmentelor MSP430FG4618 Experimenters board MSP430FG4618 Experimenters board A.Sarca 2013 ACSI C3-18 Afisaj LCD model SoftBaugh SBLCDA4 conexiuni la MSP430 MSP430FG4618 Experimenters board MSP430FG4618 Experimenters board // MSP430xG461x // ------------------------- // /|\| | // | | P2.2 |-->LED1 // --|RST P2.1 |-->LED2 // | P5.1 |-->LED4 // | | //SW1-->|P1.0 | SoftBaugh SBLCDA4 4-mux LCD //SW2-->|P1.1 P10.5/S4 |-->S0-->PIN14 (1A_1B_1C_1D) // | P10.4/S5 |-->S1-->PIN13 (1F_1G_1E_DP1) // | P10.3/S6 |-->S2-->PIN12 (2A_2B_2C_2D) // | P10.2/S7 |-->S3-->PIN11 (2F_2G_2E_DP2) // | P10.1/S8 |-->S4-->PIN10 (3A_3B_3C_3D) // | P10.0/S9 |-->S5-->PIN9 (3F_3G_3E_COL3) // | P9.7/S10 |-->S6-->PIN8 (4A_4B_4C_4D) // | P9.6/S11 |-->S7-->PIN7 (4F_4G_4E_DP4) // | P9.5/S12 |-->S8-->PIN6 (5A_5B_5C_5D) // | P9.4/S13 |-->S9-->PIN5 (5F_5G_5E_COL5) // | P9.3/S14 |-->S10->PIN4 (6A_6B_6C_6D) // | P9.2/S15 |-->S11->PIN3 (6F_6G_6E_DP6) // | P9.1/S16 |-->S12->PIN2 (7A_7B_7C_7D) // | P9.0/S17 |-->S13->PIN1 (7F_7G_7E_DP7) // | P8.7/S18 |-->S14->PIN19 (F5_PR_P4_P3) // | P8.6/S19 |-->S15->PIN20 (F1_F2_F3_F4) // | P8.5/S20 |-->S16->PIN21 (PL_P0_P1_P2) // | P8.4/S21 |-->S17->PIN22 (AU_AR_AD_AL) // | P8.3/S22 |-->S18->PIN23 (BT_B1_B0_BB) // | P8.2/S23 |-->S19->PIN24 (ANT_A2_A1_A0) // | P8.1/S24 |-->S20->PIN25 (ENV_TX_RX_8BC) // | P8.0/S25 |-->S21->PIN26 (DOL_ERR_MINUS_MEM) // | COM3 |-->COM3 (COM3) // | COM2 |-->COM2 (COM2) // | COM1 |-->COM1 (COM1) // | COM0 |-->COM0 (COM0) // | | Memoria LCD (registri MSP430)