Hallo zusammen, ich wollte mich mal eine wenig mit Schieberegistern (74hc595) auseinander setzen. Für den Arduino gibt es da ja schon vorgefertigte librarys für. Da ich aber gerne einen Attiny programmieren wollte muss ich ohne auskommen. Ich habe mir bereits den Artikel durchgelesen: http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister Jetzt würde ich gerne so ein Gerät beschalten. Allerdings soll das ganze in sehr langsam laufen. Das heißt ich will mit einem Taster die Bits setzen und mit einen anderen diese schließlich ausgeben lassen. Am SCK sitzt ein Arduino der alle halbe Sekunde an und aus geht. Folgende Schaltung habe ich jezt getestet: (siehe Anhang) Das oben beschriebene klappt jetzt nicht so ganz, wäre auch zu schön ;). Wie kann ich das realisieren?
Offene Eingänge sind bei LS-TTL logisch High. Mit dem Schalter schaltest du sie dann auf VCC, also auch High. Deine Schalter sind wirkungslos. Den Sinn für den Widerstand erschließt sich mir auch nicht.
konrad M. schrieb: > Allerdings soll das ganze in sehr langsam laufen. Das heißt ich will mit > einem Taster die Bits setzen und mit einen anderen diese schließlich > ausgeben lassen. Wie willsz Du denn die Daten eintakten ? Das geht so nicht. Dieses Register bekommt einen seriellem datenstrom und gibt den parallel aus. Anders herum kanst Du mit einem Parallel zu Seriell Register die Daten mit Tastern/Schaltern anlegen aber nur seriell ausgeben. Was Du willst, die Daten parrallel einlesen und parallel ausgeben. Dazu musst Du ein Register von Parallel zu serielll haben an welchem die Schalter sind, das auslesen und alles wieder serielle an ein Ser/par. Register ausgeben. Das macht so relative wenig Sinn. Du brauchst am Arudino SPI als Eingang und als Ausgang. Also ein 165 und ein 595 oder ähnliches. Was willst Du genau machen ?
Den Schiebetakt erzeugt der Arduino. Das Signal ,möchte ich von Hand über den Taster eingeben und über den zweiten in die Ausgangsregister schieben. Der eine Widerstand ist als Pulldown Widerstand gedacht, damit ich über den Taster auf HIGH schalten kann. Der Widerstand beträgt 560R. Oder ist mein Ansatz ganz falsch? Ich möchte damit mir die Funktionsweise ein wenig verinnerlichen. MfG
Die Ausgänge sind immer hochohmig, da /G nicht beschaltet ist. Der Pulldown ist wirkungslos, er liegt zwischen VCC und GND.
Stimmt, das mit dem Pulldown ist jetzt recht ungeschickt. Soll ich den Widerstand jetzt als Pullup oder -down benutzen? Und muss /G auf 5V oder GND?
Also das bezog sich eher darauf ob ich das jetzt mit einem Pullup Widerstand regeln muss, oder ob ich den Arduino anschließen kann und einfach die Bits eingeben wenn der auf LOW geschaltet ist.
konrad M. schrieb: > Den Schiebetakt erzeugt der Arduino. > Das Signal ,möchte ich von Hand über den Taster eingeben und über den > zweiten in die Ausgangsregister schieben. > Der eine Widerstand ist als Pulldown Widerstand gedacht, damit ich über > den Taster auf HIGH schalten kann. Der Widerstand beträgt 560R. > > Oder ist mein Ansatz ganz falsch? > > Ich möchte damit mir die Funktionsweise ein wenig verinnerlichen. > > MfG und woher weis Deine MCU das Du Deine Daten angelegt hast ? Richtig, wenn Du auf Ausgabe drückst. Dann haben deine Taster aber schon lange los gelassen. :-( Weil es eben Taster sind. WENN DAS SO GEHEN SOLL, DANN BITTE SO: Die Information mit Schaltern anlegen, mit einem Taster die Datenübernahme betsätigen und mit einem weiteren (oder dem vorherigen) die Datenausgabe aktivieren. zum Mitschreiben: Die Daten müssen stabil anliegen Dann die Daten einlesen Jetzt die Daten ausgeben. Du hast grunsätzliche Verständnisprobleme zur Thematik. Da sind die Pull Up oder Down erstmal völlig wurscht. 1. Frage: was macht ein Par. zu Ser. Register ? 2. Frage: was macht ein Ser. zu Par. Reister ? 3. Frage: wie erkennt mein Controller, das ich eine Taste gedrückt habe ? Wen Dir das klar ist, dann reden wir über die Pull UP´s
Ich bin jetzt ein wenig verwirrt, aber ich hoffe ich weiß worum es geht. Also so wie ich es verstanden habe ist es Schwachsinn die Bits mit einem Taster versuchen einzeln zu setzen? zu deinen Fragen: 1. Par. zu Ser. erzeugt aus einem Parallelen Signal über mehrere Leitungen ein Serielles Signal 2. Genau anders rum (wie das 74hc595). Aus einem Binären Signal gibt es über 8 Pins entweder Einsen oder Nullen aus (HIGH/LOW). 3.Entweder mit einem Pullup oder Pulldown Widerstand (zwischen Eingang und Vcc oder eingang und GND)
4. setzen. Dein Controller erkennt einen gesetzten Taster indem er das Portpin abfragt. Ob das dann High oder Low ist, hängt davon ab, wie Du Deine Schaltung entworfen hast. Ein 8051 hat zB. im Reset Zustand H aktive Pins. Was u.U. zu Problemen beim Einschalten führen kann, weil Baugruppen aktiv werden, die gar nicht aktiv werden sollen. Daher wird dort gern Low gesteuert. Also muss da ein Pull down rein. Du kannst Bits einzel setzen. Aber nur eingangsseitig. Und alle Bits müssen gesetzt sein, wenn Du Deiner MCU sagst, "jetzte lese alle Bits ein" !
Ok. Ist aber denke ich trotzdem ganz nett anzuschauen und eventuell dennoch hilfreich für ihn.
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.