Newsgroup: it.hobby.elettronica.digitale
Titolo: Strano comportamento 16F874

Salve,
Ho programmato un PIC16F874 per comandare, tra varie altre cose, otto
display tramite un MAX7221, cosa che ho già fatto altre volte.
Per testare se il pcb era ok, ho scritto un piccolo pgm di test che manda un
numero sui display e lo incrementa ogni 0.1 sec.
Ora ecco il problema; su dieci o più volte che accendo:
1 volta tutto ok (mai la prima)
1 volta i display visualizzano un altro numero, pur incrementandolo
8 volte i display visualizzano tutti i segmenti alla massima luminisità cioè
tutti 8 fissi.
I display sono divisi in due gruppi di 4 ed il numero è di 4 cifre scritto
su amdue i gruppi e si incrementano le unità.
Ho provato a:
-Cambiare il processore,
-Sostituire il quanzo
-Ridisegnare in modo completamente diverso il PCB utilizzando un 16F873,
l'unica cosa che è rimasta sempre la stessa è l'alimentazione che è fatta
con un trafo da 12-0-12 un LM7812/7912->LM7805/7905 in cascata. E' possibile
che sia l'alimentazione che passando prima dalla scheda del pic poi a quella
del display, quest'ultima può assorbire fino a 500 mA, possa inficiare
sull'inizializzazione del processore?
Ringrazio e saluto
-- 
****************************************************************************
***********
Ci sono 10 categorie di persone: chi conosce il linguaggio binario e chi no.
wolf125
www.wolf125.da.ru
****************************************************************************
***********

 ***********
ha provato a vedere se MAX7221 ha un output enable o un reset suo ...ora mi
spiego al boot
il micro si trova in condizione tristate con le porte e il MAX7221 non
risulta comandato dal micro quindi i dati che tu vedi non sono altro che
sporcizie o i dati precedenti che rimangono tamponati finche la tensione di
alimentazione non scende fino a 0v ora io non ho sottomano il pdf del max ma
se c'è un pin tipo output enable io ci metterei un gruppo rc per ritardare
il comando (tipo quello che si usa sul reset del pic) ma con un tau (r*c)
piu alto
probabilmente ora tale pin e direttamente collegato a +V..ciao Gip
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 probabilmente ora tale pin e direttamente collegato a +V..ciao Gip
Ti ringrazio anzitutto per la risposta, il MAX7221 ha il classico CS ed
un'uscita DOUT dove riproduce i DIN un po' piu' tardi, nessun pin di enable
se si eccettua il CS. Ho utilizzato nel PGM la funzione SPI, abbassando e
rilzando il CS  ad ogni ciclo di 16 bit, ma nisba. Le altre volte usavo due
uscite RB e inviavo il bit ed il clock singolarmente ed ha sempre funzionato
perfettamente. Ho ridisegnato l'alimentatore utilizzando uno stabilizzatore
da 3A (non si sa mai), cambio le porte e modifico il PGM, poi si vedrà...
Ciao
-- 


CS ed enable sono la stessa cosa in questo caso. Prova a prendere un pin del
pic e utilizzarlo per comandare il CS del MAX e vedrai che risolvi tutto.
Ciao,
  Mad

 pic e utilizzarlo per comandare il CS del MAX e vedrai che risolvi tutto.
Questo lo so....infatti se non usi il CS non funzionerebbe mai, e non solo
alcune volte.
La routine di invio dei bytes in modo SPI gira più o meno cosi':
- mette in OFF il pin del CS del device interessato (inizio trasmissione)
- invia primo byte
- invia secondo byte
- mette in ON il CS (fine trasmissione)
L'ho fatto altre volte ed è sempre funzionato tutto. Sul mio sito c'è un pre
HT comandato da un 16F874 che utilizza 4 chips di controllo digitale del
volume, un max7221, switch digitali, ed altro tutti con lo stesso protocollo
di comunicazione, cioè clock e data in comune (seriali) e CS paralleli.
Questa volta, quando alimento il tutto,  alcune volte tutto OK, altre volte
no. E non risco a capire perchè. All'inizio pensavo che fosse dovuto ad un
calo di tensione in quanto i display assorbono quasi mezzo ampere, ma questo
non è. Ora comincio a pensare che dipenda dal protocollo SPI che è la prima
volta che uso.
