bodo_b Postat August 16, 2010 Partajează Postat August 16, 2010 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 spre comentariu
francezu Postat August 16, 2010 Partajează Postat August 16, 2010 Pinul WP al memoriei trebuie pus la masa. Link spre comentariu
bodo_b Postat August 16, 2010 Autor Partajează Postat August 16, 2010 Incercasem si asa. Am facut teste si nici o diferenta. Link spre comentariu
francezu Postat August 16, 2010 Partajează Postat August 16, 2010 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 spre comentariu
bodo_b Postat August 16, 2010 Autor Partajează Postat August 16, 2010 Nu am folosit niciodata debugger-ul din Isis. In rest, PIC-ul este configurat ok atat la frecventa de lucru cat si la cuvantul de configurare.Codul este simplu si asta ma scoate din minti. Nu stiu de ce nu merge. :cry: Link spre comentariu
bodo_b Postat August 17, 2010 Autor Partajează Postat August 17, 2010 Nu are nimeni idee de ce nu functioneaza ? Link spre comentariu
Rabulea Sergiu Postat August 17, 2010 Partajează Postat August 17, 2010 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 spre comentariu
bodo_b Postat August 17, 2010 Autor Partajează Postat August 17, 2010 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 spre comentariu
francezu Postat August 17, 2010 Partajează Postat August 17, 2010 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 spre comentariu
bodo_b Postat August 18, 2010 Autor Partajează Postat August 18, 2010 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 spre comentariu
francezu Postat August 18, 2010 Partajează Postat August 18, 2010 Versiunea MikroC PRO for PIC are facilitatea de a genera fisiere COFF, scrie pe site la mikroe; probabil versiunea folosita de tine, daca este una mai veche nu are aceasta optiune. Link spre comentariu
bodo_b Postat August 18, 2010 Autor Partajează Postat August 18, 2010 ... 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 . 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 spre comentariu
Rabulea Sergiu Postat August 19, 2010 Partajează Postat August 19, 2010 Poti pune te rog schema in ISIS si softul (hexul) ca sa incerc a simula si eu?Poate ii vreo setare de program pe care o omiti si deaia nu simuleaza bine. Link spre comentariu
bodo_b Postat August 19, 2010 Autor Partajează Postat August 19, 2010 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 . 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. Link spre comentariu
bodo_b Postat August 19, 2010 Autor Partajează Postat August 19, 2010 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 spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum