[X-POST] MikroBasic e 18F2480

Scusate per l'x-post ma su altri gruppi non hanno potuto aiutarmi... Spero in voi!

Sto' sviluppando un firmware per un pic 18f2480 che dovrebbe essere in grado di far da "adattatore" per un pc in modo che possa ricevere i messaggi provenienti da una rete canbus e lo sto' sviluppando utilizzando MikroBasic. Ho proceduto scrivendo dei firmware di test in questo modo:

1) ho scritto un firmware per scrivere e leggere dei dati dall'usart in modo da assicurare il collegamento al pc: funziona! (dei led si accendono in base ai dati che dal pc invio via seriale) 2) ho scritto un firmware per scrivere e leggere dati sulla rete canbus: funziona! (su un'altra periferica vedo su un display lcd il dump dei messaggi inviati dal mio pic)

A questo punto mi sono messo a scrivere il firmware finale prendendo i pezzi di codice dei due firmware: non funziona!!! :-( Non riesco a capire bene quello che succede, fatto sta' che il pic sembra morto (non è comunque bruciato perchè ricaricando uno dei due firmware di test funziona regolarmente) infatti subito dopo le inizializzazioni delle periferiche del pic dovrebbe accendersi un led ma non accade! Facendo degli ulteriori test mi sono accorto che se lascio solo le istruzioni di inizializzazione e le istruzioni di gestione dell'usart il led si accende regolarmente (quindi le istruzioni di inizializzazione sono corrette) mentre appena aggiungo un'istruzione "canread" il pic torna a non accendere il led! (nb: l'istruzione canread è successiva all'accensione del led di funzionamento quindi se anche ci fossero degli errori nel mio codice il led dovrebbe comunque accendersi!)

Sò che quando aggiungo l'istruzione canread obbligo MikroBasic ad includere l'istruzione in questione (altrimenti MikroBasic ottimizza il codice togliendo tutte le istruzioni che non sono utilizzate pur essendo definite nella libreria di gestione del can) e questo fa' sì che il codice diventi più "pesante" in termini di byte.

Da quest'analisi mi sono fatto l'idea che per qualche motivo accade una sorta di sforamento di qualche limite del pic, mi immagino ad esempio che si sia riempito il bank0 e si debba utilizzare il bank1, cosa che dovrebbe essere gestita in maniera automatica da MikroBasic.

Purtroppo qui mi sono fermato, non sò più dove battere la testa... Qualcuno mi può dare qualche dritta? Potete confermare o smentire la mia teoria? Come potrei risolvere il problema?

Scusate se sono stato un tantino lungo e grazie per qualsiasi aiuto.

Ciao Andrea

Reply to
Andrea
Loading thread data ...

posta il codice sorgente... senza quello è un po' difficile provare ad aiutarti

- la "canread" l'hai scritta tu?

- hai guardato il codice asm generato dal compilatore per vedere se non si tratta di un bug?

- prova cmq a cambiare pic...

Reply to
ice

ice ha scritto:

Vedo di postarlo domani (al momento non ce l'ho con me)

La "canread" è già implementata da MikroBasic come sua istruzione nativa

Ci ho provato ma è un "bordello"!!!

Già provato, il pic è sano

Reply to
Andrea

E' solo perch=E8 stai usando probabilmente una versione crackata del mikrobasic. Io passerei all'originale...

Ciauz... TechMan

Reply to
killboy2000

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.