Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Pic16f84 E Rs232


Messaggi consigliati

Inserito:

Ho realizzato il circuito descritto nel tutorial di Tanzilli per comunicare tra PC e pic16f84 tramite rs232.

Ho caricato il programma RS232IO.asm nel pic e tutto funziona perfettamente come descritto dall'autore.

Il problema è che non riesco a capire alcuni passi del programma e precisamente la parte iniziale:

BIT_DELAY equ 23 ;Bit delay a 9600 bps

; MACRO - Delay subroutine with watch dog timer clearing

;

; VALUE: Delay obtained = ((VALUE-1)*4+5)*(1/(Fosc/4))

DELAY MACRO VALUE

LOCAL REDO

movlw VALUE

movwf TmpRegister

REDO

clrwdt ;Clear watch dog timer

decfsz TmpRegister,F

goto REDO

ENDM

Questo passo mi è completamente oscuro. Capisco che con questa macro si intende creare un ritardo della durata di un bit, ma non capisco il metodo utilizzato.

Altra cosa, la routine usa il watch dog timer, ma come mai che il programma funziona ugualmente sia che nella configuration word sia settato o no il bit rispettivo? Anche in fase di programmazione ho provato entrambi i casi, a settarlo o no in ICPROG ed il risultato non cambia: il programma funziona lo stesso.

Sarò molto grato a chi vorrà darmi una risposta.

Saluti

Gariel


Inserita:

Ciao Gabriel,

Questa routine di ritardo non e'altro che un loop legato alla variabile TmpRegister.

In questa variabile viene caricato un valore e nel loop viene decrementato , quando arriva a zero si esce dal loop e si continua il programma .

Il Watch Dog , e' un contatore indipendente che , come dice il nome, controlla il funzionamento del pic.

Quando il WD arriva a 255 esegue un reset del pic, per questo che durante loop o in parti del programma lunghe di deve resettare questo contatore prima che arrivi a 255 usando l'istruzione clrwdt.

Il WD si usa nel caso che per un tuo errore di programma o per un disturbo esterno il programma si blocca in un punto indefinito non passando piu per l'istruzione clrwdt , allora il WD arrivera a 255 resettando il pic .

Quindi ai fini della programmazione abilitato o no , non cambia il funzionamento.

Inserita:

Mi hai chiarito il dubbio sul watch dog. Il settaggio o no del bit relativo avrà effetto solo in caso di blocco del programma. Per quanto riguarda il resto è la sintassi della macro un po' oscura ma il concetto è chiaro.

Grazie per la spiegazione.

Saluti Gariel

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