Vai al contenuto
PLC Forum


Pic 16f84a - Errore in programmazione


Shary

Messaggi consigliati

Di nuovi noi tre...

La maturità è alle porte e ancora stiamo combattendo con questo plastico del treno. Sembra che pian pianino, siam riuscite ad occuparci della parte elettronica, si è presentato un problema però durante la programmazione del Pic 16f84a.

Il programma è il seguente:

;*******************IMPIANTO FERROVIARIO*******************

PROCESSOR 16F84A

INCLUDE "PIC16F84A.INC"

;************Input*************

FR1 EQU 0 ;fotocellula 1 (RA0)

FR2 EQU 1 ;fotocellula 2 (RA1)

FR3 EQU 2 ;fotocellula 3 (RA2)

FR4 EQU 3 ;fotocellula 4 (RA3)

;************Output***************

PL EQU 4 ;sbarre passaggio a livello

SD EQU 5 ;scambio 1, dritto

SI EQU 6 ;scambio 1, inclinato

SEM EQU 7 ;semafori

INIZIO:

ORG 00H ;punto di inizio programma

BSF STATUS, RP0 ;seleziona il banco 1 del FileRegister per accedere a TRISA e TRISB

MOVLW 00001111B ;porta A: RA0-RA3 come INPUT

MOVWF TRISA

MOVLW 11100000B ;porta B: RB0-RB4 come OUTPUT

MOVWF TRISB

;**********Condizione iniziale passaggi a livello e scambi

BCF STATUS, RP0 ;seleziona il banco 0 del FileRegister per accedere a PORTA e PORTB

BSF PORTB, PL ;sbarre alzate (1 su RB0)

BSF PORTB, SI ;scambio inclinato

BCF PORTB, SEM ;semafori spenti

;**********Attesa passaggio treno in FR2

WaitFR2:

BCF STATUS, RP0

BTFSS PORTA, FR2 ;fotocellulaFR2=1?

GOTO WaitFR2 ;no fai polling su FR2

GOTO PLG ;si vai a PLG

PLG:

BCF STATUS, RP0

BCF PORTB, PL ;abbassa le sbarre

BSF PORTB, SEM ;semafori accesi

;**********Attesa passaggio treno in FR3

WaitFR3:

BCF STATUS, RP0

BTFSS PORTA, FR3 ;fotocellulaFR3=1?

GOTO WaitFR3 ;no fai polling su FR3

GOTO PLS ;si vai a PLS

PLS:

BCF STATUS, RP0

BSF PORTB, PL ;alza le sbarre

BCF PORTB, SEM ;semafori spenti

;**********Attesa passaggio treno in FR1

WaitFR1:

BCF STATUS, RP0

BTFSS PORTA, FR1 ;fotocellulaFR1=1?

GOTO WaitFR1 ;no fai polling su FR1

GOTO PLG1 ;si vai a PLG1

PLG1:

BCF STATUS, RP0

BCF PORTB, PL ;abbassa le sbarre

BSF PORTB, SEM ;semafori accesi

;**********Attesa passaggio treno in FR4

WaitFR4:

BCF STATUS, RP0

BTFSS PORTA, FR4 ;fotocellulaFR4=1?

GOTO WaitFR4 ;no fai polling su FR4

GOTO PLS1 ;si vai a PLS1

PLS1:

BCF STATUS, RP0

BSF PORTB, PL ;alza le sbarre

BCF PORTB, SEM ;semafori spenti

BSF PORTB, SD ;scambio dritto

END

------------------------------------------------------------------------------

Per programmare il pic, utilizziamo ic prog v-1.0.5.0

Alla fine di ogni programmazione, ci mostra questo messaggio: "verifica fallita al address 0000h"

Cosa possiamo fare? Da cosa dipende? (PS: abbiamo cambiato gia sia il PIC che il programmatore...può dipendere dalla configurazione di Ic Prog?)

AIUTATECI VI PREGO!

Grazie in anticipo...Sharon

Link al commento
Condividi su altri siti


E' inutile che mandi post vuoti per sollecitare risposte, se non ci sono è perchè nessuno sa o vuole rispondere.

Prova a cambiare micro. I micro con memoria flash hanno un ciclo finito di scritture-cancellazioni (il dato lo trovi nel data sheet del micro). Può essere che sia stato superato il numero di scritture o che un programmatore un po' brutale abbia alterato le caratteristiche della flash riducendone il ciclo di vita.

Link al commento
Condividi su altri siti

ciao

il programmatore lo avete cambiato

il micro lo avete cambiato

non rimangono che i settaggi....

controlla anche il cavo di collegamento

ciao

dario

Link al commento
Condividi su altri siti

Và...finalmente và! Sono i settaggi errati e la mancata patch di windows xp.

ALTRO(e spero ultimo problema)...

Necessitiamo di una ROUTINE di ritardo di 1 secondo.

Attualmente abbiamo utilizzato queste (su consiglio di amici, ma non ne abbiamo capito il senso):

INIZIO:

ORG 00H ;punto di inizio programma

ORG 04h

decf CONT

bcf INTCON,T0IF

retfie

.....................................................................

DELAY: movlw .16

movwf CONT

loopa: movf CONT,0

btfss STATUS,2

goto loopa

return

......................................................................

Qualcuno puo fornirci i ritardi pari a 1 secondo e 2 secondi?

Grazie! Scusate l'insistenza :(

Link al commento
Condividi su altri siti

Prova a farli con l'interrupt di TMR0. Trovi anche un bell'esempio pronto sul sito di AreaSX dove scarichi "pic by examples" che, nonostante il titolo, è in italaino

Link al commento
Condividi su altri siti

La subrountine Delay dovrà utilizzare opportunamento il registro TMR0 per ottenere un ritardo pari ad un secondo. Vediamo come. Le prime istruzioni che vengono eseguite nella Delay sono:

movlw 6

movwf TMR0

e

movlw 125

movwf Count

Le prime due memorizzano in TMR0 il valore 6 in modo che il registro TMR0 raggiunga lo zero dopo 250 conteggi (256 - 6 = 250) ottenendo così una frequenza di passaggi per lo zero di TMR0 pari a:

31.250 / 250 = 125 Hz

Le istruzioni seguenti memorizzano in un registro a 8 bit (Count) il valore 125 in modo tale che, decrementando questo registro di uno per ogni passaggio per lo zero di TMR0, si ottenga una frequenza di passaggi per lo zero del registro Count pari a:

125/125 = 1Hz

Le istruzioni inserite nel loop DelayLoop si occupano quindi di controllare se TMR0 ha raggiunto lo zero, quindi di reinizializzarlo a 6 e decrementare il valore contenuto in Count. Quando Count raggiungerà anch'esso lo zero allora sarà trascorso un secondo e la subroutine potrà fare ritorno al programma chiamante.

Indi è soltanto questa la stringa da utilizzare?

movlw 6

movwf TMR0

movlw 125

movwf Count

Non necessita di etichette?

Link al commento
Condividi su altri siti

ciao, scusa se mi intrometto,ma anche voi alle prese con i pic e la maturità...??? non siete le sole :)

però vedo che siete ad un livello già più avanzato del mio (io devo ancora programmarlo il pic), vi posso assillare per un 5 minutini su msn, se ce l'avete??

'azzie!!! :)

Link al commento
Condividi su altri siti

L'avete letto l'esempio di Tanzilli? Dovete solo copiare il codice perchè è prvisto proprio per F84.

L'esposizione che avete scritto è corretta, ma non ho tempo di verificarvi la codifica.

Link al commento
Condividi su altri siti

Guardi...io non l'ho trovata l'esposizione di tanzilli. So soltanto che ci resta il programma ed abbiamo terminato un lavoro stremante (vi mandiamo una foto e scriveremo nella relazione finale della vostra gentile collaborazione :P )

Attualmente, sembra mancarci SOLO questo ritardo di 1 secondo...ma non ne abbiamo davvero idea di come sia visivamente il programma. Può essere quello che abbiam scritto precedentemente?

Se può aiutarci ancora, la ringraziamo in anticipo.

andreansr125...come puoi notare, ci mancano alcuni accorgimenti finali. Appena terminato, prometto che io personalmente, cercherò di spiegarti come abbiamo lavorato.

Attendo risposte :P

Link al commento
Condividi su altri siti

PIC by examples

Questo è il link; ragazze 2 minuti con google :P Si scarica il file zippato da cui si estrae il pdf

guardate il capitolo specifico per timer

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

salve a tutti...

ho visto il prog, è tutto in ASM.. non potreste usare un compilatore tipo CCS (compilatore C)? con quello la routine di ritardo c'è nelle built-in functions..

:rolleyes: scusate l'intromissione :o

Link al commento
Condividi su altri siti

Ora che abbiamo il programma, non si sa per quale misterioso motivo, torna a darci l'errore precedente...

"errore all'indirizzo ooooh"

Stiamo stremate...non è possibile, ci dice sempre male! :(

Link al commento
Condividi su altri siti

Simons figurati...ma quale intromissione...qui dobbiamo riuscire a risolvere questi problemi...ogni aiuto è buono, nessuna intromissione, anzi...son bene accetti tutti i consigli e per questo ti ringraziamo...ma attualmente ci sono priorità maggiori...ovvero...NON SI RIPROGRAMMA :(

Link al commento
Condividi su altri siti

avete provato a prendere un altro pic? forse c'è la protezione sul codice.. allora in quel caso dovete prenderne un altro...

comunque le impostazioni di icprog nella pagina hardware come sono?

i fuses come sono messi? la porta com è quella giusta? l'IO delay a quanto è ? usate il JDM come programmatore?

Link al commento
Condividi su altri siti

Di pic ne abbiam provati TRE!!! Due ricomperati nuovi, uno ce lo ha dato il professore. Non sappiamo cosa sia la protezione sul codice...

Le impostazioni nella pagina hardware sono le seguenti:

Com 1 - I/O diretto (selezionato)...tutto il resto non spuntanto - I fuses durante la programmazione sono tutti NON spuntati (non usiamo ne WDT ne PWRT ne CP (cosi ci è stato detto...non sappiamo) - La porta disponibile mi dà soltanto la Com 1 (anche perchè dietro il mio pc, e anche a quello di claudia cè SOLO una possibilita di inserirlo) - I/O Delay è a 10 di Default - JDM è il singolo programmatore per PIC giusto? (abbiamo usato sia quello che l'altro con la pila da 9V con la possibilita di programmare anche EEPROM e EPROM se non erro)

.!

Link al commento
Condividi su altri siti

ok anche io ho quel programmatore e di solito funziona.. prova a mettere l'IO delay a 4.. controllate che la batteria sia carica e che magari non si sia staccata qualche saldatura sul programmatore...

sto facendo ipotesi :ph34r: non so di preciso come mai faccia a quel modo :o

Link al commento
Condividi su altri siti

Ne abbiam provati 3 di programmatori...tutti con saldature staccate?

Niente neanche con I/O Delay a 4...

:(

Non ci abbandonare...AIUTACI...al costo di vederci e programmarlo!!!

Puo essere la versione di Ic-Prog? (1.05D col drive per XP inserito) oppure può essere che essendo sbagliato qualcosa nel programma Ic-Prog si rifiuti di leggerlo? Possibile che qualcuno ce l'abbia con noi? (anche le mie sono ipotesi...non so piu che dire)

Link al commento
Condividi su altri siti

uhm avete un altro programma che sia più corto come codice da provare? perchè per esempio per alcuni programmi che erano un po' "pesanti" ci voleva di più e alcune volte non funzionava il programmatore...

fate un programmino cavolata e provate a programmare

:) per ora non vi abbandono ma tra un po' mi sa che andrò a letto che ho da studiare per la maturità :ph34r:

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