PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere 74HC595 und 74HC165 kaskadieren.



blackfield
02.01.2011, 17:38
Die Frage ist eigentlich ganz simpel:

Kann ich mehrere 165er und 595er kaskadieren? Ich weiß das es problemlos mit einem von beiden geht aber nicht ob beides funktioniert. Ich brauch hauptsächlich Eingänge also mehr 165er als 595er.

Ich muss in etwa 70 Taster abfragen. Da zum Teil mehrere Taster gleichzeitig abgefragt werden müssen fällt eine Matrix raus. Zeitgleich müssen einige Taster über Status LEDs verfügen. Die trifft allerdings nur auf ca 20 Taster zu.

Das ganze hängt an einem AT Mega32, vorerst zumindest.
Schaff ich das überhaupt zeitgleich oder ist die Verzögerung deutlich spürbar?

hardware.bas
02.01.2011, 18:08
Eine Verzögerung ist bei Tastern auf Grund der Entprellnotwendigkeit
sogar erwünscht. VG Micha

blackfield
02.01.2011, 18:43
In welchem zeitlichen Rahmen bewegt sich diese Verzögerung?

hardware.bas
02.01.2011, 22:47
Das sind wenige Millisekunden. Dafür gibts in BASCOM den Befehl debounce.
Wenn man jedoch eh Zeitschleifen - aus welchen Gründen auch immer -
laufen lassen muss, kann man diesen Umstand fürs Entprellen nutzen.
Beispiel: eine "Abfrageschleife" läuft alle Millisekunde über mehrere
Ports, wo Tastenzustände ausgelesen werden müssen. Dann wird eine
Variable drübergelegt und eine Taste wird meinetwegen erst nach
einem Dutzend Durchläufe hintereinander als "betätigt" dedektiert.
Sicher gibts noch andere Möglichkeiten, ich will damit nur andeuten,
daß dieser vermeintliche Nachteil zum Vorteil genutzt werden kann.
VG Micha

blackfield
02.01.2011, 23:16
Danke schonmal für den Hinweis. Jetzt müsst ich nurnoch wissen wies mit dem kaskadieren aussieht.

Besserwessi
02.01.2011, 23:56
Das kaskadieren funktioniert, auch an für Ein- Ausgänge gleichzeitig. Man muss aber beim HC595 und vermutlich auch dem HC165 mit der Leiterführung etwas aufpassen. Die sind etwas empfindlich gegen Störungen oder Verzögerungen beim Takt, weil alles an einer Flanke passiert.

blackfield
03.01.2011, 00:40
Danke schonmal. Wenn ich über ISP programmier muss ich Widerstände vor die Register setzten sonst machen die mir da Probleme oder? Dachte das ich das so mal wo gelesen hätte.

Besserwessi
03.01.2011, 09:58
Für die ISP Verbindung sollte man einen Widerstand in der Leitung der HC165 zum µC haben. Die anderen Leitungen sind für die Schieberegister Eingänge und stören normal nicht weiter. Eventuell wäre ein Pulldown für den Ausgabetakt der 595 sinnvoll, damit da keine wildes Blinken bei der Programmierung ankommt.

Dadurch das die CLK Leitung relativ lang ist, steigt die Gefahr das es auf der Leitung zu überschwingern kommt. Wenn die Leitung mehr als etwa 20 cm lang wird, wäre eventuell eine Terminierung (z.B. RC Glied 100 Ohm, 220 pF) am Ende, also am letzten der Schieberegister sinnvoll.

blackfield
03.01.2011, 13:19
Also müsste ich wenn ich Eingangs und Ausgangsregister nutz einen Widerstand zwischen MISO und µC und MOSI und µC. Der Terminator muss dann zwischen CLK und GND wenn ich mich richtig entsinne.

Besserwessi
03.01.2011, 17:20
Es reicht ein Widerstand, in der Leitung vom HC165. Die Terminierung muss man ggf probieren - also erstmal auf der Platine vorsehen, damit man es bei Bedarf bestücken kann. Das RC Glied vom CLK nach GND, und am Ende der Leitung. Je nach ISP Programmer geht es auch ohne besser.

blackfield
03.01.2011, 17:25
Das RC Glied könnte man ja dann per Jumper einbinden.

Danke schonmal für die Hilfe, aktuell steht ein viel banaleres Problem im weg: Das Platinenlayout

blackfield
06.01.2011, 20:00
Jetzt mal ne ganz blöde Frage: Ist es besser die Taster gegen GND oder gegen VCC zu schalten?

PICture
06.01.2011, 20:52
Hallo!

Auf eine ganz blöde Frage kenne ich hoffentlich entsprechend blöde Antwort. :)

MfG



VCC
+
|
+----+ VCC 10n (positive
| | + T Flanke
.-. .-. | --- || aktiv)
1M | | | | 1k +--o o--+-||-+--> Takt-Pin
| | | | | || |
T '-' '-' .-. .-.
--- | || | 1M | | | | 1k
+--o o--+-||-+--> Takt-Pin | | | |
| || (negative '-' '-'
=== Flanke | |
GND 10n akiv) === ===
GND GND

(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

hardware.bas
06.01.2011, 20:54
Technisch wurscht, jedoch praktisch besser, die Taster gegen GND, denn
man hat GND meistens immer in der Nähe, ev. Kurzschlussgefahr ist
geringer und man kann die internen PullUp nutzen, welche in den
meisten Chips aktiviert werden können. VG Micha

blackfield
06.01.2011, 21:37
Danke dafür. Irgendwo klar, ist ja beim AVR nicht anders. Gegen GND schalten macht dann natürlich Sinn.

Besserwessi
07.01.2011, 11:09
Auch wenn mehrere Tasten gleichzeitig gedrückt werden, kann man eine Matrix zur abfrage nutzen. Man muss dann nur zu jeder Taste eine Diode in Reihe schalten.

hardware.bas
07.01.2011, 12:05
Mein Vorschlag, die Tasten gegen GND zu schalten, gilt natürlich nur,
wenn man ohne Matrix auskommen kann. Ganz klar. VG Micha

blackfield
07.01.2011, 13:37
Ich muss sogar ohne Matrix auskommen da ich mehrere Taster zur selben Zeit betätige. Das wär zawr mit einer Matrix möglich, der Schaltungsaufwand aber ungleich höher.

hardware.bas
07.01.2011, 14:44
Atmega 32 hat der nicht 4X8, also 32 Portpins?
Da musste man doch mit links relativ einfach eine Matrix hinbekommen!
Vg Micha

blackfield
07.01.2011, 14:55
Ja aber um mehrere Tasten gleichzeitig abzufragen muss man Sperrdioden einsetzen was die Schaltung wieder komplizierter macht. Da ist der Aufwand mit Schieberegistern ein geringerer.

Besserwessi
07.01.2011, 15:51
Der Aufwand für Dioden zu den Tastern und als Matrix ist eher weniger als mit Schieberegistern und Pullupwiderständen. Bei den Schieberegistern wird man wohl je Taster einen Pullup brauchen, es sei dann man findet noch alte 74LS165 oder 74165.
Bei der Matrixlösung könnte man z.B. 8 Leitungen mit den LEDs gemeinsam nutzen und braucht dann nur noch 9 Eingänge, ggf. mit Pullups - wenn man da nicht direkt den µC nutzen kann.

hardware.bas
07.01.2011, 15:57
2 Byteports für die Zeilen und 1 Byteport für die Spalten je nach
Sichtweise. Resultat in diesem Beispiel = 128 mögliche Tasten.
Warum nicht sogar einen kompletten Atmega16 nur für die
Tastarmatrix nehmen. Warscheinlich billiger, als die ursprüngliche
Lösung. VG Micha

blackfield
07.01.2011, 16:27
Du meinst die Abfrage über einen eigenen µC laufen lassen und dann an einen anderen zB ATmega 32 per I2C schicken?

EDIT: Schreibfehler beseitigt

hardware.bas
07.01.2011, 18:07
Ja genau! Meistens ziehen die AVRs weniger Strom, sind insgesamt auch
nicht teuerer und man kann wesentlich kreativer sein. Das man die
Leistungsmerkmale warscheinlich nur zum Teil nutzt, ist doch kein Problem.
Kleines Beispiel meinerseits: Ich hatte vor, einen Datenlogger zu bauen
und wollte für die Anzeige 4 Portpins und einen 74SN47-Decoderschaltkreis
nutzen. Da der 74SN47 für batteriebetriebene Geräte zuviel Strom
aufnimmt, habe ich drauf versichtet und lieber einen grösseren AVR
genommen und die 7 Pinports für die Anzeige direkt angesteuert.
Zukünftig hätte ich keine Hemmungen, alle Decoder o.ä. Anwendungen
über extra AVRs zu machen. Billiger, stromsparender, kreativer.
Das nur als Beispiel. VG Micha

blackfield
07.01.2011, 18:12
Würde sich anbieten. Hab hier eh noch zwei mega32. Dann hät ich gleich auch noch mehr AD -Wandler und PWM Kanäle. Strom ist insoweit kein Problem, mehr wie 125 Ampere sollte es halt nicht ziehn ;) Spaß beiseite, das ganze wird über einen Endstufenringkerntransformator versorgt. Eine Rail liefert 12 Volt die andere 22 Volt. Die 22 Volt werden wohl für die Beleuchtung drauf gehn.

Was würdet ihr für einen Quarz nehmen? Der interne soll ja nicht so stabil vom Takt her sein.

Besserwessi
07.01.2011, 19:56
Wenn der interne Takt ausreicht, hat der durchaus auch Vorteile. Da der Talt nicht dauernd extern anliegt hat man oft weniger Störungen. Sinnvoll ist ein Quarz wenn man die UART nutzt, oder eine Genau Zeitmessung braucht (z.B. für Uhr. Vieles anders geht auch ohne. Für so einen Controller zur Tastenauswertung sollte der interne Takt reichen. Für I2C bzw. TWI wird kein genauer Takt benötigt. Je nach Umfang ggf. auch noch was kleineres wie Mega48.

hardware.bas
08.01.2011, 13:15
Quarz ist immer gut für den Central-AVR. Beim Nutzen der AVRs für
o.g. Pereipheriezwecke jedoch nicht nötig. VG Micha