Hallo, ich suche nach einer Möglichkeit, eine Menge Drehencoder mit je 1 LED-Kranz anzusteuern. Ich benutze eine fertige DIY-Software, die (eine leider recht begrenzte Zahl) Schieberegister verwendet. Also muss ich den LED-Kranz codieren - für 63 LEDs brauche ich dann nur noch 8Bit, da er sich wie ein Bargraph verhalten soll (mit 63 LEDs zeigt man 64 verschiedene Werte an, keine Lücken). ||||||||||----- |||||---------- ||||||||||||||| Da kam mir die Idee, einen kleinen uC, etwa nen atmega als I/O Porterweiterung zu gebrauchen, der dann genau für einen Encoder+Kranz zuständig wäre. Er müsste bei einer Latch-Clock-Flanke 1 Byte aus dem seriellen Datenstrom aufnehmen (LEDs) und 1 Byte in den seriellen Datenstrom zurückgeben (Encoderwerte) Die Idee: - die LEDs werden gemultiplext (8x8... vllt auch nur 31=8x4) - Encoder+Taster werden gepollt, entprellt und die Daten hübsch aufbereitet (in 1 Byte ist ja viel Platz für Flanken- und Statusbits) Wenn ich das mit diskreten ICs mache, brauch ich viel Platz auf der Platine, bin weniger flexibel und es ist nur unwesentlich günstiger (595 sind teuer!) Da ich so etwas noch nie gemacht habe bleiben zwei Fragen: 1. Später möchte ich eine stattliche Zahl solcher Encoder verbauen (vllt 32?). Also brauche ich eine stattliche Zahl solcher Atmegas, die alle mit demselben Programm laufen. Wie kann ich die also alle programmieren? Von JTAG habe ich viel Schlechtes gehört und außerdem unterstützt das mein recht exotisches Programmerkabel nicht. Gibt es vielleicht eine TQFP-Fassung, in der man die atmegas vor dem Verlöten programmieren kann? Oder muss ich dafür die DIL-Version + Fassungen verwenden? Ich möchte am Ende nicht alle Nase lang Programmierpfostenleisten aus meiner Platine herausstehen haben. 2. Hier laufen 2 Uhren. Der Takt des Mastergeräts muss nicht zwingend mit dem meines atmegas übereinstimmen - vor allem, wenn ich interne Oszillatoren verwende. Wie stelle ich die Synchronisierung sicher? Kann ich darauf vertrauen, dass das SPI des Atmegas im Slave-Betrieb keine Fehler macht? Wäre schade, wenn da ein paar Bits verschluckt würden. Die Frage ist warscheinlich doof und die Sache, die ich hier machen möchte absoluter Standard. Aber ich muss erst meine Platine layouten bevor ich mit Testen (=Erfahrung sammeln) anfangen kann. Da wäre es schon wichtig zu wissen, wie ich das verdrahten muss, dass es sicher läuft (und va. ob ich einen externen oszillator brauche).
A. S. schrieb: > 595 > sind teuer wo kaufst du die denn? http://www.tme.eu/de/details/74hc595d/ttl-logik-schaltkreise/nxp/# < 14ct ab 25+ Da bekommst du 25 STück für deinen Mega16.
der mega16 kostet beim R 2,75... ich habe gerade sogar gesehen, dass ich auch auf nen mega8 hin komme. Den gibt's für 1,55. Aber wenn ich das nicht mit uC mache, brauche ich noch eine diskrete Schaltung zur Dekodierung der Werte 0000 0000 = 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 = 1000 0000 0000 0000 0000 0000 0000 0000 0000 0010 = 1100 0000 0000 0000 0000 0000 0000 0000 0000 0011 = 1110 0000 0000 0000 0000 0000 0000 0000 0000 0100 = 1111 0000 0000 0000 0000 0000 0000 0000 ... Wenn du dafür eine günstige Lösung hast, melde dich. Abgesehen davon kommen noch die Eingänge dazu... Und die Gefahr beim Löten etwas zu verhauen ist bei einem Chip deutlich geringer als bei 5. hat jemand eine Antwort zu der Frage, die ich eigentlich gestellt hatte?
A. S. schrieb: > Da ich so etwas noch nie gemacht habe bleiben zwei Fragen: > > 1. Später möchte ich eine stattliche Zahl solcher Encoder verbauen (vllt > 32?). Also brauche ich eine stattliche Zahl solcher Atmegas, die alle > mit demselben Programm laufen. Wie kann ich die also alle programmieren? > Von JTAG habe ich viel Schlechtes gehört und außerdem unterstützt das > mein recht exotisches Programmerkabel nicht. > Gibt es vielleicht eine TQFP-Fassung, in der man die atmegas vor dem > Verlöten programmieren kann? Oder muss ich dafür die DIL-Version + > Fassungen verwenden? Ich möchte am Ende nicht alle Nase lang > Programmierpfostenleisten aus meiner Platine herausstehen haben. Na ja. Gibt ja auch noch andere Lösungen. Zum Beispiel 5 Pads am Platinenrand auf die man eine Art Wäscheklammer aufsetzt, auf der die Gegenstücke sind und die den Kontakt zum Programmer herstellen. Ich glaub bei Hannes wars, bei dem ich mal einen improvisierten Stecker sah, gefertigt aus Stiftleisten und der direkt auf den µC gesteckt wird und so die Kontakte herstellt. Und zur Not: 5 Kabel kurzfristig an strategischen Punkten auf der Platine anlöten, den µC programmieren, kurz antesten, Kabel ablöten. Bei 32 Platinen geht das noch. > 2. Hier laufen 2 Uhren. Der Takt des Mastergeräts muss nicht zwingend > mit dem meines atmegas übereinstimmen - vor allem, wenn ich interne > Oszillatoren verwende. Wie stelle ich die Synchronisierung sicher? Kann > ich darauf vertrauen, dass das SPI des Atmegas im Slave-Betrieb keine > Fehler macht? Wäre schade, wenn da ein paar Bits verschluckt würden. Das klappt schon. Die SPI im ATMega ist im Grunde ja auch nichts anderes als ein Schieberegister. Genau wie dein 595. > möchte absoluter Standard. Aber ich muss erst meine Platine layouten > bevor ich mit Testen (=Erfahrung sammeln) anfangen kann. Da wäre es > schon wichtig zu wissen, wie ich das verdrahten muss, dass es sicher > läuft (und va. ob ich einen externen oszillator brauche). Steckbrett ist unmodern? Ehe ich für etwas eine Platine mache, test ich das erst mal am Steckbrett oder auf einer Lochrasterplatine - mit dem µC in DIL Form versteht sich. Musst ja nicht alle LED aufbauen. mit ein paar kann man das Ganze prinzipiell ja genausogut testen.
A. S. schrieb: > Wenn du dafür eine günstige Lösung hast, melde dich. Wenn du bei reichelt kaufst wird es fast immer teurer. Ich verwende am liebsten den Attiny24, da er bei tme weniger als 70ct kostet. Den Atmega48 gibts für 1,10€. Das ist aber deine Sache. Eine Möglichkeit wäre es den Attiny24 + Schieberegister zu verwenden. 70ct + 8*14ct = 1,82€. Dazu kannst du für die Eingänge ein paar 74hc165 nehmen.
A. S. schrieb: > Wie kann ich die also alle programmieren? > Von JTAG habe ich viel Schlechtes gehört und außerdem unterstützt das > mein recht exotisches Programmerkabel nicht. Du kannst ja auch nen Bootloader implementieren. Das geht im Extremfall sogar mit nur einem Portpin.
Magnus M. schrieb: > Du kannst ja auch nen Bootloader implementieren. Das geht im Extremfall > sogar mit nur einem Portpin. Und wie kommt der darauf? mfg.
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.