Vai al contenuto
PLC Forum


Problemi Con I Float - utilizzo dei float


Paolascio

Messaggi consigliati

Salve a tutti.

Dopo aver programmato il pic con un programma che utilizza un array di float, il compilatore PICC da il seguente messaggio:

Error[000] : Can't find 0x131 words for psect rbss_0 in segment BANK0

Error[000] : Can't find 0x9 words for psect temp in segment COMBANK

L'errore è dovuto al fatto che vado a saturare la memoria disponibile sul banco 0.

Poichè ci sono + banchi, qualcuno saprebbe come è possibile accedere alla memoria di un altro banco?

Premetto che utilizzo il PICC e programmo in C.

Grazie a tutti

Paolo

Link al commento
Condividi su altri siti

  • 3 weeks later...

ciao,

purtroppo non so rispondere al tuo problema,

visto però che anchio programmo i PIC in C ( sto iniziando almeno ) provo a leggere i tutorial che ho, se trovo qualcosa che fa al tuo caso ti faccio sapere OK?

ci sentiamo.

Link al commento
Condividi su altri siti

Ciao,

per mettere una variabile in un altro banco, con il compilatore PICC devi inserire prima del tipo di dati della variabile la parola chiave bank+numbanco (per esempio: bank1 char variab = 0; bank0 int num; ecc).

Ricorda che cambiare il banco attivo consuma cicli di clock, quindi non mettere "a caso" le variabili nei vari banchi, ma distribuiscile evitando di dover cambiare continuamente il banco attivo nelle varie funzioni.

Un sito molto interessante per programmare i PIC con il linguaggio C è www.microchipc.com.

Massimo Maggi

Modificato: da Massimo Maggi
Link al commento
Condividi su altri siti

grazie per i tuoi suggerimenti sono vero e proprio oro colato, è da un pò di tempo che smanetto con i PIC ed il C ma di tutorial in italiano se ne trovano vermente pochi e trovare qualcuno che ne sappia qualcosa è come trovre un mosca bianca !!!!!!!!!!

A proposito il sito lo avevo gia visto, moooolto interessante solamente che principalmente avrei bisnogno di tut in italiano per poter partire, non so tu ma io sto proprio all'inizio...

nonostante cio sono riuscito a fare qualche semplice programmino !?!?!?!

Se per caso sai qualche sito interessante fammi sapere OK ?

se ti può interessare io ho iniziato con questo http://www.jofi.it/fiser/

ciao e grazie ancora !!

Link al commento
Condividi su altri siti

Ciao,

il tutorial di Fiser è l'unico che conosco in cui si programma in C. C'è anche quello di Tanzilli, ma usa l'assembler [comunque ti fa capire meglio come funziona il PIC, e come diventerà il tuo codice C(il quale viene poi convertito in assembler durante la compilazione, se non ci credi puoi vedere tale codice attraverso l'opzione "Generate assembly list file" di MPLAB o -asmlist di picc) ].

Anch'io non ho trovato tutorial del linguaggio C applicato ai PIC in italiano. Se non conosci bene il C, potresti cercare di impararlo attraverso i tutorial per la programmazione dei PC (si, PC non PIC). La sintassi di base è la stessa. Usa google per trovarli, dovrebbero essercene tanti. Unendo ciò che impari dal tutorial di Tanzilli per l'assembler dei PIC e un corso generico di C, dovresti capire molte cose.

Ti voglio segnalare un link che reputo molto interessante, anche se è in inglese (spero che almeno un po lo capisci..).http://www.interq.or.jp/japan/se-inoue/e_pic.htm

Ciao

Massimo

Link al commento
Condividi su altri siti

ciao,

eccomi di nuovo a darvi fastidio......

il problema stavolta è che dovrei verificare lo stato di un solo bit della portA e con picclite

non so proprio come si fa !!!!!

adesso per esempio scrivo if (portA= 0b00001); ecc..... così pero verifico lo stato di tutta la portA

io invece vorrei sapere se ra4 per esempio vale 1 oppure no

come si deve scrivere in C (picclite) ????

grazie 1000 a tutti

Link al commento
Condividi su altri siti

per Livio Orsini:

ho provato come hai detto tu ma da sempre errore, ecco il codice

if (PORTA AND 0b10000)

{

giocatore1=giocatore1+1;

appoggio = 1;

}

l'errore è "expression syntax"

ho provato in minuscolo ma non cambia nulla

in pratica vorrei che ogni volta che RA4 vale 1 la variabile da me dichiarata incrementasse

non posso utilizzare if (PORTA == 0b10000) perche non sono sicuro che RA0 RA1 Ra2 ed RA3

stanno a zero oppure ad 1 per questo volevo verificare solo il bit corrispondente ad RA4

Dove sbaglio !!!!!!!!!

Grazie 1000 anticipatamente e scusami del tempo che ti faccio perdere.

ciao ciao

Link al commento
Condividi su altri siti

Benedetto Stefano la mia era un'indicazione di principio, in altri termini ti indicavo il modo di fare il test, la sintassi te la devi mettere in linea con il tuo compilatore e con le regole del "C". IL simbolo dell'operatore AND, orientato al bit, per il "C" è "&" da non confondersi con il prefisso del puntatore che è il medesimo.

Un buon consiglio: prima di metterti a smanettare studiati almeno i fondamentali del linguaggio che vuoi usare.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

scusa ma la voglia di fare qualcosa di concreto è più forte di me comunque sto leggendo vari tut ma l'unico sul pic e c++ in italiano è quello di trikyc

grazie 1000

Link al commento
Condividi su altri siti

Comprati un testo di "C" non "C++", magari "Linguaggio C" di Kernighan e Ritchie (edizioni Jackson) è in Italiano ed è il vangelo del "C"

Link al commento
Condividi su altri siti

Perlomeno dai un'occhiata all'. in linea del tuo compilatore...

Per il fatto dell'area di memoria , il compilatore C dovrebbe gestirla lui automaticamente , quindi se di da' memoria esaurita o devi cambiare PIC o devi farti da solo (se possibile) una gestione piu' oculata indirizzando delle locazioni assolute in cui mettere i tuoi dati , ma visto le tue conoscenze ti consiglio per ora di dedicarti allo studio del linguaggio standard.

Ciao B)

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...