Hallo liebe Elektroniker, ich nehme gleich vorweg das ich Neuling mit Grundlagenverständnis bin. Ich habe ein Steckboard mit einem Atmega 88-20PU und daran ein Schieberegister HC595 + Bargraf-LED. Das soll mal eine Temperaturanzeige werden, naja. Ich schiebe die Bits auch wunderbar durch, das funktioniert auch Alles. 1. Es gibt allerding eine Sache die ich zum HC595 nicht verstehe. Wenn ich alle 8 Bits + Shiftregistertakt reinschiebe und direkt anschließend die 8 Takte des Speicherregisters vollziehe, dann zeigen mir die LEDs die richtige Reihenfolge an. Wenn ich allerdings Shiftregistertakt und Speicherregistertakt durchs kompilieren und brennen voneinander trenne, dann klappt es nicht. 2. Kann man das Schieberegister komplett auf 0 setzen? Oder muss ich jedesmal 8 0-bits durchschieben? Mit Reset klappt es nicht. Ich hoffe das war verständlich :) Vielen Dank
>2. Kann man das Schieberegister komplett auf 0 setzen? Oder muss ich >jedesmal 8 0-bits durchschieben? Mit Reset klappt es nicht. Pin 10 (beim DIL-16)
Deine 1. Frage solltest Du verständlicher formulieren...
@ fridulin007 (Gast) >1. Es gibt allerding eine Sache die ich zum HC595 nicht verstehe. Wenn >ich alle 8 Bits + Shiftregistertakt reinschiebe und direkt anschließend >die 8 Takte des Speicherregisters vollziehe, Warum 8? Zum Speichern braucht man nur EINEN Takt. >die richtige Reihenfolge an. Wenn ich allerdings Shiftregistertakt und >Speicherregistertakt durchs kompilieren und brennen voneinander trenne, Durch Kompilieren und brennen trennst du es nicht, du musst schon dein Programm ändern. >dann klappt es nicht. Was klappt denn nicht? >2. Kann man das Schieberegister komplett auf 0 setzen? Mit dem Reset Eingang. Nutzt nur kaum einer, achtmal 0 reichschieben ist einfacher und braucht keine extra Pins. > Oder muss ich >jedesmal 8 0-bits durchschieben? Mit Reset klappt es nicht. Doch. Lade mal alles 1 in dein Schieberegister, dann EIN Takt auf RCK (Pin 12), dann Reset und dann nochmal EIN Takt auf RCK.
>Wenn ich allerdings Shiftregistertakt und Speicherregistertakt durchs >kompilieren und brennen voneinander trenne, Was meinst du??? Du musst nur die 8 Bits reintakten und 1x Speichern (nicht 8x)
>>2. Kann man das Schieberegister komplett auf 0 setzen? Oder muss ich >>jedesmal 8 0-bits durchschieben? Mit Reset klappt es nicht. > >Pin 10 (beim DIL-16) Vermutlich wird man auch noch einen RCK gebe müssen, wenn man auch das Storage Register löscehn will. >direkt anschließend >die 8 Takte des Speicherregisters vollziehe Das Speicherregister wird parallel aus dem Shiftreg geladen, also nur ein Takt notwendig.
Ersteinmal danke für eure Antworten, Sorry, dass ich noch Definitionen nicht ordentlich präsentiere. Natürlich 1 Takt! :) Ich habe laut Datasheet Pinvariationen/-funktionen gearbeitet. Ich trenne beide Takte bewusst, weil im Sheet steht, dass dann das Shiftregister einen Puls vorraus läuft. Deshalb schiebe ich alle 8 Bits rein und setze dann gleich anschließend 8 H/L Pulse für den Speichertakt zur parallelen Ausgabe hinzu - was auch super funktioniert. Wenn ich die Biteingabe ins Shftregister compiliere/brenne und dann noch mal extra nur die 8 H/L Pulse für das Speicherregister starte (zusätzliches brennen), dann kommt gar nichts an. zu 2. Im Sheet steht, wenn ich MR (Reset)auf Low + OE (Enable) auf High setze, dann sollte das Shiftregister gelöscht werden. Wird es aber nicht wenn ich OE wieder auf Low setze und erneut brenne, dann kommt die gewohnte LED-Konstellation. Vielleicht ist das was ich verstehen will nur verbal zu klären. Ach was solls, es funktioniert. Vielen Dank euch
fridulin007 schrieb: > Ich trenne beide Takte bewusst, weil im Sheet steht, dass dann das > Shiftregister einen Puls vorraus läuft. Deshalb schiebe ich alle 8 Bits > rein und setze dann gleich anschließend 8 H/L Pulse für den Speichertakt > zur parallelen Ausgabe hinzu Wieso 8? Du brauchst nur 1 Schau dir doch mal das Funktionsprinzip hier http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Funktionsweise an. - was auch super funktioniert. Wenn ich die > Biteingabe ins Shftregister compiliere/brenne und dann noch mal extra > nur die 8 H/L Pulse für das Speicherregister starte (zusätzliches > brennen), dann kommt gar nichts an. Deine Nomenklatur ist schauderhaft. Irgendwie schaffst du es, das absolut nicht klar ist, wovon du sprichst. Wie - zusätzlich brennen? Du hast 1 Programm. In diesem Programm werden die Takte ins SR getaktet und mit einem Puls an RCK auf die Ausgabestufe durchgeschaltet. Fertig. Was willst du da mit 2 Programmen? > zu 2. Im Sheet steht, wenn ich MR (Reset)auf Low + OE (Enable) auf High > setze, dann sollte das Shiftregister gelöscht werden. Wird es aber nicht > wenn ich OE wieder auf Low setze und erneut brenne, dann kommt die > gewohnte LED-Konstellation. Eines nach dem anderen. Erst mal takten wir die Daten ins Schieberegister und bringen sie zur Anzeige.
Hallo das Funktionsprinzip hab ich mir schon vorher angeschaut und es ist mir klar. :-) Ich habe den Shiftregistertakt und den Speicherregistertakt voneinander via Subroutine getrennt. Wenn ich beide in einem Programm ablaufen lasse klappt alles, aber wenn ich beide Abläufe voneinander trenne via kompilieren - sprich zwei Programme - dann klappt es nicht.
Neuling schrieb: > das Funktionsprinzip hab ich mir schon vorher angeschaut und es ist mir > klar. :-) Dann erklär mal wie so ein Schieberegister funktioniert.
Neuling schrieb: > Wenn ich beide in einem Programm ablaufen lasse > klappt alles, aber wenn ich beide Abläufe voneinander trenne via > kompilieren - sprich zwei Programme - dann klappt es nicht. Im µC gibt es nur ein Programm. Wenn du ein anderes Programm reinbrennst, ist das erste weg.
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.