Forum: Mikrocontroller und Digitale Elektronik SPI Konfiguration für CD4021 Kommunikation


von Alex (Gast)


Lesenswert?

Moin,

ich möchte einen CD4021BCM ansteuern. Leider sind die gefunden 
Datenblätter mehr als dürftig. Kann mir jemand verraten, wie ich die SPI 
beim Controller konfigurieren muss (Polartität, welche Flanke stellt die 
Daten bereit und Speed)?

Danke, Alex

von Michael U. (amiga)


Lesenswert?

Hallo,

verstehe ich jetzt nicht: die Wahrheitstabelle im Datenblatt ist doch 
eindeutig, mit der steigenden Flanke wird übernommen.
Maximum Clock steht auch eindeutig drin; mindestens 2,5MHz, typisch 
3,5MHz bei 5V Vdd.

Wo liegt Dein Problem?

Gruß aus Berlin
Michael

von Spess53 (Gast)


Lesenswert?

Hi

Das wollte ich auch gerade sagen. Allerdings würde mich interessieren, 
was du damit machen willst. Das Teil hat zwar 8 Paralleleingänge ,aber 
nur 3 Ausgänge.

MfG Spess

von Alex (Gast)


Lesenswert?

Hi,

Hab jetzt ein gescheites Datenblatt von Fairchild aufgetan, da stand's 
dann drin. Trotzdem lese ich nicht das aus, was am Paralleleingang 
anliegt.
Habe acht Statuseingänge und möchte die auf einen Ritt einlesen.

Quellcode sieht so aus:

PORTB |= (1<<OPT_CE);
wait_10us(1);
PORTB &= ~(1<<OPT_CE);
wait_10us(10);
SPDR = 0x00;
while(!(SPSR & (1<<SPIF)));
i = SPDR;
itoa(i, tmp_str, 10);
lcd_clr();
lcd_puts(tmp_str);

Aber für i beomme ich immer 255.
Bin echt am Grübeln.

Gruß, Alex

von Joan P. (joan)


Lesenswert?

#1.. da weiter oben jemand sagte, dass /SCK_minimal 2,5MHz ist.. läuft 
dein AVR mit 5MHz..7MHz und ist die SPI auf F_sck = F_osc/2 eingestellt?

#2.. Alle Leitungen richtig geschaltet? /MISO (Eingang, PullUP an), 
/MOSI (Ausgang), /SEL (Ausgang), /SCK (Ausgang)

#3.. wie lautet der Auslese-Befehl von dem Chip? '0x00' wird's 100% 
nicht sein ;)

#4.. wozu dient das?
1
PORTB |= (1<<OPT_CE);
2
wait_10us(1);

#5.. ist das zweite 'wait 10µs' wegen dem Chip?

von Alex (Gast)


Lesenswert?

@ Joan

zu #1: fck = f_cpu/8 bei 14,7456 MHz

zu #2: ja alle Leitungen sicher richtig angeschlossen, weil das Gerät 
mit anderer Software lief, nun soll eine andere Anwendung implementiert 
werden (vorher Assembler, habe versucht, die asm - Routine in C 
umzuschreiben, Ergebnis s.o.)

zu #3: wenn ich das Datenblatt richtig verstanden habe, hat der Chip 
keinen seriellen Eingang, sondern nur Seriellen Datenausgang. Bei CS 0 
=> 1 werden die Paralleleingänge gelesen, bei CS = 0 und Clock am 
Clockeingang wird seriell rausgeschoben.

Bitte korrigiere mich, falls ich daneben liege.

zu #5: PORTB |= (1<<OPT_CE); setzt den CS Eingang auf high 
(Datenübernahme)
OPT_CE, weil am Paralleleingang Optokoppler angeschlossen sind. Stimmt, 
hätte ich erwähnen müssen.
10us nur zur Sicherheit, zwischen CS = 0 und dem ersten Clock des SPI


Gruß, Alex

von Joan P. (joan)


Lesenswert?

Hm..

Wahrscheinlich erzähl ich jetzt Mist, aber ich interpretier die Tabelle 
auf Seite 1 
(http://pdf1.alldatasheet.com/datasheet-pdf/view/173169/FAIRCHILD/CD4021BCM.html)
so:

Parallel/Serial Control HIGH (Zeile 1 bis 4).. alles beweglich, die 
Zustände im Inneren des Chips (Qn) entsprechen den Eingängen.. was 
Serial Input oder CLK erzählt interessiert keinen.

Wenn man nun Parallel/Serial Control auf LOW legt und nen CLK dazugibt 
(unterste Zeile), kommt am Q8 Ausgang bei jeder fallenden Flanke eins 
von den im inneren gespeicherten Zuständen Qn (8 Bits) rausgepurzelt.. 
an Q7 oder Q6 halt nur 7 oder 6 'Bits'.

Desweiteren sieht es für mich so aus, als ob das Teil bei steigender 
Flanke von CLK in dem 'Parallel/Serial Control auf LOW'-Modus zusätzlich 
noch die Bits reinnimmt, die auf Serial-Input liegen..

Dh. P/SC auf LOW und dann mit SPI-Mode 3 und LSB first einlesen, oder?

Grüsse
Joan

von Alexander H. (ill_son)


Lesenswert?

Morgen,

ich hab mir das Datenblatt von Fairchild besorgt. Die Tabelle hab ich 
nur kurz überflogen (Asche auf mein Haupt), aber auf Seite 1 steht das 
von mir oben zitierte. Gruß, Alex

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.