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
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
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
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
#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?
@ 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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.