mikrocontroller.net

Forum: Compiler & IDEs Ein oder mehr Bytes BITWEISE ausgeben ?


Autor: hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harry Dyck (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tubbu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hardware-SPI wäre das Stichwort für mich hier.

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tubbu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aso, verstehe, ich schiebe den wert selbst, du den vergleichswert
Alles klar ;-)

Autor: hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.