Gariel Inserito: 19 maggio 2004 Segnala Share Inserito: 19 maggio 2004 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 TmpRegisterREDO clrwdt ;Clear watch dog timer decfsz TmpRegister,F goto REDO ENDMQuesto 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.SalutiGariel Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 19 maggio 2004 Segnala Share Inserita: 19 maggio 2004 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. Link al commento Condividi su altri siti More sharing options...
Gariel Inserita: 20 maggio 2004 Autore Segnala Share Inserita: 20 maggio 2004 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 Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora