Ein oder mehr Bytes BITWEISE ausgeben ?

Gast #177310
Lesenswert?

Hi,

also es geht um die Ansteuerung von einem (eigentlich mehreren
kaskadierten) Schieberegister(n).

Ich müsste ja irgendwie immer das BIT 0 eines zb. 32bit langen Wertes
(bei 4 Schieberegistern) abfragen, je nach Value den Data-Ausgang High
oder Low schalten (... einen Clock Impuls generieren ... ) und danach
den Wert eins nach rechts schieben und dann wieder von vorne.

Aber wie geht das in C ?

Wäre echt super wenn mir das jemand erklären könnte! Hab echt alles
abgesucht aber nichts gefunden :/

cu
Gast #177311
Lesenswert?

for (i=0; i<datenlänge; i++)
{
  if (daten&(8000>>(datenlänge-i)))  //0x80 bei 8bit, 0x8000 bei 16
bit, etc
  { PINxy=1 }
  else
  { PINxy=0 }
}

So oder so ähnlich müsste es funktionieren, habs aber nicht
nachgeprüft.
Gast #177312
Lesenswert?

#define BYTE_LENGHT 8
char i, byte_var;
byte_var= 149; //daten

for(i=0;i<BYTE_LENGHT)
{
     Pin_xy = ((byte_var >> i)&1);
}

glaub so geht es auch (auch nciht nachgeprüft)
muss zugeben, dass ich das Beispiel von Harry Dyck nicht so ganz
verstehe. jetzt 0x8000, oder 8000?
Gast #177314
Lesenswert?

0x8000 natürlich, war ein Vertipper.
Das Prinzip ist eigentlich ganz einfach, man vergleicht den
auszugebenden Wert mit einer binären 1000000...,(zB 0x80 = 10000000B)
wobei man die eins jedes mal eins weiter nach rechts schiebt. Wenn der
Wert (binär gelesen) an der Stelle, wo die Eins steht auch eine 1 hat,
wird der entsprechende PIN auf 1 gesetzt, ansonsten auf 0.
Im Prinzip das Gleiche, wie bei dir tubbu, nur etwas asuführlicher.
Gast #177316
Lesenswert?

Hallo,

danke euch - dachte mir schon dass ich das so in der art machen muss
;)

hardware spi - naja ich muss ja mehrere "geräte" (später noch eine
mmc und vl ein display) so ansteuern und da bietet es sich ja an
einfach verschiedene ports zu nehmen und das ganze "software"
technisch zu realisieren. außer einem geschwindigkeitzuwachs würde mir
hw spi doch auch nichts bringen oder liege ich da falsch ?
Gast #177317
Lesenswert?

> außer einem geschwindigkeitzuwachs würde mir hw spi doch auch nichts
> bringen oder liege ich da falsch ?

Ist eben alles bereits vorgegossen.  Mehrere Geräte per SPI steuert
man in der Regel damit an, daß jeder SPI-Slave sein eigenens `chip
select' hat, das dann von einem anderen Portpin aus angesteuert wird.
Nur der angesprochene Slave reagiert dann auf die Impulse.  Sowas
müßtest Du eigentlich auch mit Deinem Schieberegister hinbekommen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren