disturbi pic

Salve!

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'?
Reply to
enzo
Loading thread data ...

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?

ciao!!

Reply to
thunderbird

Ma i pin che cambiano di livello logico, sono impostati esplicitamente come uscite?

Il programma cosa fa?

Marco / iw2nzm

Reply to
Marco Trapanese

Ciao!

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.

Reply to
enzo

Ciao!

il programma e' semplicissimo :

@ device pic12F508, XT_OSC, MCLR_OFF,WDT_OFF,PROTECT_OFF

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:

@ device pic12F508, intrc_OSC, MCLR_OFF,WDT_OFF,PROTECT_OFF

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

Reply to
enzo

"thunderbird" ha scritto nel messaggio news: snipped-for-privacy@thunderbird.thunderbird...

cosa intendi esattamente con giro di massa?

Reply to
GZ

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

e qui:

formatting link

-- ciao Stefano

Reply to
SB

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.