Salve, sto scrivendo un programma in C con MikroC da eseguire poi in un PIC16F877A Ho la necessità di avere una tabella di dati in esadecimale da leggere in sequenza (ma anche con un paio di salti) per comporre un messaggio, e pensavo di usare due vettori distinti tipo questo PRG[]={0x01,0x02,0x03,..,0xff}; ma il compilatore mi dà un errore di mancanza di memoria ram nel pic. c'è un modo per memorizzare questi valori in rom anziché in ram? tanto devo solo leggerli, non modificarli. grazie
"Telespalla Bob" ha scritto nel messaggio news:50a0ac38$0$13280$ snipped-for-privacy@reader2.news.tin.it...
non conosco quel compilatore ma penso che tu possa farlo col C18 si potrebbe usare rom char PRG[16]={0x01,0x02,0x03,..,0xff};
mi chiedo però perchè non hai postato it.hobby.elettronica.digitale,visto che è più attinente e ..c'è molto posto e poi come mai usi proprio quel micro?Se non è per questioni di reperibilità spiccia penso che nella serie 18 ce ne siano di più potenti e versatili,e con molta + RAM senza sforare le 2 euro,magari mi sbaglio
come ti hanno detto conviene sempre utilizzare oggetti della serie PIC18: consumano meno, costano meno e sono più potenti, in particolare se devi fare qualche moltiplicazione/divisione.
Utilizzo quel compilatore perchè ho una licenza gratuita (sono un beta tester) e quindi lo conosco benino :)
Se tu scrivi:
unsigned char pippo = 5;
Tu chiedi al compilatore di allocare in ram una variabile col nome pippo e assegnargli 5. Quindi lui si memorizzerà da qualche parte un "cinque". Se non la modifichi mai, l'ottimizzatore può pensare di mettere la tua variabile in rom e risparmiare un paio di indirizzamenti a runtime, ma è piuttosto pericoloso perchè se ci accedi con i puntatori succedono disastri (a volte si deve abbassare il livello di ottimizzazione, ma è indice di codice scritto male). Spero tu stia utilizzando la versione PRO di MikroC, dove hanno risolto un sacco di bug segnalati sulla versione standard (senza correggere quest'ultima).
Se invece tu scrivi:
const unsigned char pippo = 5;
Lui scriverà in rom. E se nel software (con tutto il rispetto!!) ci sono cagate sui puntatori te ne accorgi in fase di compilazione.
Attento: nei PIC16 non tutta la rom nè tutta la ram è contigua, quindi non potrai allocare vettori più grandi di un tot di elementi. Il problema si sente molto meno sui PIC18, dove ho allocato anche vettori di 100 floating point senza problemi (credo che il limite sia solo la dimensione della memoria).
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.