SPI 1 bit fehlt

Gast #5505736
Lesenswert?

Hallo,

Es geht um eine SPI Kommunikation zwischen einem pic und einem Ram 
baustein(23lc1024)

Senden funktioniert prima. EMPFANGEN VOM RAM JEDOCH NICHT:

Das Problem ist, dass bei den Werten dir mir an meinem ASCII LCD 
angezeigt werden, das ganze um 1 bit verschoben ist.
Zbsp: Ich sende                 210, 7,  9,100 (dez)
Es wird angezeigt am LCD (dez): 105, 3,132,255 (außer 255 passt nicht)

Schaut man sich das binär an, so ist zu sehen dass jeweils das am LCD um 
ein bit nach rechts verschoben wird.

Da kommt dann natürlich der Gedanke dass etwas an der Polarity und 
Abtastung nicht in Ordnung sei..nunja, ich habe jetzt JEDE einzelne 
Kombi getestet.

Für die nicht Pic kenner :
CKP : clock polarity: 1=idle is high; 0=idle is low
SMP : 1=input data sampled at end of data output; 0= ..at middle..
CKE : 1=serial output changes from active to idle; 0=..from idle to 
active..

Laut DB sollte es sein: CKP=0 / SMP=1 / CKE=1

1)
CKP=0/SMP=1/CKE=1
CKP=0/SMP=0/CKE=1
CKP=1/SMP=0/CKE=1
Bei denen 3 wird das von oben angzeigt(ein bit verschoben). (Oszi steht 
auf steigende Flanken erkennung)
Am Oszi wird das natürlich richtig angezeigt.

2)
CKP=1/SMP=1/CKE=1
CKP=1/SMP=1/CKE=0
Bei denen 2 wird am Oszi bei fallender Flanken erkennung folgendes 
angezeigt:
OSZI (hex): 69, 03, 84, B2
LCD(dez): 105/3/132/191
PASST(außer das letzte)!! Allerdings sind das NICHT die Werte die ich 
reingeschickt habe.

Was mache ich falsch?
Gast #5505754
Lesenswert?

Ich habe alle 8 getestet, nur waren die nicht erwähnenswert.
Zudem habe ich oben geschrieben dass bei richtiger Einstellung(wie im DB 
angegeben), das Schreiben ohne Probleme funktioniert. Nur das LESEN 
nicht.
Gast #5505873
Lesenswert?

Hannes schrieb:

> Ich habe alle 8 getestet, nur waren die nicht erwähnenswert.
> Zudem habe ich oben geschrieben dass bei richtiger Einstellung(wie im DB
> angegeben), das Schreiben ohne Probleme funktioniert. Nur das LESEN
> nicht.

Und wie genau hast du überprüft, dass das Schreiben funktioniert hat? 
Gab es da irgendwelche magischen LEDs auf dem RAM-Baustein, die dir das 
richtige Bitmuster als abgespeichert angezeigt haben?

Mein Gott, wie blöd muss man sein, um den Knackpunkt nicht zu erkennen, 
der hier nämlich ist: Schreiben mit nachfolgendem Lesen läßt bestenfalls 
erkennen, dass entweder beim Schreiben oder beim Lesen etwas schief 
gegangen sein muss, aber nicht, ob das nun beim Schreiben oder beim 
Lesen passiert ist.

Capisce?
Gast #5505891
Lesenswert?

c-hater schrieb:
> Mein Gott, wie blöd muss man sein, um den Knackpunkt nicht zu erkennen,
> der hier nämlich ist: Schreiben mit nachfolgendem Lesen läßt bestenfalls
> erkennen, dass entweder beim Schreiben oder beim Lesen etwas schief
> gegangen sein muss, aber nicht, ob das nun beim Schreiben oder beim
> Lesen passiert ist.

is dir a bissi heiß gell ;)
Gast #5505914
Lesenswert?

c-hater schrieb:
> Mein Gott, wie blöd muss man sein, um den Knackpunkt nicht zu erkennen,
> der hier nämlich ist: Schreiben mit nachfolgendem Lesen läßt bestenfalls
> erkennen, dass entweder beim Schreiben oder beim Lesen etwas schief
> gegangen sein muss, aber nicht, ob das nun beim Schreiben oder beim
> Lesen passiert ist.
>
> Capisce?

Naja, wenn ich an unterschiedlichen Adressen Daten reinschreibe, und mir 
dann später im Programm per Auslesebefehl die Daten an den bestimmten 
Adressen am Oszi anschaue, dann weiß ich dass das Schreiben geklappt 
hat, sonst wären die vorhin geschriebenen Daten  nicht an der 
ausgewählten Adresse!
Gast #5505973
Lesenswert?

zyxw schrieb:

> Auch er hat übersehen, dass beim falschen Schreiben nicht das geschieht,
> was man erwartet. Es passierte bei ihm nämlich gar nichts.

Tss...

Jeder richtige Programmierer weiss: Es gibt leider beliebig viele 
Abstufungen von "falsch". Alle diese Fälle eint nur: sie machen nicht 
vollständig und immer dass, was der Programmierer wollte. Aber eben 
leider oft doch teilweise und/oder meistens. Genau das ist, was 
Fehlersuche so ungeheuer schwer macht...

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