Vai al contenuto
PLC Forum


Compilazione Mikroc - Ricavare file da inserire su pic16F876


jimmy208

Messaggi consigliati

Un saluto a tutti gli utenti del forum.

Premetto che sono alle prime armi con questo tipo di pic e anche con questo compilatore e vorrei esporvi il mio problema sulla compilazione in C utilizzanco MikroC.

In poche parole dovrei ricavare il file HEX da un listato in C per un progetto trovato su internet.

Ho provato diverse volte ma non riesco anche perchè non conosco affatto il compilatore.

Qualcuno è in grado di compilarlo per me?

Il progetto è questo: http://www.vermontficks.org/datalog5c.htm

Ciao

Link al commento
Condividi su altri siti


Tu disponi del compilatore MikroC?

Se la risposta è si cosi ti dice dopo la compilazione? Da degli errori? Che tipo di errori?

Se non da errori dovresti avere in uiscita un file HEX pronto per essere caricato nel pic

Link al commento
Condividi su altri siti

Grazie per la risposta.

Comunque avrei una certa urgenza ad avere il file.HEX per il momento, magari dopo potrò approfondire se non è troppo complicato.

Magari è solo problema di settaggio del programma?

Gli errori sono:

Can't open include file " 16f876.h "

#include < 16F876.H >

prova.c:47: error: Unknown #directive "device"

#device ADC=10

prova.c:48: error: Can't open include file " jonsinc.h "

#include < jonsinc.h >

prova.c:50: error: Unknown #directive "fuses"

#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT

prova.c:98: error: Unknown #directive "use"

#use delay ( clock=4000000 )

prova.c:99: error: Unknown #directive "use"

#use standard_io ( A )

prova.c:100: error: Unknown #directive "use"

#use standard_io ( B )

prova.c:101: error: Unknown #directive "use"

#use standard_io ( C )

prova.c:102: error: Unknown #directive "use"

#use rs232 ( baud=9600, xmit=PIN_B3 )

prova.c:103: error: Unknown #directive "use"

#use i2c ( master, scl=EEPROM_SCL, sda=EEPROM_SDA )

prova.c:133: error: Unknown #directive "int_rtcc"

#int_rtcc

11 errors in preprocessor.

Link al commento
Condividi su altri siti

ciao, il codice non e' per il mikroc e gli errori che ti mostra dicono infatti che gli mancano dei pezzi per poterlo compilare (es. "jonsinc.h").

Nella pagina dello stesso sito:

http://www.vermontficks.org/pic.htm

all' inizio viene citato il compilatore della CCS e l' autore specifica che usa questo nei sorgenti:

"CCS supplies the C compilers that are used to compile my source code."

Link al commento
Condividi su altri siti

Ci ho provato in tutti i modi ma non riesco proprio.

Ognuno ha i propri limiti.

Comunque se qualcuno è in grado di compilarlo per me e se è disposto ad inviarmelo lo ringrazio tanto.

Diversamente non so cosa fare.

Grazie a tutti

Link al commento
Condividi su altri siti

Potresti e dovresti fare l'unica cosa corretta: imparare ad usare il "C".

Anche se qualcuno lo compila per te e te lo fa funzionare cosa te ne fai? Non penserai forse di prendere il file HEX buttarlo sul PIC e poi tutto fila liscio come l'olio? Qualche messa a punto dovrai sempre farla, se non sai metterci le mani come farai?

Link al commento
Condividi su altri siti

non è un problema di settaggi, ma di compilatore sbagliato.

Il tuo compilatore non è riesce ad interpretare le direttive che vedi tra gli errori.

Ho provato ad inserire il sorgente in un progetto per vedere se lo compilava al volo, ma ho ottenuto gli stessi tuoi errori.

Alcuni si possono correggere velocemente, ed è quello che ho provato a fare, ma una volta risolti i problemi dei file da includere, come il PIC16F876.inc e il jonsinc.h (che si può scaricare dal sito), sono nati moltissimi altri errori, perchè le definizioni usate dal suo .inc sono diverse da quelle standard microchip e bisognerebbe correggerle tutte (oppure avere il file .inc giusto).

Quindi ti consiglio di cercare il compilatore usato dall'autore, fatto ciò sono sicuro che tutto funzionerà, anche se non sei espertissimo...

Io ci ho provato... mi dispiace. smile.gif

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ho provato a scaricare la versione free del CCS ma gli errori sono sempre presenti.

Credo che tale versione sia incompleta per la compilazione del 16F876.

Servirebbe qualcuno che usa quel compilatore.

In attesa di ulteriori risvolti ringrazio tutti per la disponibilità

Link al commento
Condividi su altri siti

Io uso regolarmente CCS (strano che ci sia una versione free non crackata smile.gif ) da anni. Se ci sono errori di compilazione è perchè sono stati commessi.

Il 16F876 è talmente consolidato da essere obsoleto, non ci sono bugs nei compilatori per questo micro.

Devi lavorare con metodo e pazienza. Andare a vedere il primo errore segnalato ed emendarlo, poi ricompilare. Se l'errore è stato effettivamente emendato sarà scomparso e, probabilmente, ne saranno scomparsi anche altri. RIpetere l'operazione sino ad emendare tutti gli errori.

Non c'è altra via, non esistono bacchette magiche o trucchi. Solo lavoro serio e sudore, metaforico.

Link al commento
Condividi su altri siti

Assicurati che che carichi i file inclusi all'inizio del sorgente (.inc .h) nel .inc ci sono tutte le definizioni, e se non lo carica, tutte le varie costanti presenti nel sorgente saranno parole messe li a caso.

ad esempio l'errore "undefined identifier: PIN_C0" significa che la costante PIN_C0 non è stata definita e quindi per il compilatore non significa niente. Se hai errori di questo tipo significa che il PIC16F876.inc non viene caricato oppure stai caricando un file che non ha queste definizioni.

Link al commento
Condividi su altri siti

Gli errori sono chiarissimi, e direi abbastanza... passatemi il termine... da principiante

biggrin.gif

Can't open include file " 16f876.h "

prova.c:48: error: Can't open include file " jonsinc.h "

è evidente che non trova il file, gli spazi non è che sono acqua fresca!

#include < 16F876.H >

#include < jonsinc.h >

così è corretto:

#include <16F876.H>

#include <jonsinc.h>

se correggi i due errori riuscirai anche tu a compilarlo, provaci; al limite te lo mando io

Modificato: da doctordf
Link al commento
Condividi su altri siti

... se non hai il file header che ha usato l'autore... hai voglia a togliere gli spazi, io ho usato quello fornito con MPLAB e non c'è una definizione che torna.

rolleyes.gif

Link al commento
Condividi su altri siti

Guarda che i compilatori non danno messaggi a vanvera,

- Can't open include file " 16f876.h " - vuol dire che il file non lo trova, non che il file non è quello giusto, il compilatore non è in grado di stabilire se un file va bene o no, si limita a leggerne le istruzioni.

E comunque con gli spazi prima e dopo il nome del file non compilerai MAI.

Ecco come fare:

jonsinc.h - lo scarichi dal sito medesimo http://www.vermontficks.org/jonsinc.zip

16F876.H - ne trovi quanti ne vuoi, in rete ma lo ha anche il CCS

1- Metti nella stessa cartella, per comodità, il file sorgente, il file 16F876.H e il file jonsinc.h

2 - Lanci il CCS

3 - crei un nuovo progetto con il file sorgente

4 - includi (include files) i due file 16F876.H e jonsinc.h o la cartella che contiene il tutto

5 - togli gli spazi di cui sopra

6 - compili

putroppo in questo forum non si riesce ad allegare l'hex...

Modificato: da doctordf
Link al commento
Condividi su altri siti

Io lo carico bene il file header ma quello che ho io ha le definizioni completamente diverse, inoltre nel sorgente ci sono troppe direttive che MPLAB non digerisce, dovrei fare troppe modifiche (io uso il compilatore Hi-Tech su MPLAB).

Se a te lo compila prova a postare l'ascii... farà un copia-incolla. smile.gif così lo fai contento...

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ho avuto la possibilità di provare il circuito e posso confermare che funziona tranne

per l'interfaccia dati che non ho provato e la memorizzazione dei dati su eprom che sembra non gestirla correttamente.

Ho l'impressione che il pic non riesca a cancellare i dati presenti sull'eprom durante il reset.

Vi terrò informati su eventuali risvolti.

Se qualcuno ha già avuto lo stesso problema potrebbe essere di aiuto.

Link al commento
Condividi su altri siti

Il circuito prevede un menù di reset delle letture acquisite.

In questo modo dovrebbe porre tutti i valori dell'eprom a FF o altro secondo programma.

Il problema è che effettuando nuovamente acquisizioni i valori letti sono sempre gli stessi dei precedenti o comunque relativi a dei dati già immagazinati sull'eprom.

In poche parole il pic legge i dati dall'eprom però non è in grado di cancellarli o riscriverli.

Link al commento
Condividi su altri siti

Hai controllato la funzione di scrittura della EEPROM? Usi una funzione di libreria od una ad hoc?

Link al commento
Condividi su altri siti

Ho rifatto alcune prove e posso confermare che la gestione dell'eeprom non è corretta.

Ho pure verificato le forme d'onda SCL ed SDA con i seguenti risultati che desidererei commentare:

1. Il segnale SCL dura per tutto il periodo di lettura/scrittura e non oltre

2. Il segnale SCL presenta delle perdite di un solo bit ogni 8 nel senso che dopo 8

periodi transizioni H/L si presenta un L/L

3. Il segnale SDA non sembra conforme alle specifiche dei data sheet delle

eeprom, in particolare la sequenza dei Byte di scrittura/lettura e sfalsata.

In particolare il primo Byte OK, secondo e terzo Byte sempre fissi con un solo

bit a 1, quarto Byte variabile incrementale (presumo che sia quello delle

allocazioni di memoria) quinto Byte variabile con il variare dell'ingresso ADC.

Possibile che la libreria di compilazione per IC2 non sia corretta?

Scusate se mi sono addentrato nei dettagli ma come potete notare ci tengo a far funzionare il circuito al 100%.

Per rispondere a Livio vorrei sottolineare la mia completa ignoranza su programmazione in C e una buona conoscenza del resto di elettronica.

Purtroppo non ne ho idea della funzione di scrittura dell'eeprom credo che debba essere gestita dalla libreria quindi chiedo a doctordf se è più afferrato in materia una sua opinione.

p.s. Un commento aggiuntivo al circuito

Trasmissione seriale OK con ottimo sistema di visualizzazione dati memorizzati

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