Jump to content
PLC Forum


Sign in to follow this  
aleda5859

Programmazione Pic Ed Assembler

Recommended Posts

gianni69p

ciao qualquno mi sa dire se con lo smartmouse oltre le eprom e possibile programmare anche i pic? :)

Share this post


Link to post
Share on other sites

rocco66

Ciao Gianni

Ovvio che funziona anche con le pic

devi semplicemente adattarlo o munirti di scheda tipo "wafer"

Share this post


Link to post
Share on other sites
gianni69p

ciao rocco66 ma tu l'hai provato personalmente ,se si quali tipi di wafer con rispettivi pic ed eprom riesce a programmare?

ciao :rolleyes::D

Share this post


Link to post
Share on other sites
rocco66

forse mi sto confondendo con lo smartmouse/Phoenix

con quest'ultimo si programmano tutti i pic supportati da IC-prog

lo smartmouse ha lo slot per l'inserimento della "scheda"

se si , devo ritrovare il mio in quanto ci scrissi sotto al c.s. la piedinatura del Pic

Share this post


Link to post
Share on other sites
rocco66

Ciao a tutti

Stò provando a compilare un programma in assembler con MPASM21500, ma

sempre messaggi di errore quindi non si creano i file .hex, uso xp, potrebbe essere il s.o.?

Share this post


Link to post
Share on other sites
Livio Orsini

Che messaggi ti da? se non riporti le info come si può capire cosa succede?

Share this post


Link to post
Share on other sites
rocco66

Buonasera Livio

Grazie per risposte rapide.

Come dicevo in precedenza "compila " solo una cartella Cod.File

non so con che programma aprirla , in quanto con blockNotes non si legge tutto.

Sulla schermata che appare dopo che si preme Assemble è riportato:

Warning

reported :27

Suppressed: 0

Message:

Reported :3

suppressed: 0

Lines assembled 209

un grazie anticipato

Share this post


Link to post
Share on other sites
rocco66

Buongiorno

Mi sono reso conto dell'errore:

source file path exceeds 62 characters

Sarebbe che MPLAB free di microchip che comprende anche il compilatore MPasm

non compila + di 62 caratteri o sbaglio.

In questo caso come mi dovrei comportare?

Ho anche PBPPRO 2.44 ma non compila assembler o ci starebbe qualcosa da impostare?

Ringrazio anticipatamente

Rocco

Share this post


Link to post
Share on other sites
Gabriele Corrieri
rocco66+8 Nov 2004, 08:45 AM-->
(rocco66 @ 8 Nov 2004, 08:45 AM)

Ciao

il problema è altrove ... è dove è posto il file

ammettiamo che il file ASM da compilare sia in

C:\document and settings\pallinopinco\documenti\cippa\lippa\cippa1\cippa.asm
1234567890123456789012345678901234567890123456789012345678901234567890123456
          1         2         3         4         5         6         7

questo path è lungo 76 caratteri, ad esempio

Ciao

Edited by Gabriele Corrieri

Share this post


Link to post
Share on other sites
stefano_

non penso, io uso lo stesso programma e lo stesso sistema operativo ,ma tutto funzia alla meraviglio ( quando azzecco il programma )

Che messaggi di errore ti da di preciso ??

Share this post


Link to post
Share on other sites
rocco66

al momento che premo assemble esce una piccola schermata :source file path exceeds 62 characters

creando una sola cartella .cod

Potrebbe sia il sorgente sia mpasm sono nella stessa cartella .

Share this post


Link to post
Share on other sites
rocco66

Volevo dire che sia i sorgenti che mpasm sono nella stessa cartella.

Ma non esiste alcun modo di compilare gli assembler con PicBasic Pro?

magari qualche programma in grado di trasformare gli assembler in Basic?

Me ne rendo conto che chiedo un po troppo ma penso anche che siamo nel 2004!

ciao rocco

Share this post


Link to post
Share on other sites
dlgcom

Rocco,

se il messaggio e' che eccede i 64 caratteri il path , prova a creare una cartella nella radice es: c:\prova.

e usa mplab per compilare.

penso che sia una cosa assurda scrivere il codice in asm poi trasformarlo in basic... cosa te ne fai? :blink:

Share this post


Link to post
Share on other sites
rocco66

Ciao

Ovvio che non me ne faccio niente , ma pensando che ho il PicBasic Pro e funziona che è una vera e propria "bomba" , quindi trovando sorgenti in Assembler , visto e considerato che MPasm non ne vuole proprio sapere di "lavorare" vorrei provare ad assemblarli con il PBP, ne sto tentando di tutti i colori:

Ultima prova : ho creato una cartella in C: ho messo mpasm + sorgente , adesso non appare + la schermata dell'eccedenza dei 62 caratteri , ma da sempre error found con striscia rossa del compilatore.

e viene sempre creata solo la cartella .Cod ,

ma con s.o. XP dopo l'installazione non si deve "portare" qualche file nella cartella windown/system come si faceva tempo fa con alcuni prog.?

Ciao Rocco

Share this post


Link to post
Share on other sites
dlgcom

Ciao,

Prova a postare che tipo di errore , potrebbe essere nel programma adesso.

Per mplab non serve niente , io lavoro tranquillamente con la versione 6.4 e ho gia fatto vari progetti senza problemi.

Prova a postare che errore ti da adesso.

Share this post


Link to post
Share on other sites
rocco66

Warning[215] C:\MYFILE\COASM~1.ASM 10 : Processor superceded by command line. Verify processor symbol.

Error[105] C:\MYFILE\COASM~1.ASM 12 : Cannot open file (Include File "P16F84a.INC" not found)

Error[147] C:\MYFILE\COASM~1.ASM 16 : Directive not allowed when generating an object file (ORG)

Error[152] C:\MYFILE\COASM~1.ASM 18 : Executable code and data must be defined in an appropriate section

Error[152] C:\MYFILE\COASM~1.ASM 19 : Executable code and data must be defined in an appropriate section

Error[152] C:\MYFILE\COASM~1.ASM 20 : Executable code and data must be defined in an appropriate section

Questi errori arrivano a tutta la pagina

Share this post


Link to post
Share on other sites
dlgcom

Il primo e' un warning , quindi non e' un problema.

Per l'errore 152 , sembra che non siano stati caricati correttamente i files e non trova qualche cosa.

Io ti consiglio di disinstallare mplab e reinstallarlo.

Poi apri un nuovo progetto e carichi il file asm e compili tutto da li.

Ma quale versione di mplab hai?

Share this post


Link to post
Share on other sites
rocco66

Uso MPasm215000 e mplab ide 6.30

Quindi dovrei compilare all'interno di Mplab ide , scegliere nuovo progetto, carico questo progetto e dalla finestra a discesa scelgo spasm se non sbaglio. Vi farò sapere

grazie per adesso

Share this post


Link to post
Share on other sites
rocco66

Ciao a tutti.

Ho risolto questo enigma (per me)

Ho disinstallato MPLAB v6.60

l'ho reinstallato

Ho creato in C: cartella denominata Myfile portandoci sia Mplab che ic-prog.

apro Mplab, File> New > si apre schermata in bianco,

ho fatto copia/incolla del file assembler interessato (e non la cartella)

poi salva con estensione .asm (sempre in Myfile)

Poi Project > Quickbuild e automaticamente si dono generate tutte le cartelle

compreso anche la .HEX , ho aperto ic-prog , programmo ed il circuito test

funziona alla perfezione.

é questo il modo esatto di usare Mplab?

comunque ringrazio tutti per le dritte che mi avete dato.

Ciao Rocco

Share this post


Link to post
Share on other sites
Beavis

Salve a tutti,

scrivo per chiedere un parere riguardo un piccolo problema che mi si è presentato programmando un PIC16F871.

Il progetto che sto realizzando comprende un display LCD alfanumerico sul quale riporto una tensione (ADC interno) e l'indicazione dell'ora.

I tempi li ottengo utilizzando il TMR1 in modalità compare. Ho impostato il registro di compare (16bit) a 10000 (decimale), in modo che utilizzando un quarzo da 4Mhz (istruzioni = 1Mhz) e prescaler 1:1 ottengo un interrupt ogni 10ms.

Decrementando un registro (inizializzato a 100) ad ogni interrupt del timer, dovrei ottenere esattamente un secondo ogni volta che il registro diventa 0. Ovvimante quando il registro è 0 incremento il contatore dei secondi e ricarico 100 nel registro e così via.

Sincronizzando l'orologio così realizzato con un altro orologio mi sono accorto che dopo alcuni minuti mi resta indietro di circa un secondo. Qualcuno sa dirmi cosa ho sbagliato o trascurato?

Ho provato anche a caricare il registro di compare con 62500 e prescaler 1:8 in modo da avere un interrupt ogni 0,5 secondi. In questo modo le cose vanno meglio (perchè?), ma non ho comunque una perfetta sincronizzazione.

Mi piacerebbe capirne di più...

Grazie

Beavis

Share this post


Link to post
Share on other sites
FranSys

Beavis, leggi bene il manuale del processore che stai utilizzando. Anche se è un po' che non ci lavoro, ricordo che sui PIC c'è un problemino relativamente al reset/impostazione dei timer ad interrupt. Quando tu inizializzi il registro del timer scrivendoci dentro un valore, il timer non inizia ad decrementare il suo valore immediatamente ma attende qualche ciclo di clock. Pertanto, quando è necessario ottenere timing molto precisi, è necessario tenere conto di questa caratteristica.

Io risolvevo inserendo (in assembler, in C queste cose non si vedono! :D) qualche NOP nella subroutine ad interrupt che contenva le istruzioni di reset del timer. In questo modo facevo perdere al processore qualche "colpo" in modo da compensare l'errore introdotto dal mancato avvio immediato del timer. Non ricordo quanti cicli di clock bisogna attendere, ma sul manuale è ben specificato. Se vuoi ottimizzare al massimo puoi anche fare qualcos'altro mentre aspetti che il timer riparta... le NOP non sono molto eleganti. In ogni caso è importante che i cicli di clock siano recuperati ALL'INTERNO della subroutine ad interrupt.

Quanto sopra spiega il permanere dell'errore anche cambiando la divisione di prescaler. I cicli di clock persi durante il reset del timer zero sono costanti, a prescindere dall'impostazione del prescaler. Ovviamente se il timer conta più velocemente l'errore si riduce.

Ciao.

Share this post


Link to post
Share on other sites
Beavis

Grazie 1000! :) mi hai risposto davvero velocemente. Leggerò più attentamente il datasheet. Ci stavo davvero diventando matto, ero convinto che il timer 1 in modalità compare si azzerasse immediatamente dopo il raggiungimento del match.

Ciao

Beavis

Share this post


Link to post
Share on other sites
FranSys

Puoi anche cercare un'Application Note di un orologio o di una sveglia PIC-based sul sito Microchip. Se guardi il codice relativo alla routine di azzeramento del timer noterai quanto ti ho suggerito.

Ciao.

Share this post


Link to post
Share on other sites
Beavis

mi sa che il mio problema è di altro tipo...

simulando con mplab vedo che isr associata al TMR1 in modalità compare

viene eseguita esattamente ogni 10ms, è nella routine di aggiornamento

dell'orologio che tipo ogni 10 sec mi accumula un ritardo... che casino

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...