Shift Registers an Arduino / ATTiny85

Hallo,

ich habe seid langem eine enge Verbindung zum ATTiny und speziell dem 85er.
Beim aufräumen sind mir dann ein 74HC164 (8Bit) und 74HC194(4Bit) vor die Füße gefallen und da wollte ich mal fragen, ob man die mit dem ATTiny85 gebrauchen kann, denn als ich danach suchte bekam ich nur Ergebnisse für den 74HC595 (müsste 8Bit sein) und da habe ich mich gefragt, ob man nicht die beiden gefundenen mal mit den ATTinys verbinden kann. Und wenn nicht, ob dass mit anderen ATTinys geht, denn ich finde die toll, die sind klein und billig.

Ich habe auch schon mal mit einem 74HC164 zusammen mit meinem UNO gearbeitet, der war in dem Kit dabei aber noch nie mit dem 74HC194 und da wollte ich mal fragen ob das auch klappt.

Vielen Lieben Dank schon einmal für Antworten oder so :wink:

~Hubble

Die sind nicht gut geeignet. Das 74HC164 hat das große Problem, dass es keine Latches hat, d.h. was man durchschiebt erscheint sofort auf den Ausgangs-Pins.

Das 74HC194 ist bidirektional, d.h. es hat sowohl parallele Eingänge als auch Ausgänge. Aber es hat ebenfalls keine Latches. Für Eingänge (parallel-in/serial-out) kann man es verwenden.

SR ohne Latches sind ok für Ausgänge z.B. bei gemultiplexten Anzeigen, wo man noch Transistoren hat die die Zeilen ausschalten können. Ansonsten flackert es wenn man Daten durchschiebt. Und für Relais o.ä. taugen sie auch nichts.

Kenn jetzt nur den hc164. Serenfly hat es bereits angesprochen. Hier werden die internen Register direkt auf die Ausgänge beschrieben.
Für Led Anwendung ist sowas vollkommen ausreichend, da die Zeit, das du das Leuchten wahrnehmen kannst, zu gering ist.

Habe zwar selber den ein oder anderen Attiny25/45/85, jedoch werden die selten eingesetzt. Der Preis ist gut. Würde die Shiftregister in eine Box legen und ab damit in den Keller. Habe gerade deine Seite gesehen nach dem ich nach den 194er gesucht hab. (P.S. Die Schrift macht Augenkrebs 8) )

Die Teile kosten bei ebay ~50c. Wenn SOIC sogar noch weniger. Hab mir da letztens 100 Stk geordert für ~17c aus Deutschland. Nutze selber aber lieber die Attiny841 (nicht 84 !!). Gibt es aber nicht als DIP. Vorteil sind zwei UART Schnittstellen. Sind aber in Deutschland nur schwer und wenn dann viel zu teuer zu bekommen. Hab mir die direkt aus Amerika bestellt (Lieferzeit 2 Tage). Man muss aber schon eine Menge bei Mouser ordern, damit die Versandkosten (~20$ !?) wegfallen.

Die Größte Anzahl an SR lag aber derzeit nur bei 6 Registern. Mehr habe ich noch nicht getestet. Waren sehr viele Steckbrücken :wink: Es sollte auch die Ansteuerung über die Hardware und nicht nur Software möglich sein. Hier bin ich aber noch am austesten.

Ok vielen Dank für die Antworten.
Kann man damit also nur "Basic"-Porterweiterungen für schlichte Schaltungen machen? So habe ich dass jetzt verstanden.
Ich hatte damit eher was anderes vor deswegen einmal 2 Fragen:

  1. Gibt es bessere Alternativen - Porterweiterer bzw Shift Register oder auch bei ATTinys

2)Kann man mit einem Shiftregister nur digitale Pins erweitern oder geht das mit analogen auch?
-> Meine Idee war es, auch wenn sich das dumm anhört, an einen ATTiny einen (oder wenn mehr Pins durch anderes Modell) Shift Register anzubauen für ein Projekt, an dem ich gerade bastel.

Bis dato gute Nacht,
~Hubble

Das 74HC595 ist das Standard SIPO Register

Es gibt I2C Port Expander (PCF8574), aber die Tinys haben keine richtige I2C Schnittstelle, aber man könnte das wahrscheinlich mit USI machen. Da gibt es Libraries wie TinyWireM:
http://playground.arduino.cc/Code/USIi2c

Kann man mit einem Shiftregister nur digitale Pins erweitern oder geht das mit analogen auch?

Dafür brauchst du Analog-Multiplexer. z.B. 74HC4051 oder 74HC4067

Hubble_Pixel:
Ok vielen Dank für die Antworten.
Kann man damit also nur "Basic"-Porterweiterungen für schlichte Schaltungen machen? So habe ich dass jetzt verstanden.
Ich hatte damit eher was anderes vor deswegen einmal 2 Fragen:

  1. Gibt es bessere Alternativen - Porterweiterer bzw Shift Register oder auch bei ATTinys

Die 74HC595 sind soweit ganz gut. Bessere Alternativen kann man nicht sagen. Sind halt auch in avr-gcc relativ einfach aufgebaut, bzw werden einfach angesteuert.

I2C Portexpander fallen für den Attiny weg. Der hat kein I2C und könnte somit nur über Software I2C bewerkstelligt ohne MultiMasterI2C.

Hubble_Pixel:
2)Kann man mit einem Shiftregister nur digitale Pins erweitern oder geht das mit analogen auch?
-> Meine Idee war es, auch wenn sich das dumm anhört, an einen ATTiny einen (oder wenn mehr Pins durch anderes Modell) Shift Register anzubauen für ein Projekt, an dem ich gerade bastel.

Bis dato gute Nacht,
~Hubble

Analog geht darüber nicht direkt. Kann aber bis auf der Due und Zero(?) (könnte ich morgen mal nachschauen) kein Arduino. Was du sicher meinst ist PWM. Das geht auch mit den Schieberegistern. Ich weiß aber nicht ob die elcojacobs' ShiftPWM kompatibel mit dem Attiny ist. Könnte aber klappen. Ansonsten mit einem Timer selber aufbauen. Hier wird auch nichts anderes gemacht, als in einer Bruchteilsekunde die Ausgänge mehrmals je nach PWM Wert ein und auszuschalten.
Falls die ShiftPWM nicht unterstütz wird, kann ich morgen mal meine Version in avr-gcc reinstellen. Die sollte das abdecken. Wirkt aber relativ komplex, für jemanden der nur die C Sprache vom Arduino kennt.

Die Attinys haben USI:
http://www.mikrocontroller.net/articles/USI

Man braucht etwas Software um die I2C oder SPI Funktionalität zu implementieren, aber es schon Hardware

Multimaster geht dennoch nicht. Wobei es in diesem Fall nicht das Problem sein wird, da der Attiny der einzige Master sein wird.

Auch vielen Dank für die anderen Antworten.

Ich habe mir die TinyWireM und TinyWireS Bibliothek jetzt einmal angeschaut.
Darin wird gesagt, dass eine 7-Bit Adresse angegeben werden muss. Da ich mich leider mit Adressen nicht so genau auskenne wollte ich einmal fragen, woher man die bekommt, also ob die fest vergeben sind oder wie man die berechnet oder herausfindet.

Dann habe ich noch eine Frage, da ja das Basis-C von Arduino und das avr-C angesprochen wurde. Ist es dann eigentlich nicht sparsamer, wenn man direkt mit avr den Code auf den Tiny bringt (also über ISP) und nicht die Arduino IDE mitnimmt, denn ich nehme an, dass diese nicht so sparsam ist?

LG,
~Hubble

Dann habe ich noch eine Frage, da ja das Basis-C von Arduino und das avr-C angesprochen wurde. Ist es dann eigentlich nicht sparsamer, wenn man direkt mit avr den Code auf den Tiny bringt (also über ISP) und nicht die Arduino IDE mitnimmt, denn ich nehme an, dass diese nicht so sparsam ist?

Über ISP musst du doch sowieso den Attiny flashen. Sparsamer wird es nur, wenn man diverse optimierungen vornimmt. Hierbei spielt es fast keine Rolle, ob man die Arduino libs oder avr-gcc zu Rate zieht. Wenn du Abseits von Arduino programmieren willst, wird es deutlich schwerer, da du dich dann von dem typischen Libarys verabschieden kannst, die die meiste Arbeit machen.

Ja das mit den Bibliotheken stimmt wohl :smiley: Die können einem immer alles gute abnehmen.

Ich hatte nämlich von jemandem den Vorschlag bekommen mir die kleinen ATTinys mal zu nutzen (ATTiny13 und noch kleiner). Die haben allerdings auch nur 1 kb Flash oder auch nur einem halben. Würde es sich bei denen denn wenn lohnen, direkt in avr zu programmieren und drauf zuziehen?

Wenn du es ordentlich kann vielleicht. Ansonsten nein.

Aber ich sehe keinen Sinn, zwischen Attiny13 und 85 zu wechseln. Die 85 sind sehr günstig und mit unter bei Reichelt sogar günstiger.

Hubble_Pixel:
Darin wird gesagt, dass eine 7-Bit Adresse angegeben werden muss. Da ich mich leider mit Adressen nicht so genau auskenne wollte ich einmal fragen, woher man die bekommt, also ob die fest vergeben sind oder wie man die berechnet oder herausfindet.

IC Datenblätter durchlesen.
Manchmal sind die Adressen komplett fest. Manchmal sind ein paar Bits fest und den Rest kann man durch Pins am IC selbst festlegen. Dadurch kann man mehrere der selben ICs an einen Bus betreiben.

Wenn man aber beim ATtiny schon zig Port-Erweiterungen hat und das Flash knapp wird, kann man aber vielleicht auch gleich zu einem AVR wechseln... So groß sind die auch wieder nicht.