Vai al contenuto
PLC Forum


Programmazione Pic Ed Assembler


aleda5859

Messaggi consigliati


  • Risposte 217
  • Created
  • Ultima risposta

Top Posters In This Topic

  • aleda5859

    39

  • rocco66

    32

  • Giorgio Demurtas

    26

  • dlgcom

    24

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Modificato: da Gabriele Corrieri
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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 .

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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:

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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?

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

  • 2 weeks later...

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

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