Aeronautica | Comunicatii | Constructii | Electronica | Navigatie | Pompieri | |
Tehnica mecanica |
1 Tema
Se considera o structura hardware constind din doua sisteme de dezvoltare echipate cu microcontrolere de tip 80C552. Acest tip de microcontroler integreaza in cip facilitatile hardware necesare pentru a comunica pe o magistrala seriala in standard I2C. Acest hardware are structura unui automat cu stari finite, exploatabil prin intermediul unor registre ale microcontrolerului. Modul de exploatare este descris pe larg in paragraful 2.
Sistemele de dezvoltare dispun de o tastatura numerica simpla, cu 12 taste si de un afisaj cu cristale lichide. In paragraful 3 se dau indicatii de programare.
Se cere sa se lege intre ele doua sisteme. Unul, notat A, care functioneaza ca master, si unul, notat B, care functioneaza ca sclav. Pentru fiecare dintre sisteme se va scrie un program in limbaj C, pentru urmatoarea aplicatie.
Atunci cind se apasa o tasta numerica a sistemul A, acesta va trimite codul ASCII al numarului catre sistemul B.
Sistemul B va afisa caracterul receptionat, va incrementa modulo 10 numarul corespunzator si va trimite in retur, catre sistemul A, codul ASCII al acestui numar.
Sistemul A va afisa numarul al carui cod a fost primit.
In cazul depistarii unei erori ambele sisteme vor afisa caracterul asterisc, iar sistemul B va trimite in retur acest caracter.
2 Interfata seriala I2C a microcontrolerului 80C552
2.1 Preliminarii
Interfata seriala I2C (notata SIO1) permite conectarea microcontrolerului 80C552 la o magistrala I2C care utilizeaza doar doua linii, SDA (linia de date) si SCL (linia de ceas), pentru transferul informatiei intre dispozitivele conectate la magistrala. Principalele caracteristici ale acesteia sint :
transfer bidirectional intre dispozitive master si slave
magistrala multimaster, fara un master central
arbitrare pentru tentativa de acces simultan la magistrala a mai multor dispozitive master
sincronizarea ceasului, care permite comunicarea dispozitivelor cu diferite rate de transfer
Conectarea interfetei interne la magistrala externa I2C se face prin doi pini de port (P1.6/SCL si P1.7/SDA). Acesti pini corespund unor linii bidirectionale, care pot functiona atit ca intrari, cit si ca iesiri. Unitatea centrala se interfateaza cu SIO1 prin intermediul a patru registre de tip SFR (Special Function Register)
S1CON - registru de control
S1STA - registru de stare
S1DAT - registru de date
S1ADR - registru pentru adresa slave.
In figura 1 este prezentata configuratia unei magistrale I2C, iar in figura 2 este prezentat un transfer de date pe magistrala.
In functie de bitul de directie R/W, sint posibile doua tipuri de transferuri de date :
Transfer de date de la un master transmitator la un slave receptor. Primul octet transmis de master este adresa sistemului slave. Urmeaza un numar de octeti de date, slave-ul returnind un bit de confirmare ("acknowledge bit" - ACK) dupa fiecare octet receptionat.
Transfer de date de la un slave transmitator la un master receptor. Primul octet (adresa slave) este transmis de master, dupa care slave-ul returneaza un bit de confirmare. Urmeaza un numar de octeti de date trimisi de slave catre master. Dupa fiecare octet receptionat, masterul trimite un bit de confirmare, cu exceptia ultimului octet, cind trimite un bit "not acknowledge" (NOT_ACK) pentru a comanda incheierea transferului.
Fig.1. Configuratia unei magistrale I2C
Fig. 1. Configuratia magistralei I2C
Fig 2. Transferul de date pe magistrala I2C
Masterul este intotdeauna cel care initiaza un transfer pe magistrala, indiferent de sensul transferului. El genereaza impulsurile de ceas, pe linia SCL, si conditiile de START (S), STOP (P) sau START repetat, pe linia SDA. O conditie de START repetat incheie un transfer, dar masterul nu cedeaza magistrala, ci o pastreaza si pentru urmatorul trasnsfer.
2.2 Moduri de lucru
Interfata SIO1 poate opera in patru moduri:
Modul master transmitator
Primul octet transmis de master
contine adresa de slave (pe 7 biti) si bitul de sens al transferului R/W=0 (se
transmite W). Notam acest octet SLA+
Modul master receptor
Primul octet transmis de master
contine adresa de slave (pe 7 biti) si bitul de sens al transferului R/W=1 (se
transmite R). Notam acest octet
Modul slave receptor
Primul octet receptionat este SLA+W. Daca adresa receptionata coincide cu cea proprie, slave-ul intra in legatura cu master-ul, receptioneaza octetii de date transmisi de acesta si returneaza un ACK dupa fiecare octet. START si STOP sint recunoscuti ca inceput si sfirsit de transfer.
Modul slave transmitator
Primul octet receptionat este
2.3 Registrele de lucru
Registrul de control S1CON
Structura registrului S1CON este urmatoarea.
CR2 |
ENS1 |
STA |
STO |
SI |
AA |
CR1 |
CR0 |
unde :
CR2, CR1, CR0 - stabilesc rata de transfer (se inscriu doar in modul master)
ENS1 - bitul de validare al interfetei SIO1
STA - bitul de START
STO - bitul de STOP
SI - fanionul de intrerupere
AA - fanionul de confirmare
ENS1 este bitul de validare SIO1.
Daca ENS1=0, iesirile SDA si SCL sint in starea de inalta impedanta, iar intrarile corespunzatoare sint ignorate. Pentru modul slave, SIO1 este in starea "neadresabil" si bitul STO (S1CON.4) este fortat la "0".
Daca ENS1=1, SIO1 este validata.
ENS1 nu trebuie folosit pentru a decupla temporar SIO1 de la magistrala, deoarece cind ENS1 este resetat, starea interfetei este pierduta ( in acest scop se poate utiliza bitul AA-S1CON.2 )
STA este bitul de START
Daca STA este setat pentru a intra in modul master, SIO1 testeaza starea magistralei I2C si genereaza o conditie de START cind magistrala este libera. Daca STA este setat cind SIO1 este deja in modul master, se transmite o conditie de START repetat.
Daca STA este resetat nu se va genera o conditie de START sau START repetat.
STO este bitul de STOP
Daca STO este setat cind SIO1 este in modul master, va fi transmisa pe magistrala I2C o conditie de STOP dupa care bitul STO va fi resetat prin hard.
Daca STO este resetat nu va fi generata o conditie de STOP.
SI este fanionul de intrerupere
Daca SI este setat si intreruperea SIO1 este validata, se genereaza o intrerupere atunci cind se schomba starea interfetei. Bitul SI este setat la intrarea in una din cele 25 de stari (din 26 posibile) ale interfetei. Singura stare in care nu se seteaza SI este F8H, stare care indica de fapt ca nu exista inca nici o informatie utila.
Fanionul SI trebuie resetat prin program.
Daca SI este resetat nu se genereaza intrerupere.
Intreruperea SIO1 se valideaza, respectiv invalideaza, in cadrul general al programarii sistemului de intreruperi al microcontrolerului. Daca intreruperea este invalidata, starea fanionului SI trebuie testata prin interogare software de catre aplicatie. Acesta este modul in care se va lucra la acest proiect. In acest mod de lucru, bitul SI este setat de catre hardware, atunci cind se schimba starea interfetei si va fi resetat prin software pentru a semnala ca se initiaza trecerea in alta stare.
AA este fanionul de confirmare
Daca fanionul AA este setat se va returna un bit ACK (nivel "low" pe linia SDA) atunci cind :
slave-ul receptioneaza propria adresa
slave-ul receptioneaza adresa generala ("general call") daca bitul GC=1 (S1ADR.0)
un octet de date a fost receptionat in timp ce SIO1 este in modul master receptor sau slave receptor.
Daca fanionul AA este resetat se va returna un bit NOT_ACK (nivel "high" pe linia SDA) atunci cind un octet de date a fost receptionat in timp ce SIO1 este in modul master receptor sau slave receptor.
CR0, CR1 si CR2 stabilesc frecventa semnalului SCL (rata de transfer pe linia seriala)
Cei trei biti au semnificatie doar in modul master, deoarece in modul slave SIO1 se sincronizeaza cu ceasul generat de master.
Tabelul urmator prezinta ratele de transfer pentru frecventele de oscilatie de 6MHz, 12MHz si 16MHz.
CR2 |
CR1 |
CR0 |
Frecventa biti ( kHz ) la Fosc |
||
6 MHz |
12 MHz |
16 MHz |
|||
0 0 0 0 1 1 1 |
0 0 1 1 0 0 1 |
0 1 0 1 0 1 0 |
23 27 31 37 6.25 50 100 |
47 54 63 75 12.5 100 - |
63 71 83 100 17 - - |
Registrul de stare S1STA
Este un registru SFR pe 8 biti, care poate fi doar citit. Cei mai semnificativi 5 biti contin codul binar al starii in care se afla SIO1, iar cei mai putin semnificativi 3 biti sint zero. Exista 26 de stari posibile ale circuitului (din care una, codificata F8H nu contine informatii relevante). La intrarea in oricare din celelalte 25 de stari, bitul SI este setat.
Registrul de adresa S1ADR
Este un registru SFR pe 8 biti care poate fi citit sau inscris. Continutul sau este fara importanta cind SIO1 este in modul master. In modul slave cei 7 biti mai semnificativi trebuie incarcati cu adresa proprie a microcontrolerului.
Daca bitul cel mai putin semnificativ, notat GC este setat, microcontrolerul va recunoaste pe linga adresa proprie si o adresa generala, codofocata cu 0.
Registrul de date S1DAT
Este un registru SFR pe 8 biti si contine octetul de date care va fi transmis sau care tocmai a fost receptionat pe linia seriala. Data ramine stabila in acest registru atit timp cit SIO1 este intr-o stare definita si bitul SI este setat.
2.4 Descrierea modurilor de lucru
Descrierea transferurilor de date in fiecare din modurile de lucru utilizeaza urmatoarele notatii :
S conditia de START
R bitul de sens pentru citire de la slave (nivel "high" pe linia SDA)
W bitul de sens pentru scriere la slave (nivel "low" pe linia SDA)
A bitul ACK (nivel "low" pe linia SDA)
A bitul NOT_ACK (nivel "high" pe linia SDA)
DATA octetul de date
P conditia de STOP
ADR_GEN adresa generala
SLV_N_ADR modul SLAVE neadresabil
2.4.1 Modul Master Transmitator
Diagrama de functionare in modul master transmitator este prezentata in figura 3, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 1.
In acest mod, un numar de octeti de date sint transmisi de la un master transmitator catre un slave receptor. Inainte de intrarea in acest mod, S1CON trebuie initializat astfel :
bitul ENS1=1 pentru validarea SIO1
bitii STA, STO, SI trebuie resetati
bitul AA poate fi setat sau resetat; daca AA = 0 SIO1 nu va recunoaste propria adresa sau adresa generala in cazul in care un alt dispozitiv devine master pe magistrala (de fapt SIO1 nu poate intra in acest caz in modul slave)
bitii CR0, CR1, CR2 sint pozitionati pentru rata de transfer dorita
Intrarea in modul master se poate face acum prin setarea STA. SIO1 va testa magistrala I2C si va genera un START (S) imediat ce aceasta devine libera. Cind START este generat, bitul SI este setat si se intra in starea 08H (vezi tabelul 1) in care trebuie incarcat registrul S1DAT cu adresa slave-ului si bitul de sens (SLA+W). Bitul SI trebuie resetat pentru ca transferul sa continue.
Cind SLA+W a fost transmis si bitul ACK a fost receptionat, bitul SI este setat din nou, prin hardware, si un numar de stari in S1STA sint posibile. Acestea sint 18H, 20H sau 38H pentru modul master si 68H, 78H sau B0H daca modul slave a fost validat (bitul AA = 1).
Dupa un START repetat (starea 10H), SIO1 poate comuta in
modul master receptor incarcind registrul S1DAT cu
2.4.2. Modul Master Receptor
Diagrama de functionare in modul master receptor este prezentata in figura 4, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 2.
In acest mod, un numar de octeti de date sint receptionati de un master receptor de la un slave transmitator.
Initializarea transferului se face la fel ca in modul master transmitator.
Cind START este generat, bitul SI este setat si se intra in starea 08H (vezi tabelul 2) in care trebuie incarcat registrul S1DAT cu adresa slave-ului si bitul de sens (SLA+R). Bitul SI trebuie resetat pentru ca transferul sa continue.
Cind SLA+R a fost transmis si bitul ACK a fost receptionat, bitul SI este setat din nou si un numar de stari in S1STA sint posibile. Acestea sint 40H, 48H sau 38H pentru modul master si 68H, 78H sau B0H daca modul slave a fost validat (bitul AA = 1).
Dupa un START repetat (starea 10H), SIO1 poate comuta in
modul master transmitator incarcind registrul S1DAT cu
2.4.3. Modul Slave Receptor
Diagrama de functionare in modul slave receptor este prezentata in figura 5, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 3.
In acest mod, un numar de octeti de date sint receptionati de la un master transmitator.
Initializarea transferului se face prin incarcarea S1ADR si S1CON astfel:
S1ADR se incarca pe cei 7 biti mai semnificativi cu adresa la care va raspunde cind va fi adresat de un master, iar daca bitul mai putin semnificativ GC este setat, slave-ul va raspunde si la adresa generala (00H - adresa de selectie pentru toate modulele slave). Daca GC = 0 adresa generala este ignorata.
S1CON trebuie initializat astfel :
bitul ENS1 =1 pentru validarea SIO1
bitii STA, STO, SI sint resetati
bitul AA trebuie setat pentru ca SIO1 sa recunoasca propria adresa sau adresa generala
bitii CR0, CR1, CR2 nu au importanta in modul slave
Dupa ce S1ADR si S1CON au fost
initializati, SIO1 ramine in asteptare pina cind este adresat prin octetul
Daca bitul AA este resetat in timpul unui transfer, SIO1 va returna un bit NOT_ACK dupa urmatorul octet de date; in continuare SIO1 nu isi va mai recunoaste propria adresa sau adresa generala. Totusi, magistrala este monitorizata si revenirea la recunoasterea adreselor poate fi facuta prin setarea bitului AA (bitul AA poate fi deci folosit pentru izolarea temporara de magistrala).
2.4.4. Modul Slave Transmitator
Diagrama de functionare in modul slave transmitator este prezentata in figura 6, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 4.
In acest mod, un numar de octeti de date sint transmisi catre un master receptor.
Initializarea transferului se face prin incarcarea S1ADR si S1CON la fel ca in cazul slave receptor.
Dupa ce S1ADR si S1CON au fost
initializati, SIO1 ramine in asteptare pina cind este adresat prin octetul
Daca bitul AA este resetat in timpul unui transfer, SIO1 va transmite un ultim octet de date dupa care va intra in una din starile C0H sau C8H. In continuare SIO1 nu isi va mai recunoaste propria adresa sau adresa generala ignorind masterul daca acesta continua transferul (masterul va receptiona in acest caz valoarea "1" pe linia seriala). Totusi, magistrala este monitorizata si revenirea la recunoasterea adreselor poate fi facuta prin setarea bitului AA.
2.5 Stari nedefinite
Exista doua coduri in registrul S1STA care nu corespund la stari fizice ale SIO1 :
S1STA = F8H - codul indica faptul ca nu exista informatii relevante deoarece bitul SI nu a fost inca setat; acest caz apare la trecerea intre celelalte stari sau cind SIO1 nu este implicat intr-un transfer.
S1STA = 00H - codul indica prezenta unei erori de magistrala intr-un transfer serial (de exemplu o conditie de START sau STOP intr-o pozitie ilegala, perturbatii externe etc). Cind apare o astfel de eroare bitul SI este setat. Pentru revenirea in functionare normala bitul STO trebuie setat si SI resetat, SIO1 intrind astfel in modul slave "neadresabil" (stare fizica definita).
3. Indicatii de programare
Intr-o aplicatie, lucrul cu interfata seriala I2C ( SIO1 ) se poate realiza, in principiu, in doua moduri :
prin interogare ("polling") cu intreruperea seriala SIO1 invalidata. In acest caz, se testeaza prin program bitul SI pentru a detecta momentul in care interfata ajunge intr-o stare definita (codul starii se citeste din registrul S1STA).
prin intreruperi. In acest caz programatorul trebuie sa scrie o subrutina de tratare a intreruperii la care se ajunge automat (prin mecanisme hardware) atunci cind bitul de intrerupere SI este setat.
In principiu, un program pentru interfata seriala I2C ar trebui sa cuprinda o functie de initializare a interfetei, cite o functie pentru implementarea fiecarui mod de lucru si o functie de intrerupere (daca se lucreaza cu intreruperi).
Functia de initializare trebuie sa realizeze programarea S1CON (validare, rata de transfer, etc).
Functia care implementeaza un mod de lucru trebuie sa realizeze un automat secvential cu un numar finit de stari. Ea va cuprinde o bucla de asteptare, in care se testeaza fanionul SI pina cind acesta este setat prin hardware, eveniment ce indica trecerea intr-o noua stare. In continuare, actiunea intreprinsa depinde de codul starii curente din S1STA.
Functia de tratare a intreruperii trebuie sa realizeze, in principiu, aceleasi actiuni prezentate anterior, adica implementarea modurilor de lucru, cu diferenta ca nu se mai face testarea bitului SI, deoarece aceasta functie este apelata automat atunci cind se schimba starea si SI este setat.
Sistemele pe care se va implementa aceasta aplicatie sint concepute in principal ca platformre de dezvoltare si testare a aplicatiilor. Aceasta inseamna ca dispun de resurse mai mari decit ale unui sistem dedicat (embedded) dar mai mici decit ale unui calculator PC.
De regula, astfel de aplicatii de dezvolta, la nivel software, pe un calculator PC pe care ruleaza un crosscompilator. Acesta genereaza cod obiect care va fi transportat, de obicei printr-o cale de comunicatie seriala (RS232), pe sistemul tinta.
Compilatorul C pentru microcontrolerul 80552 recunoaste numele registrelor SFR si ale bitilor din aceste registre. Ele sint asimilate unor variabile predefinite si pot aparea in expresii si in instructii de atribuire. De exemplu
x = S1STA; sau
while(~SI); sau
SI = 1;
sint instructii valide.
Pentru interfata cu dispozitivele de intrare-iesire presupunem ca sint disponibile doua functii de biblioteca care au urmatoarele prototipuri:
unsigned char citeste(void);
void scrie(unsigned char);
Prima functie citeste starea tastaturii si returneaza un cod ASCII, daca este apasata o tasta, respectiv valoarea 0, daca nu este apasata nici o tasta. Exista 12 taste care au insemnele 0,1,2,3,4,5,6,7,8,9,*,#, respectiv codurile ASCII 0x30, 0x31, 0x32 etc.
A doua functie afiseaza un caracter pe un dispozitiv de afisare cu cristale lichide.
COD STARE |
STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1 |
RASPUNS APLICATIE SOFT |
URMATOAREA ACTIUNE A INTERFETEI SIO1 |
||||
S1DAT |
S1CON |
||||||
STA |
STO |
SI |
AA |
||||
08H |
START a fost transmis |
Incarca |
X |
X |
SLA+ ACK va fi receptionat |
||
10H |
START REP. a fost transmis |
Incarca Incarca |
X X |
X X |
Identic anterior SLA+ SIO1 va comuta in modul MST/REC |
||
18H |
|
Incarca DATA Nu Nu Nu |
X X X X |
DATA va fi transmisa ACK va fi receptionat START REP. va fi transmis STOP va fi transmis Fanionul STO va fi sters STOP urmat de un START vor fi transmise Fanionul STO va fi sters |
|||
20H |
|
Incarca DATA Nu Nu Nu |
X X X X |
DATA va fi transmisa ACK va fi receptionat START REP. va fi transmis STOP va fi transmis Fanionul STO va fi sters STOP urmat de un START vor fi transmise Fanionul STO va fi sters |
|||
28H |
DATA din S1DAT a fost transmisa; ACK a fost receptionat |
Incarca DATA Nu Nu Nu |
X X X X |
DATA va fi transmisa ACK va fi receptionat START REP. va fi transmis STOP va fi transmis Fanionul STO va fi sters STOP urmat de un START vor fi transmise Fanionul STO va fi sters |
|||
30H |
DATA din S1DAT a fost transmisa; NOT_ACK a fost receptionat |
Incarca DATA Nu Nu Nu |
X X X X |
DATA va fi transmisa ACK va fi receptionat START REP. va fi transmis STOP va fi transmis Fanionul STO va fi sters STOP urmat de un START vor fi transmise Fanionul STO va fi sters |
|||
38H |
Arbitrare pierduta in |
Nu Nu |
X X |
Magistrala I2C va fi cedata SIO1 va intra in modul "slave" neadresabil START va fi transmis cind magistrala devine libera |
COD STARE |
STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1 |
RASPUNS APLICATIE SOFT |
URMATOAREA ACTIUNE A INTERFETEI SIO1 |
||||
S1DAT |
S1CON |
||||||
STA |
STO |
SI |
AA |
||||
08H |
START a fost transmis |
Incarca |
X |
X |
ACK va fi receptionat |
||
10H |
START REP. a fost transmis |
Incarca Incarca |
X X |
|
X X |
Identic anterior SLA+ SIO1 va comuta in modul MST/TRX |
|
38H |
Arbitrare pierduta in NOT_ACK |
Nu Nu |
X X |
Magistrala I2C va fi cedata SIO1 va intra in modul "slave" START va fi transmis cind magistrala devine libera |
|||
40H |
|
Nu Nu |
DATA a fost receptionata NOT_ACK va fi returnat DATA a fost receptionata ACK va fi returnat |
||||
48H |
|
Nu Nu Nu |
X X X |
START REP. va fi transmis STOP va fi transmis Fanionul STO va fi sters STOP urmat de un START vor fi transmise Fanionul STO va fi sters |
|||
50H |
DATA a fost receptionata; ACK a fost returnat |
Citeste DATA Citeste DATA |
DATA a fost receptionata NOT_ACK va fi returnat DATA a fost receptionata ACK va fi returnat |
||||
58H |
DATA a fost receptionata; NOT_ACK a fost returnat |
Citeste DATA Citeste DATA Citeste DATA |
X X X |
START REP. va fi transmis STOP va fi transmis Fanionul STO va fi sters STOP urmat de un START vor fi transmise Fanionul STO va fi sters |
Fig.5. Diagrama starilor in modul Slave Receptor
COD STARE |
STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1 |
RASPUNS APLICATIE SOFT |
URMATOAREA ACTIUNE A INTERFETEI SIO1 |
||||
S1DAT |
S1CON |
||||||
STA |
STO |
SI |
AA |
||||
60H |
|
Nu Nu |
X X |
DATA va fi receptionata si NOT_ACK va fi returnat DATA va fi receptionata si ACK va fi returnat |
|||
68H |
Arbitrare pierduta in
SLA+R/W ca master; |
Nu Nu |
X X |
DATA va fi receptionata si NOT_ACK va fi returnat DATA va fi receptionata si ACK va fi returnat |
|||
70H |
ADR_GEN a fost receptionata; ACK a fost returnat |
Nu Nu |
X X |
DATA va fi receptionata si NOT_ACK va fi returnat DATA va fi receptionata si ACK va fi returnat |
|||
78H |
Arbitrare pierduta in |
Nu Nu |
X X |
DATA va fi receptionata si NOT_ACK va fi returnat DATA va fi receptionata si ACK va fi returnat |
|||
80H |
Anterior adresat cu |
Citeste DATA Citeste DATA |
X X |
DATA va fi receptionata si NOT_ACK va fi returnat DATA va fi receptionata si ACK va fi returnat |
|||
88H |
Anterior adresat cu |
Citeste DATA Citeste DATA Citeste DATA Citeste DATA |
|
Comuta in modul SLV_N_ADR;
nu recunoaste Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1 Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie sau ADR_GEN START va fi generat cind magistrala devine libera Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1 START va fi generat cind magistrala devine libera |
|||
90H |
Anterior adresat cu ADR_GEN; DATA a fost receptionata; ACK a fost returnat |
Citeste DATA Citeste DATA |
X X |
DATA va fi receptionata si NOT_ACK va fi returnat DATA va fi receptionata si ACK va fi returnat |
|||
98H |
Anterior adresat cu ADR_GEN; DATA a fost receptionata; NOT_ACK a fost returnat |
Identic cu starea 88H |
Identic cu starea 88H |
||||
A0H |
STOP sau START REP. au fost receptionati |
Nu Nu Nu Nu |
Identic cu starea 88H |
COD STARE |
STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1 |
RASPUNS APLICATIE SOFT |
URMATOAREA ACTIUNE A INTERFETEI SIO1 |
||||
S1DAT |
S1CON |
||||||
STA |
STO |
SI |
AA |
||||
A8H |
SLA+R proprie a fost receptionata; ACK a fost returnat |
Citeste DATA Citeste DATA |
X X |
Ultima DATA va fi transmisa si ACK va fi receptionat DATA va fi transmisa si ACK va fi receptionat |
|||
B0H |
Arbitrare pierduta in SLA+R/W ca master; SLA+R proprie a fost receptionta; ACK returnat |
Citeste DATA Citeste DATA |
X X |
Ultima DATA va fi transmisa si ACK va fi receptionat DATA va fi transmisa si ACK va fi receptionat |
|||
B8H |
DATA in S1DAT a fost transmisa; ACK a fost receptionat |
Citeste DATA Citeste DATA |
X X |
Ultima DATA va fi transmisa si ACK va fi receptionat DATA va fi transmisa si ACK va fi receptionat |
|||
C0H |
DATA in S1DAT a fost transmisa; NOT_ACK a fost receptionat |
Nu Nu Nu Nu |
Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie sau ADR_GEN Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1 Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie sau ADR_GEN START va fi generat cind magistrala devine libera Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1 START va fi generat cind magistrala devine libera |
||||
C8H |
Ultima DATA in S1DAT a fost transmisa; ACK a fost receptionat |
Nu Nu Nu Nu |
Identic cu starea C0H |
Copyright © 2024 - Toate drepturile rezervate