Newsgroup: it.hobby.elettronica.digitale
Titolo: watchdog e compilatori

Salve!
vorrei sapere da voi esperti quale e' la normalita' nei compilatori per far 
fuznionare il watchdog, per la mia limitata esperienza con picabsic pro 
della Melabs basta che si abiliti il fuse del pic durante la compilazione 
per farlo funzionare perhce' di default il compilatore mette l'istruzione 
per resettare il watchdog prevedendo in caso non si voglia che metti 
l'istruzione di azzeramento il comando DEFINE NO_CLRWDT 1, ora cercando di 
far fuznionare un AVR ATTINY2313 ho scaricato il BASCOM-AVR demo, ho fatto 
cose semplicissime ma la cosa che non mi piace per niente e che se si setta 
il watchdog impostando il prescaler (da pochi millisicendi fino a 8 secondi) 
si deve prevedere manualmente il reset watchdog con il comando RESET 
WATCHDOG, quindi si deve calcolare ogni possibilita' durante il progetto ed 
una simile cosa mi sembra  un  problema in piu' per il progettista (basta 
una disattenzione per avere un reset) che una funzionalita' in piu', se poi 
si scrive qualcosa di complesso e dopo si intende usare il watchdog la cosa 
e' ancora piu' complicata.
Premesso quanto sopra quale e' la normalita' nei compilatori per uso del 
watchdog? in contemporanea a queste prove che faccio con il basic, sto 
cercando di imparare i fondamenti del C , mi dite come stanno le cose con i 
principali compilatori per C, sia per i micro della Microchip che per gli 
Atmel? 

Ciao, io mi ricordo che per gli st6 dovevi inserire ogni tanto una 
stringa di ricarica del watchdog che non fosse xò uguale a 256 *1, sennò 
si piantava... una rottura di scatole, ma bastava ricordarselo tipo alla 
fine di ogni subrutine e del programma principale...
*1: i miei professori ci avevano avvisato di non settarlo a 256... una 
volta io e il mio professore di laboratorio ci abbiamo perso 2 settimane 
per capire xké si resettava completamente il programma senza svolgere la 
ben che minima operazione!
-- 
Coccolino delicato


i 2 o 3 compilatori C ( PIC18 - 8051  ) che uso non sanno assolutamente 
niente di watchdog e lasciano al programmatore l'incombenza di usarlo.
d'altro canto se uno vuole utilizzarlo e' meglio farlo con coscienza, 
altrimenti e' perfettamente inutile.
a tal proposito ti faccio un esempio classico di uso maldestro :
organizzare un timer periodico ( usando un altro timer disponibile sul 
micro ) per resettare il watchdog stesso, in questa maniera si corre il 
rischio di trovarsi col timer ed il watchdog funzionante e tutto il 
resto 'bloccato'
e' bene infatti mettere i reset del watchdog nelle sezioni critiche del 
programma ( cicli di attesa e/o sezioni lunghe ) proprio per garantire 
l'effettiva esecuzione del programma stesso

Atmel? 
Con il Gnu hai la  __watchdog_reset();   che non fa altro che mettere
l'istruzione asm WDR in quel punto.
Ma il punto lo devi decidere tu, ed è meglio così.
--
ciao
  Stefano


Anche io ricordo degli st6 (e' stato il primo microcontrollore che ho usato) 
pero' li parliamo di assembler che e' un linguaggio di basso livello, quindi 
bastano un po di contiper capire dove resettare il watchdog, nei compilatori 
ad alto livello come il C e il Basic la cosa diventa piu' complicata, di 
dovrebbe vedere il codice assembler che generano per fare i conti. 

 l'effettiva esecuzione del programma stesso
A tal proposito siccome le prove le ho fatte con un Atmel ATTINY2313, ho 
notato delle stranezze che con i PIC non noto, ad esempio nei PIC anche se 
metto le istruzioni di reset watchdog e durante la programmazione non setto 
il fuse che abilita il watcdog questo ovviamente non funzionera', nell'Atmel 
invece anche se non setto il fuse watchdog su ON pero' metto le istruzioni 
(compilatore Bascom-AVR demo) CONFIG WATCHDOG = 8192 oppure START WATCHDOG 
il timer watchdog sara' attivato, un'altra cosa che non e' chiara sta 
nell'istruzione STOP WATCHDOG che dovrebbe fermare il timer, ma dalle prove 
che ho fatto non ha alcun effetto, chi sa sbaglio io oppure sara' qualche 
bug del compilatore versione 1.11.9.0 

 Tutti i programmi hanno almeno un punto dove passano per forza ogni tanto.
Si ma venendo dal PicBAsicPro credevo ahce anche gli altri prevedevano una 
gestione autoamatica, perche' sta cosa come detto nel messaggio iniziale 
sembra comunque da fare con cautela non si puo' fare alla leggera in special 
modo se il programma e' complesso e magari lo si vuole aggiungere ad un 
progetto fiinito che non lo prevedeva.
Grazie comunque a tutti per le informazioni,