-
-
Hallo,
erstmal danke für Deine schnelle Antwort!
Hier jetzt mal der Code für eine Leseoperation:
unsigned char read ( unsigned char sc)
{
unsigned char i, k, k1, k2, rc, wait;
GIE = FALSE;
//ncs = 0;
for (i = 0; i < 8; i++)
{
if (sc & 0x80)
sdo = 1;
else
sdo = 0;
sc <<= 1;
sck = 1;
for (k = 0; k < 5; k++)
;
sck = 0;
}
GIE = TRUE;
sdo = 0;
for (wait = 0; wait < 20; wait++); //tsrad Zeitverzoegerung
GIE = FALSE;
rc = 0;
for (i = 0; i < 8; i++)
{
sck = 1;
for (k1 = 0; k1 < 2; k1++);
rc <<= 1;
if (sdi)
rc |= 0x01;
sck = 0;
for (k2 = 0; k2 < 30; k2++);
}
GIE = TRUE;
//ncs =1;
return(rc);
}
Das sollte allerdings nicht der Grund für das Problem sein, da hiermit die anderen Register in der Regel fehlerfrei gelesen werden können, aber man kann ja nie wissen. Delays funktionieren noch nicht korrekt, daher die leeren for-Schleifen.
Das mit dem MSB versteht sich ja von selbst, es wäre auch keinen Antwort zurückgekommen, wenn ich es für eine Leseoperation falsch gesetzt hätte.
Du hast das Thema auch in Deiner Diplomarbeit gehabt, oder? Hast Du den Bewegungsregistern irgendeine "besondere Behandlung" zukommen lassen?
Cu
lindwurm
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen