Vai al contenuto
PLC Forum


A Qualcuno E' Mai Impazzito Un Pic


enrico72

Messaggi consigliati

:blink: Buogiorno a tutti

Volevo chiedervi se a qualcuno di voi e' mai capitato che un pic programmato in assembler apparentemente in maniera corretta, desse dei problemi durante il funzionamento.

Mi spiego meglio una routine che gira bene e poi viene ampliata mi ha dato dei problemi ,il fatto e' che l'ampliamento non ha modificato la routine esistente eppure le rogne sembra che vengano fuori proprio da li cioe' dalla parte che ha sempre girato lo dico con con una "certa certezza" perche' il pic mi finisce in un loop che mi fa identificare una precisa area della routine,ma potrei anche sbagliare perche' non dispongo di un debugger.

Naturalmente per capire il problema bisognerebbe osservare le routine, se a qualcuno di voi interessano potrei inviargliele per darci un occhiata.

Un altra cosa se sono in un ritardo ad esempio

ritardo

movlw 250

movwf reg1

eccetera lungo quando sivoglia

ritloop

btfsc portb,unpinqualsiasi

goto escidalritardo e va a fare un altra cosa

decfsz reg1,1

eccetera

all'andare a 1 del pin in questione non dovrei uscire dal ritardo?

invece succede che dal ritardo non si esce proprio piu' ilpic rimane indefinitamente e non mi fa il return.

Se c'e' qualcuno che appena ha un minutino mi puo spiegare dove sbaglio o cosa ignoro lo pregherei di rispondermi.

grazie.

Link al commento
Condividi su altri siti


ifachsoftware

Non e' detto che con l'aggiunta per esempio scrivi in una zona di memoria usata dall'altra routine o che salti in una zona di programma sbagliata ....

Ciao :)

Link al commento
Condividi su altri siti

Un consiglio che ti posso dare e' di simulare il tuo programma con MPLAB , facendo un animazione potresti vedere se il programma funziona.

Seconda cosa , stai attento di disabilitare il WatchDog quando scrivi il Pic ...

Link al commento
Condividi su altri siti

Prova a mettere in quel loop un istruzione che ti faccia capire se il programma sia andato a finire proprio li.

Per esempio puoi impostare un pin con uscita alta e mettere un led che ti avvisi quando entri in quel pezzo di programma.

ifachsoftware sei chi penso che tu sia????

ciao sono Enzo del corso!!

hai dato un occhiata a quei link che ti ho inviato per posta?

ciao

Link al commento
Condividi su altri siti

Ciao ringrazio gli amici che mi hanno risposto,comunque se qualcuno di loro volesse dare un occhiata alle routine

in assembler che ho scritto ne sarei contento.

Riguardo alla mia domanda su come uscire da un delay(tranne che con un interrupt su rb0 che gia ' lo utilizzo per un altra funzione) sapete dirmi qualcosa?

Enrico

Link al commento
Condividi su altri siti

Che tipo di PIC usi? E' importante perchè nelle versioni con la memoria paginata l'istruzione return o un goto potrebbero portarti in una zona non scritta...

Postami il software indicandomi la zona dove credi di avere il problema, vedo se riesco a debuggarlo con MPLAB nel weekend.

Ciao

Valter

Link al commento
Condividi su altri siti

pallottino_pisa

Il pic "deve" uscire dal ritardo quando la porta va a 1!

Il fatto che non esca puo' essere causato da mille motivi, ma tutti riconducibili a nostri errori.

Vedo che gia' qualcuno si e' offerto di aiutarti, comunque se vuoi posso provare anch'io a darti una mano se mi invii il codice sorgente; anche se ormai da molto tempo uso il c per programmare i Pic, credo e spero di ricordarmi che per molti anni ho usato l'assembler e come fare per debuggare il tuo sorgente.

Se vuoi, io rimango in attesa.

Angelo

P.S. Mi sono appena inscritto al forum, saluto tutti i partecipanti e spero di non creare disturbo a insermi al volo in un tread senza che nessuno mi conosca.

Angelo

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