Jump to content
PLC Forum


Sign in to follow this  
sfinge

Errore Compilazione Htech Compiler

Recommended Posts

sfinge

Salve a tutti,

il compilatore mi genera un'errore che sembra causato dato da un starbordamento della richiesta di memoria da il banco utilizzato.Infatti è sufficiente togliere qualche istruzione che l'errore scompare.Come posso puntare ad un banco di memoria successivo?

Ho provato settando i bits RP0 e RP1 prima delle istruzioni "di troppo",ma niente è cambiato.Il micro è un PIC16F876.

Grazie anticipatamente.

Share this post


Link to post
Share on other sites

Livio Orsini

Al termine della compilazione dovrebbe darti l'occupazione totale di memoria; sia la memoria statica che la dinamica.

la scelta dei banchi dovrebbe essere effettuata direttamente dla compilatore, almenoi con il compilatore della CCS è così.

Però è questa tua affermazione che mi preoccupa: "..è sufficiente togliere qualche istruzione che l'errore scompare."

Perchè i banchi di memeoria selezionano la memoria RAM, mentre le istruzioni occupano la memoria FLASH. Non è che stai superando la massima capacità FLASH?

Share this post


Link to post
Share on other sites
sfinge

Quello che posso dirti che l'occupazione del memoria se non ricordo male è al 52%

Il messaggio di errore è il seguente:

Can't find 0x82e words (0x82e withtotal) for psect "text223" in segment "code" (largest unused contiguos range 0x800).

Utilizzo parecchie scritture di strighe su display LCD.

Potrebbe essere la versione di CCS in Lite mode che mi limita il codice?

GrAZIE

Share this post


Link to post
Share on other sites
Livio Orsini

CCS non ha versione ligth!

Se intendi la versione gratuita di Microchip non è di CCS.

Il micro PIC16F876 ha 8 k di FLAsh. 800h corrisponde a 2048. Verifica che tu non abbia indicato un altro micro al compilatore. Potrebbe anche essere che al versione gratuita supporti solo 2048 bytes di lunghezza di programma. in questo caso devi spezzare il programma in più segmenti, dare un'origine fissa ad ogni segmento e poi linkarli.

Share this post


Link to post
Share on other sites
sfinge

Grazie Livio,

tu dici:

"in questo caso devi spezzare il programma in più segmenti, dare un'origine fissa ad ogni segmento e poi linkarli"

mi puoi fare un'esempio se non è complicato?

Intendi dire utilizzare la direttiva include?

ciao

Share this post


Link to post
Share on other sites
Livio Orsini
mi puoi fare un'esempio se non è complicato?
Si è abbastanza complicato, se non sai come fare è un problema spiegarlo in un messaggio.

Intendi dire utilizzare la direttiva include?

Se il limite sta nel compilatore nonsi può usare questo trucco.

Però dovresti saperlo se è un limite dle compilatore perchè dovrebbe essere dichiarato.

Share this post


Link to post
Share on other sites
sfinge

Ciao Livio,

problema risolto.

Anche se non ho ben capito cosa sia questo "PSECT" ho trovato in MPLAB sotto a Build Options l'opzione show PSECT occupation.Viene così generato a fine compilazione una tabellina di LOG con l'occupazione di memoria delle funzioni di programma.

In effetti ho notato che una occupava moolto più spazio delle altre.

Ho risolto splittando in due parti.Esempio:

if(....){

ShowDisplay_1();//1°parte

ShowDisplay_2();//2°parte

}

ciao

Grazie

Share this post


Link to post
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.

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.

Sign in to follow this  

×
×
  • Create New...