Hallo...
Also der Code schreibt seriell 16bit (aCmd) auf eine Datenleitung (SDI)
und liest gleichzeitig, was auf der eingehenden Leitung entsprechend des
Taktes (SCK) reinkommt.
Schritt für Schritt heißt das:
0. Lokale Variablen werden deklariert. ( Zeile 1 und 2)
1. Die ChipSelect Leitung und die Clock-Leitung werden auf LOW gezogen.
(Zeile 3 und 4).
2. Eintritt in die for-Schleife, welche 16 mal durchlaufen wird. Dabei
wird im ersten Schritt eine Null von rechts in die Variable temp
gezogen. Liegt jetzt auf der eingehenden Leitung eine 1, also HIGH an,
wird dieser Wert in die Variable temp geschrieben, bzw. nur das
entsprechende Bit gesetzt.
3. Die Clock-Leitung wird auf LOW gezogen ( im ersten Schritt noch
unsinnig, nachher aber schon wichtig. ) Mit der folgenden if-Abfrage
wird dann entsprechend was im "aCmd" steht, genauer an der letzten
(linken) Bitposition, auf die SDI Leitung angelegt.
4. Mit HI_SCK(); wird jetzt der Clock auf HIGH gezogen, um dem Empfänger
ein anliegendes Datenbit zu signalisieren. Zum Schluss wird noch das zu
schreibende Kommando nach links gezogen. Jetzt liegt also das ehemals
vorletzte Bit an der ganz linken Stelle für die weitere Verarbeitung im
nächsten Schritt.
Das alles wird 16 mal gemacht und anschließend der ChipSelect wieder
aufgehoben und der gelesene Wert, welcher in der Variable temp steht
zurückgegeben.
Gruß,
Striebel