Pages: [1]   Go Down
Author Topic: ShiftOut diversa  (Read 360 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Volevo paragonare la velocita tra la ShiftOut della libreria di Arduino con una semplice scritta da me, ma quest'ultima non funziona. In particolare questo blocco non va:

mask=B10000000;
   for (n=0;n<=7;n++)
      {
      valBit=valByte & mask;
      if (valBit!=0)
         digitalWrite(pinData,HIGH);
      else
         digitalWrite(pinData,LOW);
      delay(1);
      digitalWrite(pinClock,HIGH);
      delay(1);
      digitalWrite(pinClock,LOW);
      delay(1);
      //digitalWrite(pinData,LOW);
      mask=mask>>1;
      }
Logged

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

Intanto io toglierei i delay, non credo ti servano. Le operazioni di digitalWrite portano via già del tempo di suo, dovrebbe essere sufficiente.
Poi metti il controllo nel for a n<8.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi rispondo: la routine anche senza i delay e' corretta. Ma funziona solo se definisco mask come int e non come char.
giorgio
Logged

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

Il tipo "char" è un byte che contiene anche il segno. Prova ad usare il tipo "byte", che è un unsigned char.
Logged


Pages: [1]   Go Up
Jump to: