Pavia
Offline
Newbie
Karma: 0
Posts: 25
|
 |
« on: September 26, 2011, 12:38:19 pm » |
Buonasera, Avrei una domanda da porvi, Sul sito di arduino http://www.arduino.cc/en/Reference/PortManipulation che scritto che e consigliato non modificare i pin 0 e 1 Tx Rx. Mi potete spiegare il perché? Il sito consiglia di usare " DDRD= DDRD |B11111110; " che cosa cambia rispetto a " DDRD= B11111110; " ?(Perché non vengono modificati i pin relativi a TX RX?) C'è un modo sicuro di settare la tutta la portD ? Vi ringrazio per la risposta.
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 161
Posts: 15707
+39 349 2158303
|
 |
« Reply #1 on: September 26, 2011, 12:55:51 pm » |
Se modifichi i Pin 0 e 1 non funziona piú la comunicazione attraverso la USB. La differenza tra " DDRD= DDRD |B11111110; " e " DDRD= B11111110; " é che la prima versione lascia l' ultimo bit invariato mentre l' ultimo bit a zero. Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Pavia
Offline
Newbie
Karma: 0
Posts: 25
|
 |
« Reply #2 on: September 26, 2011, 01:07:44 pm » |
La ringrazio per la sua risposta, velocissima  . pensavo di leggere le risposte domani tornato da lavoro.  Quindi DDRD= DDRD |B11111111; se scrivo in questo modo l'ultimo Bit rimane invariato lo stesso? Come sono di default i pin TX Rx? Posso settarli tutte le volte con valori uguali al default?
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 161
Posts: 15707
+39 349 2158303
|
 |
« Reply #3 on: September 26, 2011, 01:18:26 pm » |
Che formalitá, prego mi dia del TU. Il | fa un or di ciascun bit col correspondente.
DDRD= DDRD |B11111111; mette tutti i bit a 1.
Non so come sono messi i bit dei pin 0 e 1 visto che la seriale é implementato in hardware. Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Pavia
Offline
Newbie
Karma: 0
Posts: 25
|
 |
« Reply #4 on: September 26, 2011, 01:28:15 pm » |
Quindi come è consigliabile scrivere (senza interferire con la seriale) se io voglio per esempio mettere in Input i Pin 2-3-4 e in Out 5-6-7 del digitale? DDRD = ..... Grazie.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 82
Posts: 8212
:(){:|:&};:
|
 |
« Reply #5 on: September 26, 2011, 01:34:02 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Pavia
Offline
Newbie
Karma: 0
Posts: 25
|
 |
« Reply #6 on: September 26, 2011, 02:59:18 pm » |
Ciao, Grazie per le risposte, ho capito. L'operatore OR lascia invariato il valore del Bit dove é presente 0. MI spiego,
OR DDRD | Valore da inserire Risulato 0 0 0 <----- Condizioni che ci interessano 0 1 1 1 0 1 <----- Condizioni che ci interessano 1 1 1
La dove il "valore da inserire" è = 0 il risultato è uguale a DDRD. Quindi ES: out i Pin 2-3-4 e in in 5-6-7 del digitale lasciando invariato i pin 0 e 1 DDRD= DDRD | B0001 1100; Il settaggio di IN vengono settati correttamente perché Arduino di default e in input = 0; E giusto quello che ho detto? Vi ringrazio ancora per le risposte
|
|
|
|
|
Logged
|
|
|
|
|
Milano
Offline
Sr. Member
Karma: 1
Posts: 401
|
 |
« Reply #7 on: September 26, 2011, 03:10:05 pm » |
Ciao, Grazie per le risposte, ho capito. L'operatore OR lascia invariato il valore del Bit dove é presente 0. MI spiego,
OR DDRD | Valore da inserire Risulato 0 0 0 <----- Condizioni che ci interessano 0 1 1 1 0 1 <----- Condizioni che ci interessano 1 1 1
La dove il "valore da inserire" è = 0 il risultato è uguale a DDRD. Quindi ES: out i Pin 2-3-4 e in in 5-6-7 del digitale lasciando invariato i pin 0 e 1 DDRD= DDRD | B0001 1100; Il settaggio di IN vengono settati correttamente perché Arduino di default e in input = 0; E giusto quello che ho detto? Vi ringrazio ancora per le risposte
Per chi come me non ha capito neanche una virgola di questo post....  a parte che dovremmo studiare ecc... ma... mi chiedevo... in soldoni... Applicato ad un semepio pratico, cosa vi siete detti?  (pura curiosità)
|
|
|
|
|
Logged
|
.
|
|
|
|
0
Offline
Tesla Member
Karma: 82
Posts: 8212
:(){:|:&};:
|
 |
« Reply #8 on: September 26, 2011, 03:17:38 pm » |
Ciao, Grazie per le risposte, ho capito. L'operatore OR lascia invariato il valore del Bit dove é presente 0. MI spiego,
OR DDRD | Valore da inserire Risulato 0 0 0 <----- Condizioni che ci interessano 0 1 1 1 0 1 <----- Condizioni che ci interessano 1 1 1
La dove il "valore da inserire" è = 0 il risultato è uguale a DDRD. Quindi ES: out i Pin 2-3-4 e in in 5-6-7 del digitale lasciando invariato i pin 0 e 1 DDRD= DDRD | B0001 1100; Il settaggio di IN vengono settati correttamente perché Arduino di default e in input = 0; E giusto quello che ho detto? Vi ringrazio ancora per le risposte
esattamente, al contrario se vuoi mettere dei bit a 0, allora devi usare la ^ Per chi come me non ha capito neanche una virgola di questo post....  a parte che dovremmo studiare ecc... ma... mi chiedevo... in soldoni... Applicato ad un semepio pratico, cosa vi siete detti?  (pura curiosità) in parole povere, come cambiare il valore di uno o più bit lasciando gli altri invariati (i registri sono ad 8 bit)
|
|
|
|
|
Logged
|
|
|
|
|
Milano
Offline
Sr. Member
Karma: 1
Posts: 401
|
 |
« Reply #9 on: September 26, 2011, 03:28:48 pm » |
in parole povere, come cambiare il valore di uno o più bit lasciando gli altri invariati (i registri sono ad 8 bit)
eh vabbeh... prima o poi (speroprima) inizierò a capirci qualcosa! grazie comunque! 
|
|
|
|
|
Logged
|
.
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3918
Arduino rocks
|
 |
« Reply #10 on: September 26, 2011, 03:31:30 pm » |
X crash Su arduino siamo abituato a ragionare sul singolo pin', dimenticandoci che cmq di base chi sono le porte composte da 8 pin. Anche i pin della seriale fanno parte di una porta. Cerca info su un contatore binario e probabilmente troverai l' uso delle porte e capitato meglio
|
|
|
|
|
Logged
|
|
|
|
|
Milano
Offline
Sr. Member
Karma: 1
Posts: 401
|
 |
« Reply #11 on: September 26, 2011, 03:32:02 pm » |
X crash Su arduino siamo abituato a ragionare sul singolo pin', dimenticandoci che cmq di base chi sono le porte composte da 8 pin. Anche i pin della seriale fanno parte di una porta. Cerca info su un contatore binario e probabilmente troverai l' uso delle porte e capitato meglio
La storia delle porte 8 pin già mi ha placato il neurone... C'E' ANCORA SPERANZA!!!!!!!!!!  Thx ora cerco.. domani studio!
|
|
|
|
|
Logged
|
.
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16460
Don't know what I do
|
 |
« Reply #12 on: September 26, 2011, 05:18:07 pm » |
Alt... c'è scritto di non modificare i pin 0 e 1 se tu stai usando la seriale per comunicare con altri dispositivi, perché interferiresti con tale processo. Altrimenti quelli sono pin come gli altri, usabili per l'I/O. Il sito consiglia di usare " DDRD= DDRD |B11111110; " che cosa cambia rispetto a " DDRD= B11111110; " ?(Perché non vengono modificati i pin relativi a TX RX?) C'è un modo sicuro di settare la tutta la portD ?
Alt di nuovo  Se si vogliono impostare tutti i bit come output senza toccare i pin 0 e 1, devi dare: DDRD = DDRD | B11111100;  Il tuo esempio è sempre riportato in quella pagina ma "sets Arduino pins 1 to 7 as outputs, pin 0 as input", ossia imposta i pin 1-7 come output ed il pin 0 come input. Attento perché un 1 al posto di uno 0 fa la differenza.
|
|
|
|
|
Logged
|
|
|
|
|
|