Newsgroup: it.hobby.elettronica.digitale
Titolo: mikrobasic + 16F84A esaurisco la memoria !!!

Salve,
preambolo: non sono un programmatore professionista, bensì un hobbista
in questo senso, ovvero mi diletto nella programmazione da poco tempo
e con poche basi... della serie non l'ho imparato a scuola... :-)
...fatto stà che di solito programmavo i miei PIC in assembler, adesso
ho scoperto il mikrobasic e stranamente esaurisco la memoria...
A parte tutto, me l'aspettavo, successe anche in VB ma a differenza di
ciò che potri fare in VB, (chiamare dei moduli con passaggio di dati)
non individuo nulla che possa farmi risparmiare memoria.
Vediamo di essere più precisi: faccio lampeggiare un led su RB0 che è
il pilota di un radiofaro in morse. Il led acceso, in poche parole, è
punto o linea a seconda della necessità. Nello stesso momento su un
display 16x2 visualizzo il carattere che modulo su RB0...
Programmando semplicemente "lcd:out..." seguito da "RB0 a 1", "delay"
ecc... dopo 3 caratteri non ho più RAM o ROM... so che in assembler
riesco a fare queste cose, ma vorrei farlo in basic.
Come posso programmare, allora, il PIC risparmiando decisamente
memoria ? Macros ? Call ? che altro ?
Ho tentato a cercare qualcosa in rete con risultati (per ora) scarsi,
mi potete aiutare con una vostra opinione o con dei LINK specifici ?
Esistono dei libri interessanti sull'argomento ?
Grazie anticipate e tanti saluti
Matteo

IV3YNB ha scritto:

Non credo che sia possibile, i linguaggi evoluti, basic, C, notoriamente 
sono spreconi.
Passa al modello superiore, PIC16F628, PIC16F873, PIC16F876
ciao Fra

 memoria ? Macros ? Call ? che altro ?
Delle tecniche ci sono, magari hai solo commesso qualche errore 
banale, ma bisognerebbe vedere il codice che hai scritto.
In ogni caso, il PIC che hai scelto ha troppe poche risorse per poter 
essere usato proficuamente da un compilatore.
A dire la verità, i PIC in generale, anche quelli più grossi, non sono 
molto adatti ad essere programmati da linguaggi di alto livello, a 
causa della mancanza di un vero stack. Questo obbliga a creare 
compilatori dedicati che per sistemare le cose (permettere la 
modularità, etc..) fanno un po' di "porcate" che sprecano più memoria 
del necessario.
Ciao

 essere usato proficuamente da un compilatore.
avevo già pensato di passare all'876, il fatto è che mi sembrava
impossibile esurire la memoria così presto.
Grazie comunque, mi sbatterò ancora un po' per risolvere qualcosa (già
scrivendo i caratteri in EEPROM e facendoli leggere da lì risparmio
qualcosa). Provavo anche ad includere un modulo per l'inizializzazione
dell'LCD (che consuma un SACCO di memoria) ma non riesco a farlo anche
se non ho errori di compilazione... ho creato un file lcdstarter.pbas
che viene convertito da mikrobasic in binario per esser incluso, ma
col comando include "lcdstarter" l'LCD non viene inizializzato... non
so che fare, sbatterò ancora un po' la testa ma magari se mi sapete
dire qualcosa...
Comunque mi prenderò un 876 e per l'84A ritornerò in assembler...
peccato però, mikrobasic mi piace...
Grazie anticipate e buona giornata
Matteo aka Cups

 essere usato proficuamente da un compilatore.
...
al di là di quanto già detto, tempo fa notai, che usando una vecchia versione del compilatore (se ben ricordo la 2. ???)
si aveva un'occupazione della memoria, maggiore rispetto alla versione piu' recente.
E' un tentativo che puoi fare ... chissà !
Claudio

 
ciao
io uso MikroC, ed ho trovato lo stesso problema di RAM esaurita...
il tutto dovuto al fatto che i caratteri dell'LCD li andava a scrivere
sempre in Ram:quindi ram di 32B, dopo pochi caratteri la ram era
esaurita. soluzione: usare un sistema che scriva i caratteri in rom,
se sono delle costanti, ed un sistema per recuperare dalla rom
emilio