Forum: Mikrocontroller und Digitale Elektronik 74xx165 und 74xx595 Zusammen? SPI Mode? Porterweiterung


von Lutz (Gast)


Lesenswert?

Wollte wie in dem Beispiel ganz unten im PDF :
http://www.mikrocontroller.net/attachment/1483/SPI_74HC595.pdf
74xx165 und 74xx595 zur Porterweiterung eines Attiny 2313 nutzen da ich 
64 Eingänge und 64 Ausgänge brauchte. Habe nun aber festgestellt das der 
2313 kein Richtiges SPI hat sondern nur USI. Ich habe auch nicht 
herrausgefunden wie ich damit den SPI-Mode zur Laufzeit umstellen kann.

Meine Frage nun hat jemand von euch so eine Art Porterweiterung für 
Eingänge UND Ausgänge schonmal realisiert? Wenn ja , stimmt es das ich 
die clock priorität beim benutzen von beiden Registern umstellen muss?

Wenn das so sein sollte würde ich mir einfach einen µC Kaufen der 
richtiges SPI hat. Und dann folgendes machen.

SPI  mit CPHA=0
Lesen vom 165
SPI mit CPHA=1
Schreiben an 595

Das sollte doch Problemlos an einen ATMega8 laufen oder? Weil da weiss 
ich wie ich zur Laufzeit einfach CPHA umstellen kann.

Wäre echt nett wenn jemand von Euch nen Tip für mich hat.

von (prx) A. K. (prx)


Lesenswert?

SPI-Master zu Fuss ist nicht wirklich kompliziert. Das USI kann man dazu 
zwar auch verdonnern, aber es lohnt kaum.

von Lutz (Gast)


Lesenswert?

Danke erstmal für deine Antwort. Ich muss dazu sagen das ich eigentlich 
totaler Anfänger bin und auch mit Bascom programmiere. Das mit dem SPI 
Master per Software habe ich auch schon gelesen , nur meinte man da das 
sie Geschwindigkeit mit Hard-SPI höher ist.
Und ich denke für 128 i/o über 16 Schieberegister muss das schon 
einigermaßen schnell ablaufen.

Mich würde wirklich interessieren ob das was mit der Clock Priorität im 
oben genannten PDF steht auch so richtig ist.

von (prx) A. K. (prx)


Lesenswert?

Wie schnell Software-SPI beim Bascom ist weiss ich nicht, zumal das dort 
schon fertig in der Lib ist. Probier es aus und schau nach ob schnell 
genug, d.h. wieviel Bytes pro Sekunde du rauskriegst.

von Karl H. (kbuchegg)


Lesenswert?

Lutz schrieb:
> Das mit dem SPI
> Master per Software habe ich auch schon gelesen , nur meinte man da das
> sie Geschwindigkeit mit Hard-SPI höher ist.

Ja klar. Höher ist sie schon. Aber so dramatisch ist das auch wieder 
nicht.

> Und ich denke für 128 i/o über 16 Schieberegister muss das schon
> einigermaßen schnell ablaufen.

Das kommt drauf an, wieviele Updates du in der Sekunde brauchst.
Bei einem mit 8 Mhz getakteten Prozessor sollten so um die 50 Updates in 
der Sekunde (natürlich für alle 128 Ein/Ausgänge) noch problemlos 
machbar sein.

von Lutz (Gast)


Lesenswert?

50 updates würden locker ausreichen , ich denke wenn ich 5 mal in der 
sekunde update wäre das auch ok.

Hast du vieleicht Literatur Tip zum Einlesen?

Macht es einen großen Unterschied ob ich in Bascom oder normal mit C 
programmiere? Hatte jetzt mit Bascom angefangen weil es für mich 
eigentlich gut verständlich war.

von Karl H. (kbuchegg)


Lesenswert?

Lutz schrieb:
> 50 updates würden locker ausreichen , ich denke wenn ich 5 mal in der
> sekunde update wäre das auch ok.

Vergiss aber nicht dem µC ein Fläschen Riechsalz daneben hinzustellen. 
Sonst schläft der in der Zwischenzeit vor Langeweile ein :-)

>
> Hast du vieleicht Literatur Tip zum Einlesen?

Was brauchst du da Literatur?
Aus einem Byte alle 8 Bits, eines nach dem anderen rausklamüsern, auf 
den Portpin legen, bei jedem Bit einemal mit dem Clockpin wackeln und 
fertig ist die Schose. Sind alle Bytes draussen, einmal mit dem 
Übernahmepin wackeln und alle 595 schalten ihre Zustaände nach aussen 
durch.

Für die 165 dann sinngemäss anders rum

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

> Macht es einen großen Unterschied ob ich in Bascom oder normal mit C
> programmiere?

Das Prinzip ist in beiden Sprachen dasselbe. Wie gut dich BASCOM 
unterstützt, wenn es um das extrahieren von einzelnen Bits aus einem 
Byte geht weiß ich nicht. In C ist eine Routine, die ein Byte in 
beschriebener Manier auf 2 µC-Pins ausgibt ein 3 Zeiler.

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.