Per chi ha letto i miei post precedenti ha capito che sto giocando con un
12F508, fra le numerose prove ho notato che a parita' di programma il micro risulta meno sensibile ai disturbi usando l'oscillatore interno, mentre usando il solito quarzo a 4 Mhz quando accendo delle lampade al neon le uscite cambiano di stato come se gli ingressi captassero un segnale, ch ene pensate perche' succede cio'?
On 04/12/2006 19.55, * enzo ebbe l'ardire di scrivere:
hai schermato adeguatamente il pic? come e' messo il giro di massa, sono sufficientemente vicini quarzo, condensatori e pic? e le piste che li collegano ? hai collegato a massa il case del quarzo?
il circuito e su basetta millefori (giusto per provare certe cose) il quarzo e' vicinissimo al micro, il case del quarzo non e' collegato al negativo di alimentazione, per me la stranezza resta il fatto che a parita' di hardware non ho problemi con oscillatore interno, usando il quarzo devo modificare il software aggiungendo qualche ritardo sul ingresso usato.
TRISIO = %11111101 ' Configurazione porta gpio1 uscita option_reg.6 = 0 ' pull-up sugli ingressi Define osc 4 ' dichiaro di usare un quarzo a 4 Mhz
Symbol LED0 = GPIO.1 'uscita rele symbol ing0 = GPIO.0 ' ingresso usato
tempo var byte 'variabile per avere il ritardo voluto
Main led0 = 1 if ing0 = 0 then ' il rele' e' eccitato gosub conta ' fino a quando l'ingresso gpi non va a
0 in questo caso salta alla subroutine conta endif goto main
conta tempo = 0 'metto la variabile conta a 0 led0 = 0 ' spengo il rele' for tempo = 0 to 20 ' creo un ciclo pari a 21 cioe' da 0 a 20 tempo = tempo + 1 ' incremento di una unita' fino ad arrivare a
20 pause 1000 'ritardo di 1 secondo next tempo return 'ritorno dalla chiamata di subroutine
end ' fine del programma
se come direttiva uso l'oscillatore interno cioe' se scrivo:
il programma funziona regolarmente ma diventa immune al tipo di disturbo che invece prima con il quarzp dava problemi, comunque anche con il quarzo supero l'ostacolo inserendo un ritardo nella pressione del tasto cioe' l'istruzione precisa che aggiungo e':
Main: led0 = 1 if ing0 = 0 then goto controlla endif goto Main
controlla: pause 500 if ing0 = 0 then goto conta else goto main endif
in pratica controllo se dopo mezzo secondo il tasto e' ancora premuto, in tal caso gli dico di andare alla subroutine conta
Il giorno Mon, 4 Dec 2006 22:18:20 +0100, "enzo" ha scritto:
E' normale che sia così, i fili di colegamento al quarzo sono delle antenne che captano i diturbi in giro facendoi fare errori al micro durante il fetch delle istruzioni.
Se fai un pcb preoccupati di tenere cortissimi i colegamenti e prevedere una zona di 0V ( massa ) li attorno.
Leggi qui:
formatting link
in particolare Figure 11. Crystal or Ceramic Resonator Circuit Layout
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.