Forum: Mikrocontroller und Digitale Elektronik Switching Waveforms


von Johnny S. (sgt_johnny)


Angehängte Dateien:

Lesenswert?

Anbei ein Screen aus einem Datenblatt

Es handelt sich um ein Shift register von Microchip

Ich habe mir nun die Switching Waveforms so angeschaut, und da kommt mir 
jetz die Frage.

Die Data-IN sind während CLK high ist, überkreuzt.

Wenn ich also in meinem Code CLK high setze, wird danach ein 
Signalwechsel auf DATA IN erwartet? oder wird beim setzen von CLK low 
der aktuelle zustand genommen?


Muss der Code so aussehen:
1
if (x = 1) {digitalWrite(DATA,0)};  //Signal vorbereiten
2
if (x = 0) {digitalWrite(DATA,1)};
3
digitalWrite(CLK,1);  //Clock  high
4
if (x = 1) {digitalWrite(DATA,1)};  //Signalwechsel
5
if (x = 0) {digitalWrite(DATA,0)};
6
digitalWrite(CLK,0);

oder genügt
1
digitalWrite(DATA,x); //Signalpin setzen 
2
digitalWrite(CLK,1); //Clock high
3
digitalWrite(CLK,0);

von Dietrich L. (dietrichl)


Lesenswert?

Johnny S. schrieb:
> Wenn ich also in meinem Code CLK high setze, wird danach ein
> Signalwechsel auf DATA IN erwartet?

Nein, dann darf sich DATA IN ändern, muss aber nicht.

> oder wird beim setzen von CLK low
> der aktuelle zustand genommen?

Ja. Dabei gilt für
- tsu = Set-up-Zeit und
- th = Hold-Zeit:
DATA IN darf sich in diesem Zeitfenster vor bzw. nach der negativen 
CLK-Flanke nicht ändern.

Gruß Dietrich

: Bearbeitet durch User
von Johnny S. (sgt_johnny)


Lesenswert?

und wie sind diese Zeiten?

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Johnny S. schrieb:
> und wie sind diese Zeiten?
Dazu ist eben das Datasheet gut. Lese es aufmerksam.
Gruß Öletronika

von Johnny S. (sgt_johnny)


Lesenswert?

U. M. schrieb:
> Hallo,
>> Johnny S. schrieb:
>> und wie sind diese Zeiten?
> Dazu ist eben das Datasheet gut. Lese es aufmerksam.
> Gruß Öletronika

habe es gefunden, tsu ist 25ns,  und th ist 10ns

dann muss ich also im Code wartezeiten von min. diesen Werten einbauen?

Etwa so?
1
digitalWrite(DATA,x); //Signalpin setzen 
2
digitalWrite(CLK,1); //Clock high
3
delay(50ns);
4
digitalWrite(CLK,0);
5
delay(20ns);

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

Johnny S. schrieb:
> habe es gefunden, tsu ist 25ns,  und th ist 10ns
>
> dann muss ich also im Code wartezeiten von min. diesen Werten einbauen?

Im Prinzip ja. Aber wahrscheinlich reicht die Befehlsverarbeitungszeit 
zwischen DATA In ausgeben und CLK auf Low schalten aus (Du wirst ja wohl 
keinen GHz-Prozessor verwenden;-)).
Nur DATA IN ausgeben und CLK auf Low schalten in einem Maschinenbefehl 
darf man nicht machen.

Gruß Dietrich

von Johnny S. (sgt_johnny)


Lesenswert?

Stimmt, nein verwende einen 32MhZ Prozessor, da sollte es tatsächlich 
reichen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.