danpin Postat Martie 5, 2016 Partajează Postat Martie 5, 2016 Salut, Vreau sa fac term. si higr. cu PIC16F876 si SHT21 dupa schema gasita in revista Elektor din iunie 2012. Am gasit aici HEX-ul, am incercat o simulare in Proteus dar se pare ca nu merge...ori poate nu merge la mine... nu stiu. https://www.elektormagazine.com/magazine/elektor-201206/19884 M-am uitat putin in codul sursa si nu inteleg tot din el, de exemplu ce cauta liniile astea de cod acolo, la ce bun? int8 Year=0,Month=0,Days=0,Hours=0,Minutes=0; astea care se refera la RTC Schema se gaseste aici: https://translate.google.ro/translate?hl=en&sl=ru&u=http://robocua.blogspot.com/&prev=search rog, daca are cineva timp sa faca o simulare sa-mi confirme daca este bun hexul de pe site-ul Elektor. Apropo, are cineva librarii (sau cum s-o fi chemand) pt. Proteus pt. tuburi Nixie? Vreau sa modific codul pentru compilare in MikroC dar cum nu ma pricep prea bine, merge greu.... am sa mai apelez la ajutor! Toate cele bune! Link spre comentariu
danpin Postat Martie 7, 2016 Autor Partajează Postat Martie 7, 2016 (editat) Salut, Incerc sa convertesc codul pt. termometru/higrometru https://www.elektormagazine.com/magazine/elektor-201206/19884 care cred ca e scris pt. compilerul CCS in cod pt. mikroc. Am linia de cod printf("%lu,%lurn",sT.u16,sRH.u16); Pt. functia "printf" care ar fi echivalentul in mikroc? Mai sunt si linii de cod ca aceasta: sprintf(hum_str,"%04.1f",humidityRH); dar imi dau eroare la compilare "131 324 Undeclared identifier 'sprintf' in expression" In helpul mikroc gasesc functia "sprintf" dar totusi nu o gasesc in lista din "library manager", la generarea proiectului am selectionat toate librariile. Rog, un pic de ajutor pt. rezolvarea problemelor.... Editat Martie 7, 2016 de danpin Link spre comentariu
djvas Postat Martie 7, 2016 Partajează Postat Martie 7, 2016 Functia sprintf in mikroC este doar pentru seria 18F sau mai sus. Banuiesc ca pic-ul este din seria 16F de aici si eroarea. Link spre comentariu
tes2000 Postat Martie 7, 2016 Partajează Postat Martie 7, 2016 Probabil e cum spune djvas, odata am si mirat cate resurse ocupa sprintf-ul.Iar printf este doar pentru debug deci poti sa scoti complet. Link spre comentariu
danpin Postat Martie 7, 2016 Autor Partajează Postat Martie 7, 2016 void SHT21_measure(){ // --- measure temperature with "Hold Master Mode (HM)" --- error |= SHT2x_MeasureHM(TEMP, &sT); // --- measure humidity with "Hold Master Mode (HM)" --- error |= SHT2x_MeasureHM(HUMIDITY, &sRH); printf("%lu,%lurn",sT.u16,sRH.u16); //-- calculate humidity and temperature -- temperatureC = SHT2x_CalcTemperatureC(sT.u16); humidityRH = SHT2x_CalcRH(sRH.u16); //-- write humidity and temperature values into string buffer -- sprintf(temp_str,"%04.1f",temperatureC); sprintf(hum_str,"%04.1f",humidityRH);} Asta este bucata de cod pe care trebuie sa o transform. Am gasit pe forum la mikroe niste postari din 2009-2011, pare ca aveti dreptate, sprintf nu merge pt. PIC16Fxxx. Trebuie sa mai studiez codul, oricum nu ma pricep prea bine, chestii simple le pot face, dar la "fineturi" mai greu.. Pot sa inlocuiesc sprintf cu sprintl dar nu accepta float numbers, nu stiu exact daca codul opereaza cu float. Link spre comentariu
tes2000 Postat Martie 7, 2016 Partajează Postat Martie 7, 2016 Prima data incearca sa compilezi fara sprintf si vezi daca incape, deoarece libraria float ocupa o gramada de loc,daca mai ramane loc faci o inmultire cu 10, apoi o conversie la int si inaite de afisare muti ultimul digit mai in spate si pui un locul lui un punct. (ex. 23.5 * 10 = 235 asfisat 23.5) Link spre comentariu
danpin Postat Martie 9, 2016 Autor Partajează Postat Martie 9, 2016 Hexul original are 17KB. Asta pe care vreau sa-l modific, fara sprintf, are 9KB. Am linia de cod: char bcdtab[10] = {8,0,9,1,14,6,10,2,12,4}; nu-mi dau seama de unde vin numerele din arie. Afisajul este tip Nixie comandat de decodoare BCD tip 74141. Ceva idei? Link spre comentariu
djvas Postat Martie 9, 2016 Partajează Postat Martie 9, 2016 (editat) Dupa vreo ora de scarpinat in cap.... am deschis schema si s-a facut lumina.... Autorul a cablat RB7->A ( 74141) RB6->B si tot asha. Ca sa functioneze trebuie generata valoarea de 4 biti in oglinda. Asta face acest array. Ce nu inteleg este ordinea din array. Editat Martie 9, 2016 de djvas Link spre comentariu
tes2000 Postat Martie 10, 2016 Partajează Postat Martie 10, 2016 (editat) Probabil trebuie luat in considerare cum a legat tuburile, decodorul activeaza doar o iesire pentru o combinatie iar pe tub afiseaza un numar. Daca nu a legat in ordine trebuie modificat ordinea din soft. Nu vad ce tip de tub foloseste ca sa verific. Editat Martie 10, 2016 de tes2000 Link spre comentariu
albasete Postat Martie 10, 2016 Partajează Postat Martie 10, 2016 (editat) Tuburile IN 14 pentru cifre si IN 19 A pentru simboluri :grade C si % pentru umiditate. Fiecare tub este comandat individual de cate un driver 74141, care are un singur mod de conexiune, nu se pot inversa conexiunile. Modificarea banuiesc, trebuie facuta din soft. "M-am uitat putin in codul sursa si nu inteleg tot din el, de exemplu ce cauta liniile astea de cod acolo, la ce bun? int8 Year=0,Month=0,Days=0,Hours=0,Minutes=0; astea care se refera la RTC" . Da, la RTC se refera. Inseamna ca este gresit codul sursa sau ai copiat gresit respectivul cod. Editat Martie 10, 2016 de albasete Link spre comentariu
danpin Postat Martie 10, 2016 Autor Partajează Postat Martie 10, 2016 (editat) "M-am uitat putin in codul sursa si nu inteleg tot din el, de exemplu ce cauta liniile astea de cod acolo, la ce bun? int8 Year=0,Month=0,Days=0,Hours=0,Minutes=0; astea care se refera la RTC" . Da, la RTC se refera. Inseamna ca este gresit codul sursa sau ai copiat gresit respectivul cod. Zip-ul cu codul sursa l-am descarcat de pe site-ul Elektor, probabil l-au folosit la vreun ceas cu Nixie si l-au adaptat si pt. termo/higrometer apoi lasand unele bucati din cod din neatentie sau chiar intentionat, sa cumperi circuitul deja programat de la ei. Asta e mai putin important, eu incerc sa-l transform in cod mikroc si am sa elimin tot ce nu este necesar, daca voi reusi ramane de vazut.... Anozii tuburilor sunt alimentati de la sursa cu +170Vcc, catozii sunt legati la iesirile 74141 deci pt. a aprinde un digit aceste iesiri trebuie sa fie "zero", corect? In acest caz codul BCD pe intrari trebuie sa fie ceva "complementat" sau modificat ...ceva de genul... corect? Editat Martie 10, 2016 de danpin Link spre comentariu
djvas Postat Martie 10, 2016 Partajează Postat Martie 10, 2016 Anozii tuburilor sunt alimentate de la sursa cu +170Vcc, catozii sunt legati la iesirile 74141 deci pt. a aprinde un digit aceste iesiri trebuie sa fie "zero", corect? In acest caz codul BCD pe intrari trebuie sa fie ceva "complementat" sau modificat ...ceva de genul... corect? De aprinsul tubului se ocupa 74141. Conform tabelei de adevar din datasheet informatia este directa nu complementata. Adica daca la intarea ai a=b=c=d=0 atunci se aprinde cifra 0 la tub si tot asha. Acel array ( am scris si mai sus) este folosit datorita schemei proiectate deficitar. O legare mai logica ar fi RB4 la A(74141) RB5 la B si tot asha. In felul asta scrii direct valoarea de 4 biti dorita. Link spre comentariu
danpin Postat Martie 11, 2016 Autor Partajează Postat Martie 11, 2016 Are cineva librarii cu tuburi Nixie pt. Proteus 8? Eu le-am simulat cu digiti de 7 seg. dar iese cam mare schema... Link spre comentariu
djvas Postat Martie 11, 2016 Partajează Postat Martie 11, 2016 Poti simula cu afisaj de 7 segmente care are decodor binar incorporat. Il gasesti sub numele de 7SEG-BCD. In felul asta nu mai ai nevoie nici de 74141 si scema se simplifica mult. Link spre comentariu
danpin Postat Martie 16, 2016 Autor Partajează Postat Martie 16, 2016 (editat) Multumesc tuturor pt. ajutor. Momentan am renuntat la "portarea" codului original scris, cred, in CCS in cod mikroc, e cam complicat pt. cat ma pricep eu, ca sa inteleg ce trebuie sa fac ar trebui sa studiez si CCS-ul... Am inceput sa incropesc un alt software.... Intrebare: ca sa "sting" un digit, adica sa nu afiseze zero, portul la care este conectat 74141 trebuie declarat ca intrare (TRIS 1)? Editat Martie 16, 2016 de danpin 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