Hallo, ich möchte einen 74HC595 an den SPI Port meines ATMega8 hängen, da ich nichtmehr genug ausgangspins zur Verfügung habe. Soweit in Ordnung. Allerdings habe ich am SPI Bus schon einen 10bit DAC. Von den Ausgabetimings her wären beide gleichzeitig dran kein problem, allerdings hab der 74HC595 ja keine ChipSelect Leitung. Ich könnte SRCLR dazu verwenden, nur würden dann die Registerinhalte gelöscht, was aber nicht sein darf. Die Stati sollten bis zum nächsten 'schieben' gehalten werden. Spontan würde ich das mit einem Transistor lösen, der die beiden Taktleitungen als CS einfach abtrennt (SRCLK und RCLK wollte ich sowieso zusammennehmen an SCK). Kriege ich das aber evtl. irgendwie ohne zusätzliche Hardware hin?
Ephraim Hahn schrieb:
> allerdings hab der 74HC595 ja keine ChipSelect Leitung.
Doch, das RCLK arbeitet quasi als Chip select.
Wenn Du es nicht taktest, werden die Daten ignoriert.
Erst die 1-0 Flanke am Ende übernimmt.
Und genauso übernimmt der DAC mit der 1-0 Flanke des /CS am Ende.
Peter
@ Ephraim Hahn (ephi) >allerdings hab der 74HC595 ja keine ChipSelect Leitung. Indirekt doch. Die RCLK LEitung. > Ich könnte SRCLR >dazu verwenden, nein. >Taktleitungen als CS einfach abtrennt (SRCLK und RCLK wollte ich sowieso >zusammennehmen an SCK). Nicht serh sinnvoll. SRCLK wird normal mit SCK verbunden, RCLK ist dein CS. >Kriege ich das aber evtl. irgendwie ohne zusätzliche Hardware hin? Siehe oben und AVR-Tutorial: Schieberegister MFG Falk
pin 12 kennst du aber schon? nachtrag: da war ich ja viel zu langsam...
nungut, dann hab ich da wohl was falsch verstanden. Ich mache es nun so:
1 | void sw_output(uint8_t data) |
2 | {
|
3 | SW_PORT |= (1<<SW_CS); |
4 | spi_send(data); |
5 | SW_PORT &= ~(1<<SW_CS); |
6 | }
|
SW_CS ist die RCLK Leitung. spi_send sendet einfach ein byte mit 2Mhz SPI Clock raus. Irgendwie tut sich aber nix an den Ausgängen des '595. Ist das noch ein verständnisfehler, oder sonstwas? So wie ich das datenblatt verstehe, übernimmt der die anliegenden Daten ja blos bei steigender RCLK flanke, also kann obiges ja nicht gehen, aber wie mach ich das dann? OE hab ich auf GND und SRCLR auf Vcc gelegt. SER an MOSI und SRCLK an SCK. STromversorgung ist ebenfalls korrekt.
Ephraim Hahn schrieb: > So wie ich das datenblatt verstehe, übernimmt der die anliegenden Daten > ja blos bei steigender RCLK flanke, also kann obiges ja nicht gehen, die frage ist, welches wohin du meinst. es gibt 2...
@ Ephraim Hahn (ephi) >SPI Clock raus. Irgendwie tut sich aber nix an den Ausgängen des '595. Was logisch ist. CS muss am ANFANG LOW und nach der Übertragung HIGH sein. >OE hab ich auf GND und SRCLR auf Vcc gelegt. SER an MOSI und SRCLK an >SCK. STromversorgung ist ebenfalls korrekt. Siehe auch http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Aufbau MfG Falk
mein beitrag oben gibt recht wenig sinn... daher: die frage ist, wohin die daten übernommen werden. und dafür gibt es 2 möglichkeiten. der von falk (erneut) verlinkte artikel beschreibt es echt gut.
okay, ich habs mir nochmal genauer angeschaut. Jetzt hab ich den Baustein endlich vollständig verstanden. Es funktioniert soweit auch prima. Danke Euch!
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.