catalin004 Postat Decembrie 27, 2017 Autor Partajează Postat Decembrie 27, 2017 (editat) Imi place mai mult "live" adica sa vad ce face in montaj....am pus codul de mai sus al lui mars si schimba paginile ultra rapid la o apasare a butonului.... PS de ce menu este declarat char si nu int? Editat Decembrie 27, 2017 de catalin004 Link spre comentariu
Bandi Szasz Postat Decembrie 27, 2017 Partajează Postat Decembrie 27, 2017 Pentru a economisi spatiul de memorie. Char ocupa 1byte si stocheaza valori intre -128 si 128 sau intre 0-256 daca e declarat ca "unsigned", Int-ul ocupa dublu fata de char si in cazul de fata nu ai nevoie sa stochezi valori mai mari de 256. Link spre comentariu
catalin004 Postat Decembrie 27, 2017 Autor Partajează Postat Decembrie 27, 2017 Bagat la cap!!!! Link spre comentariu
catalin004 Postat Decembrie 28, 2017 Autor Partajează Postat Decembrie 28, 2017 Am observat ca daca pun 2 pagini cu meniu, procesorul functioneaza corect...cand pun case 3, adica a treia pagina , imi face display-ul ca naiba, adica se perturba..sa nu aiba destula memorie uControlerul?sa incerc altfel?ma refer la cel cu 4 x20... Link spre comentariu
Elison Postat Decembrie 28, 2017 Partajează Postat Decembrie 28, 2017 Cand se depaseste capacitatea memoriei RAM sau ROM , compilatorul afiseaza o eroare si nu mai genereaza codul hex. Link spre comentariu
catalin004 Postat Decembrie 28, 2017 Autor Partajează Postat Decembrie 28, 2017 (editat) Si daca nu va suparati....RAM se ocupa cu partea de afiasre pe display? adica memoria caracterelor? Da...m-am documentat...atunci cand apar mai multe pagini de meniu de exemplu se consuma foarte mult din RAM, apoi apare treaba cu IRP - bit set manual, dar nu va rezolva problema complet, probabil ca daca se continua cu sub-meniu deja se papa tot RAM-ul...aici intervine partea interesanta a lui Bandi din exemplul lui...din pagina 2 daca nu ma insel...sau trecerea la un pic mai evoulat.... Editat Decembrie 28, 2017 de catalin004 Link spre comentariu
Bandi Szasz Postat Decembrie 28, 2017 Partajează Postat Decembrie 28, 2017 Ma gandesc ca ai varianta demo din mikroC cu limita pana la 2k? E codul foarte aproape de acea limita ? Ca sa economisesti RAM declara toate variabilele care sunt statice ( nu li se schimba valoarea in timpul rulalrii programului ) cu prefixul "const". Acel prefix zice compilatorului ca acea valoare e statica si valoarea acestuia nu se schimba deloc si atunci compilatorul il muta din RAM in ROM ( spatiul de program). Link spre comentariu
catalin004 Postat Decembrie 28, 2017 Autor Partajează Postat Decembrie 28, 2017 Nu cred ca este problema de mikroC....cred ca controlerele sunt prea vechi....C-ul este de la fabrica, adica licentiat.... Link spre comentariu
Bandi Szasz Postat Decembrie 28, 2017 Partajează Postat Decembrie 28, 2017 (editat) Da este e chestie de adresare a zonei de RAM. E mai vechi PIC-ul si aia este adevarat, cele noi sunt din gama 16F15xx / 16F17xx / 16F18xx. Eu acuma vreau sa incep se experimentez cu PIC32 sa vad ce chestii mai noi stiu. PIC16F e totusi destul de limitat pe partea de RAM daca vrei RAM mult atunci dsPIC pe 24biti sau PIC32 pe 32 biti. Oricum se poate rezolva problem ta. Renunta la codul de genul acesta: Lcd_Out(2, 1,">Setari generale"); Si fa in felul acesta, compilatorul va stoca textul in spatiul ROM si va elibera din RAM. Toate textele statice care nu se schimba trebuie stocate in felul acesta const char* text_setariGenerale =">Setari generale"; Lcd_Out(2, 1, text_setariGenerale ); Editat Decembrie 28, 2017 de Bandi Szasz Link spre comentariu
catalin004 Postat Decembrie 28, 2017 Autor Partajează Postat Decembrie 28, 2017 (editat) Deci am pus aici o postare si nu a mers...a aparut gol...virusi.... Dar am vrut sa spun ca lucrez la o placa cu dsPIC30F6010A, interfatare LCD, encoder(potentiometru), taste cu meniu si ok , I/O digitale si analogice+6 pwm-out(3 phase),s.a. placa o va face mars desigur, dar mai am de lucru....dupa Sarbatori Am incercat cu, insa o sa incerc si cum a zis Bandi : char message11 [] = ">Setari generale"; apoi l-am bagat in LCD LCD_Out(1,1,message11); dar cred ca aici tot in RAM l-a salvat Editat Decembrie 28, 2017 de catalin004 Link spre comentariu
Bandi Szasz Postat Decembrie 28, 2017 Partajează Postat Decembrie 28, 2017 Aha, am crezut ca inca iesti pe acel 16F, mi-a scapat. Si da acolo tot in ram l-a salvat findca nu era notat cu "const" , tot ce e fara "const" e in RAM. Link spre comentariu
catalin004 Postat Ianuarie 3, 2018 Autor Partajează Postat Ianuarie 3, 2018 Da este e chestie de adresare a zonei de RAM. E mai vechi PIC-ul si aia este adevarat, cele noi sunt din gama 16F15xx / 16F17xx / 16F18xx. Eu acuma vreau sa incep se experimentez cu PIC32 sa vad ce chestii mai noi stiu. PIC16F e totusi destul de limitat pe partea de RAM daca vrei RAM mult atunci dsPIC pe 24biti sau PIC32 pe 32 biti. Oricum se poate rezolva problem ta. Renunta la codul de genul acesta: Lcd_Out(2, 1,">Setari generale"); Si fa in felul acesta, compilatorul va stoca textul in spatiul ROM si va elibera din RAM. Toate textele statice care nu se schimba trebuie stocate in felul acesta const char* text_setariGenerale =">Setari generale"; Lcd_Out(2, 1, text_setariGenerale ); Eroare...illegal pointer conversion Link spre comentariu
Bandi Szasz Postat Ianuarie 3, 2018 Partajează Postat Ianuarie 3, 2018 Interesant la mine compileaza, se mai poate defini si in felul urmator: const char text_setariGenerale[] = ">Setari generale"; Link spre comentariu
catalin004 Postat Ianuarie 3, 2018 Autor Partajează Postat Ianuarie 3, 2018 Nu vrea cu const in fata...zice ca este illegal, fara const merge Link spre comentariu
Bandi Szasz Postat Ianuarie 3, 2018 Partajează Postat Ianuarie 3, 2018 Ok, se pare ca Lcd_Out nu vrea sa lucreze cu zona ROM, hai sa incercam altfel, definim textul in ROM dupa care il copiem in RAM la nevoie si ii dam asa la functia LCD. const char *text_setariGenerale = ">Setari generale"; char* rom_to_ram(const char* ctxt){ static char txt[20]; char i; for(i =0; txt[i] = ctxt[i]; i++); return txt; } Lcd_Out(2, 1, rom_to_ram(text_setariGenerale)); 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