Vai al contenuto
PLC Forum


Errore Compilazione Htech Compiler


sfinge

Messaggi consigliati

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.

Link al commento
Condividi su altri siti


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?

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...