Pages: [1]   Go Down
Author Topic: apprendimento funzione shiftOut()  (Read 788 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao  a tutti!
  Vi espongo il mio quesito:

                      shiftOut(dataPin, clockPin, bitOrder, value)

clockpin:  posso prelevarlo dalla scheda arduino?
              attraverso un programma timer posso collegare il pin di uscita del clock così generato all'ingresso
              di un altro pin che andrò a settare come pin d'ingresso clockpin?

L'inglese lo so bene ,ma manco nel saper programmare a dovere..ringrazio chiunque mi voglia rispondere!

                                    Antonio nel fantastico mondo di Arduino
Logged

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
ho lavorato un pò con shiftout, ma se ho capito bene ti stai confondendo il clock e la cadenza con cui vengono letti i bit in entrata
però anche io sono un neofita, quindi aspetta anche altri suggerimenti

stefano
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21619
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il pin di clock è un pin su cui la funzione shiftOut spedisce il segnale di sincronismo per lo shift register a cui deve spedire il dato. Lo shift register è strutturato in modo che ad ogni segnale di clock ricevuto lo shift register legga un bit.
Puoi anche usare un timer però: 1) devi calcolarti la frequenza giusta; 2) poi la funzione shiftOut così com'è non la puoi più usare dato che essa esegue tutte operazioni di presentazione dei bit sul segnale dei dati, clocca il pin di clock per spedire i singoli bit. Devi rifare tutto a mano.

Quindi, a che ti serve fare tutto ciò se non a complicarti la vita?  smiley-sweat
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao e grazie della delucidazione.
Potresti cortesemente scrivere un esempio di uso di questa funzione?
Il registro a scorrimento menzionato è interno al microcontrollore?
Il mio obbiettivo è scrivere uno sketch avente la seguente logica:

      uscite : n°5 LED collegati dal pin2 al pin7;

     dalla costante intera 17 binaria 10000 eseguo uno scorrimento del bit piu' significativo sino ad arrivare
     a quello meno significativo;

     ogni scorrimento di bit voglio applicare una routime timer per aumentare la durata della stato alto
     di ogni pin ,

Sperando di essere stato chiaro Ti ringrazio anticipatamente del possibile aiuto.
 Ciao!!
                                  Antonio nel fantastico mondi di Arduino

Logged

piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
io mi sono studiato questo

http://arduino.cc/en/Reference/ShiftOut

stefano
Logged


Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

aspetta, ma tu vuoi semplicemente controllare 5 led da arduino. tu hai parlato di shiftout che è cosa ben diversa. con lo shiftout di solito si controlla integrati detti registri a scorrimento. dato un byte inserito in modo seriale nell'ic, esso pilota 8 uscite corrispondneti ognuna a un bit della stringa.
spiegati meglio cosa vuoi fare
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21619
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu hai confuso l'uso della shiftOut che, come ti ha detto Igor, serve per pilotare dei chip esterni detti "registri a scorrimento", o "shift register". Con il link di stefa puoi capire come pilotarli con detto chip e detta funzione.

Se invece vuoi pilotarli direttamente dall'Arduino hai 2 alternative:
1) la funzione digitalWrite, che cambia lo stato di un pin
2) la manipolazione delle porte del microcontrollore (livello avanzato)
Logged


Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

sicuaremente avrai visto il port mapping che si puo dire simile allo shiftout ma si imposta solo un parametro ovvero il byte contenente i valori dei ripettivi pin, ma qui non si parla di clock.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie  a tutti Voi! avendo io una formazione scolastica sullo storico Z80 di Zilog  certi concetti li ricordo bene : nonstante cio' HO BISOGNO DI TUTTI VOI per crescere nel fantastico manda del microcontrollore Arduino.

                               Antonio nel fantastico mondo di Arduino
Logged

Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie  a tutti Voi! avendo io una formazione scolastica sullo storico Z80 di Zilog  certi concetti li ricordo bene : nonstante cio' HO BISOGNO DI TUTTI VOI per crescere nel fantastico manda del microcontrollore Arduino.

                               Antonio nel fantastico mondo di Arduino
noi siamo a disposizione, ma tu devi specificare meglio quello che cerhi. purtroppo sono finiti quei tempi dove c'era uwe con la sua sfera di cristallo, ormai qui o sei chiaro o nessuno ti risponde.
detto ciò cosa vuoi fare di preciso tu? pilotare led da arduino senza altro hardware aggiuntivo? capire come funziona il uControllore?
dicci pure
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 103
Posts: 6572
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il mio obbiettivo è scrivere uno sketch avente la seguente logica:

      uscite : n°5 LED collegati dal pin2 al pin7;

     dalla costante intera 17 binaria 10000 eseguo uno scorrimento del bit piu' significativo sino ad arrivare
     a quello meno significativo;

     ogni scorrimento di bit voglio applicare una routime timer per aumentare la durata della stato alto
     di ogni pin ,

Per accendere consecutivamente i diversi led con diversi intervalli potresti crearti una due array, o uno bidimensionale, dove all'interno registri il numero della porta dove sono connessi i led (che potrebbero essere anche non consecutivi) e l'intervallo di accensione.
Poi crei una funzione accendiled() dove all'interno tramite un contatore e la funzione millis passi in rassegna l'array e accendi il led in sequenza e per il tempo stabilito nell'array.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1]   Go Up
Jump to: