Sari la conținut
ELFORUM - Forumul electronistilor

Pagini cu meniu si modificare/salvare parametri


catalin004

Postări Recomandate

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 de catalin004
Link spre comentariu

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

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

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 de catalin004
Link spre comentariu

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

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 de Bandi Szasz
Link spre comentariu

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 de catalin004
Link spre comentariu

 

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

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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări