mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 74HC595 mit anderen am SPI


Autor: Ephraim Hahn (ephi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
pin 12 kennst du aber schon?
nachtrag: da war ich ja viel zu langsam...

Autor: Ephraim Hahn (ephi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nungut, dann hab ich da wohl was falsch verstanden.

Ich mache es nun so:
void sw_output(uint8_t data)
{
  SW_PORT |= (1<<SW_CS);
  spi_send(data);
  SW_PORT &= ~(1<<SW_CS);
}

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.

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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-Tutori...

MfG
Falk

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Ephraim Hahn (ephi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay, ich habs mir nochmal genauer angeschaut. Jetzt hab ich den 
Baustein endlich vollständig verstanden. Es funktioniert soweit auch 
prima.

Danke Euch!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.