Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Invio di 2 varibali tipo byte a due shift register

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto UtenteAgatino » 7 mar 2016, 12:53

Buongiorno.

Volevo chiedere una informazione. Devo inviare il valore di due variabili di tipo Byte (A e B) a due shift register di tipo 74HC595. Utilizzo Arduino UNO rev3

Volevo utilizzare questa istruzione per l'invio dei dati:

shiftOut(pinOut1, DataClock, LSBFIRST, A);

L'invio della variabile A e di B non è consecutivo. In alcuni casi devo inviare una sola variabile (A o B) e in altri casi devo inviare A e B consecutivamente.

Siccome sto un po a corto di in/out disponibili, volevo chiedervi se era possibile utilizzare come pin di clock un pin unico in comune tra i due shift register e ovviamente due pin distinti per l'invio dei dati.

Grazie mille
Avatar utente
Foto UtenteAgatino
109 1 5
Frequentatore
Frequentatore
 
Messaggi: 167
Iscritto il: 26 mar 2010, 10:36

1
voti

[2] Re: Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto UtenteTardoFreak » 7 mar 2016, 14:32

Gli HC595 li puoi mettere in cascata in modo da ottenere uno shift register lungo a piacere (in multipli di otto bit).
- I clock (pin 11) tutti insieme, ovviamente.
- Il serial out di uno (pin 9) nel serial in del successivo (pin 14)
- Master Reset (pin 9) a 1, altrimenti nonti funziona
- Output Enable (pin 13) a 0 altrimenti niente uscite.
- Storage Clock (pin 12) lo mandi a 1 quando hai finito il caricamento e subito dopo lo riporti a 0. Un impulso piccolo a piacere >25ns.
In questo modo ti ritrovi con una linea di clock, una linea di dati ed una linea per trasferire il contenuto dei registri a scorrimento dentro i buffer di uscita.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto UtenteAgatino » 8 mar 2016, 9:50

grazie HattoriHanzo.

Volevo chiederti un'altra cosa: con la modalità che mi hai indicato (in cascata) sono costretto ogni volta ad inviare sempre la sequenza delle due varibili ai register anche se ad esempio è cambiata solo una delle due. Queste varibili a loro volta mi vanno a comandare lo stato fisico di alcuni scambi (fermodellismo).
Per la precisione ogni variabile comanda 4 scambi. ogni coppia di bit della variabile rappresenta lo stato di uno scambio. I valori consentiti per ogni coppia sono 10 oppure 01 (in pratica mi indicano quale delle due bobine dello scambio devo andare ad attivare). Detto questo ritornando al nostro discorso, ritrasmettendo tutto l'intero pacchetto (A e B) sono costretto a dover "rieseguire" l'attivazione delle bobine del gruppo B anche se queste non hanno subito variazione e già sono nella loro posizione (nell'ipotesi che sia variata solo A).
Questo non è che comporta un "problema". era solo per evitare di sollecitare inutilmente la bobina.
Perciò avevo chiesto se era possibile inviare i dati in modo separatato ai due register mettendo in comune il clock (o anche altro se possibile)

grazie ancora.
Avatar utente
Foto UtenteAgatino
109 1 5
Frequentatore
Frequentatore
 
Messaggi: 167
Iscritto il: 26 mar 2010, 10:36

0
voti

[4] Re: Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto UtenteTardoFreak » 8 mar 2016, 11:59

Non comporta nessun problema. Se un'uscita è già alta non subirà variazioni, neanche per pochi ns.
Ho appena finito di cablare un'attrezzatura di collaudo che usa questo sistema: il microcontrollore contiene nella sua FLASH tutta la procedura di self test ma non ha abbastanza I/O. Ho usato questi integrati per le uscite e gli HC165 per gli ingressi e così sono riuscito ad avere tutti gli I/O necessari per l'autotest.
Ovviamente questi I/O sono disponibili solo se la scheda da collaudare è collegata all'attrezzatura di collaudo. Ovviamente ho realizzato unsistema per far si che la scheda si accorga di avere l'attrezzatura collegata.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto UtenteAgatino » 9 mar 2016, 21:08

ok. grazie per la risposta. farò delle prove perché proprio oggi sono arrivati gli shift register.

Gia che mi trovo volevo farti una domanda. Sarà pure banale ma a quest'ora mi si sono "incartate le cervella" e sicuramente la soluzione ce l'ho davanti ma non riesco a trovarla:

come detto fino ad ora io ho delle variabili di tipo byte. supponiamo ad esempio che una di queste abbia il seguente valore:

10101001

devo per esempio impostare la seconda coppia di valori (valori in rosso) con 01 lasciando gli altri invariati indipendentemente dal valore che possono assumere.

Risultato finale: 10011001

Quale istruzione devo scrivere a livello di codice nello sketch?

grazie mille.
Avatar utente
Foto UtenteAgatino
109 1 5
Frequentatore
Frequentatore
 
Messaggi: 167
Iscritto il: 26 mar 2010, 10:36

0
voti

[6] Re: Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto UtenteTardoFreak » 9 mar 2016, 23:05

Non ne ho la più pallida idea.
Non uso arduino.
Di solito ho qualche pin di I/O disponibile e scrivo una SPI software.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[7] Re: Invio di 2 varibali tipo byte a due shift register

Messaggioda Foto Utentecarloc » 9 mar 2016, 23:28

Agatino ha scritto:... I valori consentiti per ogni coppia sono 10 oppure 01....

:-k se questo è vero davvero :D non ti servono due bit per ogni scambio :D ... te ne basta uno solo ed un semplice inverter :ok: :ok:

A meno che invece tu non debba tenere le due bobine normalmente off 00, per dare un breve impulso 01 o 10 per cambiare direzione...
Se ti serve il valore di beta: hai sbagliato il progetto!
Avatar utente
Foto Utentecarloc
33,8k 6 11 13
G.Master EY
G.Master EY
 
Messaggi: 2153
Iscritto il: 7 set 2010, 19:23


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti