Jump to content
ELFORUM - Forumul electronistilor
bodo_b

problema F877 I2C si 24C02

Recommended Posts

Va salut !Am si eu o problema. Am realizat schema (atasata) in ISIS, pentru simulare si am scris si un programel dar nu am avut succes. Initial scrisesem programelul ca atunci cand apas pe un buton PIC-ul sa scrie in memoria 24C02 ceva ( byte-ul 10101010 ca test) si apoi cand apas pe alt buton sa imi citeasca de la adresa la care am scris byte-ul respectiv si sa imi afiseze la portul B sa vad ca functioneaza. Ei bine ... nu s-a intamplat nimic asa ca am folosit direct exemplul din manualul de la mikroC. Acelasi rezultat: nimic :cry: . Unde am gresit ?programelul:void main(){ PORTB = 0; TRISB = 0; I2C1_Init(100000); I2C1_Start(); I2C1_Wr(0xA0); I2C1_Wr(1); I2C1_Wr(255); I2C1_Stop; Delay_ms(100); I2C1_Start(); I2C1_Wr(0xA0); I2C1_Wr(1); I2C1_Repeated_Start(); I2C1_Wr(0xA1); PORTB = I2C1_Rd(0); I2C1_Stop; Delay_ms(5000); }Delay-ul de la sfarsit l-am folosit pentru a putea vizualiza rezultatul d'255' pe portul B. (am modificat fata de cum facusem initial b'10101010').Adresa memoriei este: 1010 XXX Y unde bitii XXX nu conteaza ce sunt -> i-am pus 0, iar Y este 0 sau 1 in functie de ce vreau sa fac sa scriu sau sa citesc.

Link to comment
Share on other sites

Pic-ul este configurat corect in simulator ? Ma refer la frecventa oscilatorului si la cuvantul de configurare. Nu programez in C, dar codul postat este destul de simplu, nu prea are ce sa fie gresit, mai ales ca se folosesc rutine predefinite. Isis are un debugger I2C interesant, incearca sa monitorizezi cu acesta bus-ul in cauza.

Link to comment
Share on other sites

Ai setat corect frecventa microcontrolerului in simulare? Acesta nu depinde de quartz-ul ce l-ai pus (poate simula si fara), trebuie sa ii spui in proprietati ce frecventa de clock are.Poti vedea codul ce l-ai scris in mod debug?Il poti rula linie cu linie?Daca raspunsul la cele 2 intrebari de mai sus este DA, atunci daca pui pe pauza simularea dupa ce a executat rutina de scriere in memorie si dai click dreapta pe memorie ai o optiune ca sa vezi ce contine memoria.

I2C1_Init(100000);I2C1_Start(); = semnal de start pe busI2C1_Wr(0xA0); = adresa memorieiI2C1_Wr(1); = adresa unde sa scrieI2C1_Wr(255); = variabila pe care sa o scrieI2C1_Stop; = semnal de stop pe bus

Spune-mi te rog daca ce am scris eu dupa semnul "=" este adevarat.
Link to comment
Share on other sites

Ai setat corect frecventa microcontrolerului in simulare? Acesta nu depinde de quartz-ul ce l-ai pus (poate simula si fara), trebuie sa ii spui in proprietati ce frecventa de clock are.Poti vedea codul ce l-ai scris in mod debug?Il poti rula linie cu linie?Daca raspunsul la cele 2 intrebari de mai sus este DA, atunci daca pui pe pauza simularea dupa ce a executat rutina de scriere in memorie si dai click dreapta pe memorie ai o optiune ca sa vezi ce contine memoria.

I2C1_Init(100000);I2C1_Start(); = semnal de start pe busI2C1_Wr(0xA0); = adresa memorieiI2C1_Wr(1); = adresa unde sa scrieI2C1_Wr(255); = variabila pe care sa o scrieI2C1_Stop; = semnal de stop pe bus

Spune-mi te rog daca ce am scris eu dupa semnul "=" este adevarat.
Da, este corect.L.E: Nu stiu sa folosesc debugger-ul; Raspunsul la primele 2 intrebari este DA.
Link to comment
Share on other sites

Eu folosesc mikroBasic, dar banuiesc ca si microC are aceleasi facilitati. In meniul Tools-> Options(F12) la sectiunea Output Settings bifezi "Generate COFF file". In Isis in modelul uC-ului incarci in loc de .hex fisierul .cof generat de compliator. In felul acesta poti simula la nivel de cod sursa folosind comenzile din meniul Debug.

Link to comment
Share on other sites

Uite optiunile din MikroC. Dupa parerea mea codul este ok in ceea ce priveste secventa operatiunilor. Schema mi se pare ok. O sa mai fac o incercare dar de data asta o sa folosesc F887. Ma gandesc ca o fi ceva in neregula cu F877 din Isis la fel cum mai avea probleme cu un display grafic. Nu a mai incercat nimeni sa faca o simulare de genul ?L.E: Am incercat si cu F887 la fel, am incercat si cu PIC18F452 ca in exemplul din manualul de la MikroC la fel, nici un rezultat. Nu imi pica fisa.

Link to comment
Share on other sites

... nu stiu ce sa ii fac. Nu are nimeni un exemplu de cod care sa functioneze sau sa mai fi lucrat cu asa ceva ? L-am sucit in fel si chip si tot nu merge. Am oprit si pinii de intrari analogice, comparatoare ... nimic. Am setat si PORTC ca iesire ... nimic. Am folosit exact picul din exemplul manualului MikroC si codul de acolo si tot nu merge :bataie . De doua zile tot caut pe net si ce gasesc este aproape identic cu ce am scris eu acolo (culmea, lor le merge). Ma gandesc sa realizez practic, pe o placa de test, schema ... o fi un bug ceva la simularea soft ... nici nu mai stiu ce sa cred.

Link to comment
Share on other sites

Schema si .hex-ul le am la munca. Dar ma pun acum si le fac din nou. La cat m-am invartit pe langa el stiu fiecare setare pe dinafara :sparge: . Si inca ceva. Am incercat si software I2C, dupa cum am spus ca o sa ma apuc si la fel nu se intampla nimic .... foarte dubios. Si ce am gasit si mai dubios a fost faptul ca in MikroC PRO nu exista rutina Soft_I2C_Config() .... nu aveam cum sa il configurez sa ii spun portul si pinii unde am conectat memoria. Am incercat cu MikroC v5.0 si acolo exista aceasta rutina. Dar tot nu a functionat ... acum ca o fi fost si din cauza mea ca am gresit ceva asta nu mai stiu. Revin cu fisierele :daL.E Gata, le-am urcat. Ar fi tare ca la tine sa functioneze ok. :nebunrau:

Link to comment
Share on other sites

:aplauze Am gasit problema. Rasfoind si citind pagini pe net am gasit pe un forum un tip care avea aceeasi problema ca si mie insa raspunsul pe care l-a primit m-a lasat masca si m-a facut sa ma gandesc ca nu as fi gasit solutia nici daca ma puneam in cap. Ce era de facut: in loc de rezistorii clasici, analogici din ISIS trebuiau folositi unii analogici PULLUP .... asta a fost tot. I-am inlocuit in simulare si merge perfect. Oricum aveam de gand ca maine sa realizez practic schema si ar fi functionat ... Va salut !
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines