Forum: Mikrocontroller und Digitale Elektronik Schieberegister 595 hardwaremäßig löschen


von Bernd B. (gorkde)


Lesenswert?

Ich habe 2 595 die an einem ESP8266 hängen.

Wenn ich den Stromkreis schließe gehen teilweise zufällig die Ausgänge 
des 595 auf HI bevor mein Proramm sie initialisiert. Obwohl ich das als 
allererstes mache dauert es manchmal ca. 0,5-1 Sek.

Nun muss ich irgendwie hardwaremäßig sicher stellen, dass alle Ausgänge 
solange auf Low sind, damit mir später vor dem Initialisieren nicht 4 
Motoren gleichzeitig angesteuert werden und durch den Strom alles 
durchbrennt.

Daher hatte ich überlegt per RC Glied irgend wie den Clear Pin auf Masse 
zu ziehen, aber irgendwie haute das nicht hin, weil er wohl noch nen 
Registertakt braucht.

Ich könnte auch OE per RC Glied versuchen zu blockieren, wenn dann aber 
der Mikrocontroller sich angenommen mal aufhängt ehe er initialisieren 
kann, kommen die falschen Werte ja irgendwann wenn der Kondensator 
geladen ist und OE low geht ja trotzdem raus. Daher macht es schon Sinn 
das Register direkt zu löschen.

Wie mache ich das am geschicktesten, dass ich sicherstelle, dass die 
Ausgänge beim Einschalten immer low sind?

von Christian M. (Gast)


Lesenswert?

Du meinst wahrscheinlich *74*595

Evtl. kannst Du mit Pull-Up den -OE auf high halten und zuletzt in der 
Initialisierung auf low ziehen...

Ausgänge wären solange High-Impedance. Was kommt danach?

Gruss Chregu

von Bernd (Gast)


Lesenswert?

Die stromversorgung der motoren durch nen Mosfet trennen und diesen erst 
später freischalten.

von Bernd B. (gorkde)


Lesenswert?

Das mache ich ja aber die MOSFETS werden über das Schieberegister 
gesteuert, deshalb muss ich ja sicher stellen, dass die Ausgänge low 
sind.

von Christian M. (Gast)


Lesenswert?

Oh, ah, ja Motoren. Sorry, überlesen. Wie steuerst Du die Motoren an? 
ULN2803?

Gruss Chregu

von Bernd (Gast)


Lesenswert?

Ich meinte durch nen zusätzlichen mosfet den minus aller motoren 
sperrenund den direkt an den uC

von W.A. (Gast)


Lesenswert?

Bernd B. schrieb:
> Obwohl ich das als allererstes mache dauert es manchmal ca. 0,5-1 Sek.

Dann machst du vorher noch etwas anderes ...

> Wie mache ich das am geschicktesten, dass ich sicherstelle, dass die
> Ausgänge beim Einschalten immer low sind?

!OE auf High halten und Pull-Down an den Ausgängen?

von S. Landolt (Gast)


Lesenswert?

> Daher hatte ich überlegt per RC Glied irgend wie den Clear Pin auf Masse
> zu ziehen, aber irgendwie haute das nicht hin, weil er wohl noch nen
> Registertakt braucht.

Das wundert mich, in meinem Datenbuch von IWT steht, der Löscheingang, 
hier mit /SCLR bezeichnet, sei asynchron.

von Christian M. (Gast)


Lesenswert?

Hallo Bernd,

ja mit den MOSFETs hast Du ja eh Widerstände am Gate gegen GND, dann 
geht's mit high-impedance. Hast Du noch einen Pin frei? Mach den an -OE!

Gruss Chregu

von Christian M. (Gast)


Lesenswert?

S. Landolt schrieb:
>> Daher hatte ich überlegt per RC Glied irgend wie den Clear Pin auf Masse
>> zu ziehen, aber irgendwie haute das nicht hin, weil er wohl noch nen
>> Registertakt braucht.
>
> Das wundert mich, in meinem Datenbuch von IWT steht, der Löscheingang,
> hier mit /SCLR bezeichnet, sei asynchron.

Ja der löscht nur das Schieberegister. Müsste noch in das 
Daten-Halte-Register geladen werden!

Gruss Chregu

von Bernd B. (gorkde)


Lesenswert?

Ich muss die Mosfet über das Schieberegister Steuern um am Prozessor die 
Pins frei zu haben, da ich die später noch brauche. Daher kann ich auch 
den OE nicht vom Prozessor aus steuern und muss es per RC Glied o.ä. 
hardwaremäßig lösen.

Ich habe einen 74HC595 und da steht im Datenblatt (Tabelle) zwar der 
Löscheingang brauche keinen Takt, aber im Taktdiagramm sieht man, dass 
der Ausgang erst auf Low geht wenn ein Speichertakt kommt und genau das 
habe ich beim rumprobieren letztens auch festgestellt.

Die Lösung OE auf Low zu halten ist unsicher, daher würde ich gerne beim 
Start die Ausgänge löschen.

Hab hier schon mit Widerstand und Kondensator rumprobiert, aber 
irgendwie hats nicht geklappt.

ich habe 3,3V Logik, daher ist LOW bei 0,8V richtig?

Wie berechne ich denn die Kondensatorladung bzw. die Zeit, die das RC 
Glied braucht um auf 0,8V zu kommen?

: Bearbeitet durch User
von OE (Gast)


Lesenswert?

>Die Lösung OE auf Low zu halten ist unsicher, daher würde ich gerne beim
>Start die Ausgänge löschen.

Wieso? Das ist die beste Methode. Vielleicht mußt Du Dich etwas genauer 
damit beschäftigen.

von Bernd B. (gorkde)


Lesenswert?

Wieso habe ich geschrieben!
Wenn ich OE per RC Glied auf HI halte ist sobald das RC Glied geladen 
ist der Ausgang mit falschen Werten an, falls der Mikroprozessor sich 
mal aufgehängt hat.

von Max M. (jens2001)


Lesenswert?

Bernd B. schrieb:
> Die Lösung OE auf Low zu halten ist unsicher

Schwachsinn! Genau dazu ist der OE das!

> Daher kann ich auch
> den OE nicht vom Prozessor aus steuern und muss es per RC Glied o.ä.
> hardwaremäßig lösen.

DAS ist unsicher!

von Falk B. (falk)


Lesenswert?

@ Bernd Bubu (gorkde)

>Wieso habe ich geschrieben!
>Wenn ich OE per RC Glied auf HI halte

Wer sagte was von RC-Glied ausser dir? Niemand.

Du sollt OE mittels Pull-Up Widerstand auf HIGH halten und dann, wenn 
dein Prozessor gestartet ist, es mit einem angeschlossenen IO-Pin auf 
LOW ziehen. Vorher wird man sinnvollerweise das Register mit einem 
gescheiten Wert laden.

> ist sobald das RC Glied geladen
>ist der Ausgang mit falschen Werten an, falls der Mikroprozessor sich
>mal aufgehängt hat.

Wenn er nicht startet, passiert gar nichts, OE bleibt HIGH. Wenn er im 
normalen Betrieb ausfällt, hast du so oder so ein Problem. Dagegen hilft 
nur eine solide Hard- uznd Software und im Ernstfall ein Watchdog.

von Kaj (Gast)


Lesenswert?

Bernd B. schrieb:
> falls der Mikroprozessor sich
> mal aufgehängt hat.
Und warum sollte sich der µC aufhängen?
- Softwarefehler  -> musst du beheben
- EMV/Störimpulse -> musst du die Schaltung gegen absichern

Du machst das, was viele machen, aber nichts bringt:
An den Symptomen rumdoktorn, ohne das Problem zu beheben.

von Bernd B. (gorkde)


Lesenswert?

Falk B. schrieb:
> @ Bernd Bubu (gorkde)
>
>>Wieso habe ich geschrieben!
>>Wenn ich OE per RC Glied auf HI halte
>
> Wer sagte was von RC-Glied ausser dir? Niemand.
>
> Du sollt OE mittels Pull-Up Widerstand auf HIGH halten und dann, wenn
> dein Prozessor gestartet ist, es mit einem angeschlossenen IO-Pin auf
> LOW ziehen. Vorher wird man sinnvollerweise das Register mit einem
> gescheiten Wert laden.
>
>> ist sobald das RC Glied geladen
>>ist der Ausgang mit falschen Werten an, falls der Mikroprozessor sich
>>mal aufgehängt hat.
>
> Wenn er nicht startet, passiert gar nichts, OE bleibt HIGH. Wenn er im
> normalen Betrieb ausfällt, hast du so oder so ein Problem. Dagegen hilft
> nur eine solide Hard- uznd Software und im Ernstfall ein Watchdog.

Wie ich bereits schrieb geht das nicht weil ich keinen Mikrocontrooler 
Pin dafür nuten kann und MUSS es daher ohne diesen lösen!

Max M. schrieb:
> Bernd B. schrieb:
>> Die Lösung OE auf Low zu halten ist unsicher
>
> Schwachsinn! Genau dazu ist der OE das!
>

Wenn Du mal lesen würdest und nicht einzelne Teile die Dir gefallen 
rauspicken würdest, rede ich davon OE - MIT RC GLIED - auf low zu 
halten, denn so oder ähnlich muss ich es wegen der Gegebenheiten nunmal 
machen!
Und wenn sich dann der Prozessor mal aufgehängt hat gibt es halt 
probleme und die Motoren laufen an.

von Gusian (Gast)


Lesenswert?

> Und wenn sich dann der Prozessor mal aufgehängt hat gibt es halt
> Probleme und die Motoren laufen an.

Du musst dein Konzept neue überdenken. Einen EPS8266, der sich hin und 
wieder aufhängt, gehört nicht ans zentraler Stelle in (d)eine 
Elektronik. U. U. einen Gluecontroller (ATTiny o. ä.) nehmen, der dem 
ESP auf die "Finger" sieht.

von Bernd B. (gorkde)


Lesenswert?

Gusian schrieb:
>> Und wenn sich dann der Prozessor mal aufgehängt hat gibt es halt
>> Probleme und die Motoren laufen an.
>
> Du musst dein Konzept neue überdenken. Einen EPS8266, der sich hin und
> wieder aufhängt, gehört nicht ans zentraler Stelle in (d)eine
> Elektronik. U. U. einen Gluecontroller (ATTiny o. ä.) nehmen, der dem
> ESP auf die "Finger" sieht.

Es ist ja nicht geplant, dass er sich aufhängt, aber ich muss aufgrund 
des Projektes sicher gehen, daher möchte ich eben Hardwaremäßig das 
Schieberegister beim Einschalten automatisch löschen lassen. Alles 
andere ist ja schon geregelt.

Ich komme nur mit dem Berechnen der notwendigen RC Glieder nicht 
zurecht, weil ich zulange raus bin.

von Max M. (jens2001)


Lesenswert?

Bernd B. schrieb:
> muss ich es wegen der Gegebenheiten nunmal
> machen!

Dann ändere was an den "Gegebenheiten"!

Wenn du merkst, dass du ein Problem hast, dass sonst niemand hat, dann 
hör auf über die Lösung des Problems nachzudenken und fang an zu 
überlegen warum du ein Problem hast dass sonst niemand hat!

von Max M. (jens2001)


Lesenswert?

Bernd B. schrieb:
> irgend wie den Clear Pin auf Masse
> zu ziehen


> steht im Datenblatt (Tabelle) zwar der
> Löscheingang brauche keinen Takt

Welelcher Pin soll den der ominöse "Clear Pin" sein?

von Falk B. (falk)


Lesenswert?

@ Bernd Bubu (gorkde)

>Wie ich bereits schrieb geht das nicht weil ich keinen Mikrocontrooler
>Pin dafür nuten kann und MUSS es daher ohne diesen lösen!

Doch, das kann man. Aber du hast dich mental voll verrant ;-)
Tunnelblick & Co lassen grüßen.

Lies meinen Beitrag nochmal in Ruhe mit mehrfachem Durchatmen.

Beitrag "Re: Schieberegister 595 hardwaremäßig löschen"

von Falk B. (falk)


Lesenswert?

Nachtrag. Die allermeisten IOs der allermeisten Mikrokontroller sind 
beim Reset/Einschalten auf Tristate, d.h. hochohmig. Darum funktioniert 
ja der Trick mit den Pull-Widerständen.

von Christian M. (Gast)


Lesenswert?

Falk B. schrieb:
> Aber du hast dich mental voll verrant ;-)

Und da nützen auch alle Deslikes für die guten Lösungen nichts :-))

Chregu

von Michael U. (amiga)


Lesenswert?

Hallo,

Gusian schrieb:
>> Und wenn sich dann der Prozessor mal aufgehängt hat gibt es halt
>> Probleme und die Motoren laufen an.
>
> Du musst dein Konzept neue überdenken. Einen EPS8266, der sich hin und
> wieder aufhängt, gehört nicht ans zentraler Stelle in (d)eine
> Elektronik. U. U. einen Gluecontroller (ATTiny o. ä.) nehmen, der dem
> ESP auf die "Finger" sieht.

ein ESP8266 hängt sich nicht hin- und wieder auf. Es sei denn man hat 
fehlerhaft programmiert. Dann kann sich aber genauso ein Tiny 
aufhängen...

Der ESP hat an den meisten GPIO nach dem Reset etwas "bewegung" bzw. 
will bestimme Pegel anliegen haben. Erstmal startet der Bootloader (GIO0 
und GPIO15 sind dann wichtig), dann gibt es Debugausgaben (GPIO1,2,3).
Dann initialisiert er sein "Betriebssystem" (WLAN usw.) und dann 
staertet erst die Anwendersoftware.
/OE per PullUp auf H und dann vom ESP auf low ziehen ist sicher wenn man 
den richtigen Pin nimmt. GPIO4 und 5 gehen immer.
Ansonsten eben keinen '595 nehmen sondern z.B. einen MCP23S17 am 
Hardware-SPI des ESP.

Gruß aus Berlin
Michael

von Bernd B. (gorkde)


Lesenswert?

Falk B. schrieb:
> Nachtrag. Die allermeisten IOs der allermeisten Mikrokontroller sind
> beim Reset/Einschalten auf Tristate, d.h. hochohmig. Darum funktioniert
> ja der Trick mit den Pull-Widerständen.

Das ist erstens beim ESP8266 nicht so, zweitens sieht meine Schaltung 
bereits eh so aus, wie vorgeschlagen, aber hier liest auch keiner was 
ich geschrieben habe ;)

1) Ich habe kein Problem mit der Schaltung oder Mikrocontroller, sondern 
suche Hilfe dabei ein Schieberegister beim Power-On ohne MC Ansteuerung 
per RC Glied zu löschen.
Das ist eine ganz klare Fragestellung.

2) Sieht meine Schaltung anders aus als vielleicht bei anderen, also 
muss ich auch eine für mich machbare Lösung finden.
Meine Schaltung ist sehr komplex und ich kann schlecht eine sehr 
umfangreiche Schaltung und warum die Gegebenheiten eben so sind mit 
allen Hintergründen in 2 Sätzen erklären.
Machbar ist in meinem Fall eben nicht den OE per MC zu steuern. Das ist 
eine Gegebenheit die so ist, da die Pins für andere Dinge benutzt werden 
müssen, nur deshalb habe ich ja das Schieberegister dran, damit ich 
diese Pins frei habe.

Daher BITTE... Keine "mach es mit MC"  Lösungen, das ust nunmal mit dem 
vorhandenen nicht möglich und einen weiteren verbauen nur um einen Reset 
zu machen möchte ich nicht,  sowas geht ja auch mit simplen Bauteilen. 
Ich habe nur Probleme mit der Berechnung eines RC Gliedes.

von Bernd B. (gorkde)


Lesenswert?

> Der ESP hat an den meisten GPIO nach dem Reset etwas "bewegung" bzw.
> will bestimme Pegel anliegen haben. Erstmal startet der Bootloader (GIO0
> und GPIO15 sind dann wichtig), dann gibt es Debugausgaben (GPIO1,2,3).
> Dann initialisiert er sein "Betriebssystem" (WLAN usw.) und dann
> staertet erst die Anwendersoftware.
> /OE per PullUp auf H und dann vom ESP auf low ziehen ist sicher wenn man
> den richtigen Pin nimmt. GPIO4 und 5 gehen immer.
> Ansonsten eben keinen '595 nehmen sondern z.B. einen MCP23S17 am
> Hardware-SPI des ESP.

Eben.
Das mit OE per ESP Wäre am einfachsten geht aber wiegesagt nicht weil 
ich keinen Pin frei habe den ich dafür nutzen kann.

von Max M. (jens2001)


Lesenswert?

Bernd B. schrieb:
> Ich habe nur Probleme mit der Berechnung eines RC Gliedes.

Das ist das kleine 1*1!
Dazu gibts genug im Net.

von Bernd B. (gorkde)


Lesenswert?

Max M. schrieb:
> Bernd B. schrieb:
>> Ich habe nur Probleme mit der Berechnung eines RC Gliedes.
>
> Das ist das kleine 1*1!
> Dazu gibts genug im Net.

Nadann bin ich dazu eben zu blöd (oder wie gesagt eben einfach zu lange 
raus).

Aber da das wie du sagst ja für dich kein Problem ist, sage mir doch 
kurz welche 2 RC glieder ich nehmen kann, damit der Register Clear pin 
auf low gehalten wird und in der Zeit der Speichertakt einen kurzen Hi 
Impuls bekommt.

Das ist eigentlich das einzige Problem was ich habe.

Da das ja wie du sagst ganz simpel ist, sollte das ja kein Problem sein.

von Harald W. (wilhelms)


Lesenswert?

Bernd B. schrieb:

> suche Hilfe dabei ein Schieberegister beim Power-On ohne MC Ansteuerung
> per RC Glied zu löschen.

Nun, ein RC-Glied an einem Digitaleingang ist eine potentiell
unsichere Lösung, wenn dieser Eingang kein Schmitttrigger-
Eingang ist. Nimm doch wenigstens ein Reset-IC an dieser
Stelle.

von Falk B. (falk)


Lesenswert?

@Bernd Bubu (gorkde)

>> beim Reset/Einschalten auf Tristate, d.h. hochohmig. Darum funktioniert
>> ja der Trick mit den Pull-Widerständen.

>Das ist erstens beim ESP8266 nicht so,

Nicht bei allen Pins.

> zweitens sieht meine Schaltung

>1) Ich habe kein Problem mit der Schaltung oder Mikrocontroller, sondern
>suche Hilfe dabei ein Schieberegister beim Power-On ohne MC Ansteuerung
>per RC Glied zu löschen.

geht nicht.

>Das ist eine ganz klare Fragestellung.

Nö, das ist schon wieder Tunnelblick. Denn viele Wege führen nach Rom. 
Du stehst vor einem Tor und denkst, es wäre das Stadttor von Rom. Kann 
aber auch Florenz sein ;-)

>2) Sieht meine Schaltung anders aus als vielleicht bei anderen, also
>muss ich auch eine für mich machbare Lösung finden.

Die sehen wir nicht.

>Meine Schaltung ist sehr komplex

Sagt wer?

>Machbar ist in meinem Fall eben nicht den OE per MC zu steuern. Das ist
>eine Gegebenheit die so ist, da die Pins für andere Dinge benutzt werden
>müssen, nur deshalb habe ich ja das Schieberegister dran, damit ich
>diese Pins frei habe.

Sas sollte man aber auch so sagen!!!

>Ich habe nur Probleme mit der Berechnung eines RC Gliedes.

Nö, du hast immer noch den Tunnelblick und beharrst auf deinem Holzweg. 
Egal wie du das drehst und zauberst, das OE kann nur die Ausgänge 
freischalten oder auch nicht.

Wo liegt das Problem bei der Berechnung einer Zeitkonstanten? tau = R * 
C. Dann muss man noch grob abschätzen, wo die Schaltschwelle des IC 
liegt, bei CMOS meist VCC/2, d.h. die Verzögerungszeit ist etwas 
geringer, vielleicht 0,7*tau. Das nützt dir aber wenig, denn das 
systematische Problem löst es nicht.

>Das mit OE per ESP Wäre am einfachsten geht aber wiegesagt nicht weil
>ich keinen Pin frei habe den ich dafür nutzen kann.

Dann hast du dich auch hier verrannt. Du könntest dein Design ändern und 
Pins freischaufeln. Ja, das ist Arbeit. Aber das hintricksen mit dem OE 
gibt's auch nicht umsonst.


>Aber da das wie du sagst ja für dich kein Problem ist, sage mir doch
>kurz welche 2 RC glieder ich nehmen kann, damit der Register Clear pin
>auf low gehalten wird und in der Zeit der Speichertakt einen kurzen Hi
>Impuls bekommt.

Dann brauchst du ein RC-Glied an SCLK und OE, wobei du die Pins aber 
nicht einfach zusammenschalten kannst. Dann brauchst du ein schnelleres 
RC-Glied an RCK, das den einmaligen Einschaltpuls generiert. Alles in 
Allem nicht wirklich schön. Und das alles nur, weil du kein einziges Pin 
mehr frei hast.

von S. Landolt (Gast)


Lesenswert?

Ich hatte es so verstanden, dass /OE fest auf 0 liegt, die RC-Glieder 
sollen an /SCLR und RCK. Sollte ja kein Problem sein, nur dass dann im 
Betrieb die Ansteuerung von RCK etwas gebremst wird.

von michael_ (Gast)


Lesenswert?

Harald W. schrieb:
> Nimm doch wenigstens ein Reset-IC an dieser
> Stelle.

Der ist in dem System vielleicht schon vorhanden.

von Michael U. (amiga)


Lesenswert?

Hallo,

Dann investiere eben in einen 4538 oder 74xx123 oder ähnlichen 
Dual-Monoflop und mache es damit ordentlich. Mit einem 4093 kann man 
solch eine Startlogik auch gut zusammenschustern.

PS: ein tiny25 geht auch und braucht keine Außenbeschaltung...

Gruß aus Berlin
Michael

von Peter D. (peda)


Lesenswert?

Bernd B. schrieb:
> Daher hatte ich überlegt per RC Glied irgend wie den Clear Pin auf Masse
> zu ziehen, aber irgendwie haute das nicht hin, weil er wohl noch nen
> Registertakt braucht.

RC ist großer Quatsch, wenn es zuverlässig sein soll. Der C kann sich 
bei kurzen Einbrüchen nicht genug entladen, das Latch aber schon 
zufällige Werte annehmen. Außerdem ist Clear des Latches nicht 
verfügbar.

Die einzige Lösung, die Du auch in der Praxis antreffen wirst, den /OE 
mit einem Pullup auf high ziehen und an einen MC-Pin, der beim Reset 
hochohmig oder high (80C51) ist. Alles andere ist deutlich aufwendiger.

Bei Motorsteuerungen sieht man aber auch oft, daß der MC die Versorgung 
des Leistungsteils erst freischaltet.

von Michael U. (amiga)


Lesenswert?

Hallo,

er hat sich doch nunmal darauf eingeschossen, eine Krücke zu bauen weil 
kein Pin mehr verfügbar ist. Solche konzeptionellen Pannen bastle ich 
mir ja durchaus auch bei meinen Projekten, speziell beim ESP8266 mit 
seinen Eigenarten. Allerdings habe ich da keine Hemmungen, meinen Kram 
notfalls komplett umzuplanen und umzubauen. Sowas fällt ja eigentlich 
schon bei den ersten Tests auf. Bei mir mittlerweile eine der ersten 
Fragen, die ich mir stelle: was passiert beim Start und bei 
undefinierten Zuständen und wann können die Auftreten.

Gruß aus Berlin
Michael

von Valan (Gast)


Lesenswert?

Michael U. schrieb:

> Gruß aus Berlin
> Michael

Wie oft grüßt du so pro Sitzungstag? 50 bis 100 mal? Warum machst du 
das? Geltungsbedürfnis eines kleinen Bastlers allein reicht da ja wohl 
nicht aus.

von Bernd B. (gorkde)


Lesenswert?

S. Landolt schrieb:
> Ich hatte es so verstanden, dass /OE fest auf 0 liegt, die RC-Glieder
> sollen an /SCLR und RCK. Sollte ja kein Problem sein, nur dass dann im
> Betrieb die Ansteuerung von RCK etwas gebremst wird.

Genau so! Vielen Dank!

Falk B. schrieb:
> Dann hast du dich auch hier verrannt. Du könntest dein Design ändern und
> Pins freischaufeln. Ja, das ist Arbeit. Aber das hintricksen mit dem OE
> gibt's auch nicht umsonst.

Nein Mister oberschlau, ich glaube ich kann selbst einschätzen was mit 
meiner Schaltung geht! Ich kann gerade mal die 3 Pins für das 
Schieberegister benutzen, alle anderen werden anderweitig extern benutzt 
oder dürfen aufgrund der Besonderheiten des ESP nicht beschaltet werden!

> Sas sollte man aber auch so sagen!!!

Dieses und auch all die anderen Sachen die Du Schreibst habe ich bereits 
vorher ausführlich erwähnt!

>Wo liegt das Problem bei der Berechnung einer Zeitkonstanten? tau = R *
C. Dann muss man noch grob abschätzen, wo die Schaltschwelle des IC
liegt, bei CMOS meist VCC/2, d.h. die Verzögerungszeit ist etwas
geringer, vielleicht 0,7*tau. Das nützt dir aber wenig, denn das
systematische Problem löst es nicht.

Das Problem ist, dass ich das eben nicht "abschätzen" und raten will, da 
es mit "abschätzen" eben nicht funktioniert hat! Das hatte ich EBENFALLS 
bereits geschrieben.
Und LOW liegt NICHT bei Vcc/2, sondern 0,8V!
Einerseits haust Du hier auf die Kacke, aber andererseits weißt Du 
nichtmal das!

>Dann brauchst du ein RC-Glied an SCLK und OE,

Dass ich das nicht will, weil es unsicher ist habe ich auch bereits 
mehrfach erwähnt, es geht darum, wie S. Landolt schrieb mittels SCLR und 
RCK das Register einmalig zu löschen ;)

von Michael U. (amiga)


Lesenswert?

Bernd B. schrieb:
> Und LOW liegt NICHT bei Vcc/2, sondern 0,8V!
> Einerseits haust Du hier auf die Kacke, aber andererseits weißt Du
> nichtmal das!

Du irrst. 0,8V ist die Grenze unter der bei TTL und damit auch HC(T) 
garantiert wird, daß Low erkannt wird. Praktisch liegt der Punkt so um 
1,6V bei HCT und Ub/2 bei HC.

Gruß aus Berlin
Michael

von Falk B. (falk)


Lesenswert?

Bernd Bubu (gorkde)

>> Dann hast du dich auch hier verrannt. Du könntest dein Design ändern und
>> Pins freischaufeln. Ja, das ist Arbeit. Aber das hintricksen mit dem OE
>> gibt's auch nicht umsonst.

>Nein Mister oberschlau,

Du darfst mich mit "Mein Gott" ansprechen . . . ;-)

> ich glaube ich kann selbst einschätzen was mit
>meiner Schaltung geht!

Der Tunnelblick verschärft sich. Naja.

> Ich kann gerade mal die 3 Pins für das
>Schieberegister benutzen, alle anderen werden anderweitig extern benutzt
>oder dürfen aufgrund der Besonderheiten des ESP nicht beschaltet werden!

Man kann ein Signal freischaufeln, nämlich das Pin vom RCK. DAS kann man 
mit einem Monoflop per Hardware steuern, dann braucht man nur noch 
SCK und DATA. Das Monoflop wird mit SCK angestoßen, es muss ein 
retriggerbares sein. Wenn SCK für ca. 3-5 Taktzeiten ausbleibt, schaltet 
der Ausgang des Monoflops. Das freie Pin kann dann dein OE steuern.

>Und LOW liegt NICHT bei Vcc/2, sondern 0,8V!

Nö, das ist der GARANTIERTE Mindestpegel für ein LOW, nicht die reale 
Schaltschwelle. Außerdem hast du wahrscheinlich ein 74HC595 oder was 
ähnliches, denn die HCT gehen bei 3,3V nicht. Also liegt die 
Schaltschwelle bei VCC/2.

>Einerseits haust Du hier auf die Kacke, aber andererseits weißt Du
>nichtmal das!

Ruhig Brauner!

>mehrfach erwähnt, es geht darum, wie S. Landolt schrieb mittels SCLR und
>RCK das Register einmalig zu löschen ;)

Dann mal viel Erfolg! Du weißt es ja besser als ein halbes Dutzend Leute 
hier.

von Johannes S. (8n1)


Lesenswert?

Bernd B. schrieb:
> oder dürfen aufgrund der Besonderheiten des ESP nicht beschaltet werden!

Was für ein Modul hast du denn im Einsatz und welche Pins hast du nicht 
beschaltet?

Nicht dass du jetzt bspw. GPIO15 frei gelassen hast. Oder den RX Pin 
sofern du den UART nicht brauchst o ä.

von HVV (Gast)


Lesenswert?

Häng ein zweites 595 hinter das erste, dann hast Du weitere 8 Ausgänge, 
das sollte wohl Ausreichen um die 'Kaltstartlogik' (mit Monoflop oder 
Flipflop, oder was-auch-immer) zu Entsperren.

von Bernd B. (gorkde)


Lesenswert?

Johannes S. schrieb:
> Bernd B. schrieb:
>> oder dürfen aufgrund der Besonderheiten des ESP nicht beschaltet werden!
>
> Was für ein Modul hast du denn im Einsatz und welche Pins hast du nicht
> beschaltet?
>
> Nicht dass du jetzt bspw. GPIO15 frei gelassen hast. Oder den RX Pin
> sofern du den UART nicht brauchst o ä.

Ich habe ein 12F. GPIO 0,2,16 für das Schieberegister, die Pins für I2C 
und SPI werden später benötigt, genau wie RX/TX und die Pins an denen 
der interne Speicher hängt fallen ebenso weg.

Ich habe es jetzt erstmal zum Testen auf einen I2C Pin gelegt, später 
muss ich den aber frei räumen und das wollte ich halt nicht noch mittels 
extra IC machen, da die Platine schon voller als geplant wird und der 
Platz begrenzt ist.

Aber ansonsten mache ich mir da später nen Kopf.
Ich habe mittlerweile was im Internet gefunden und errechnet, dass 0,8V 
ca. 0,278 Tau entsprechen bei 10k/100nF bei 277uS liegen müssten, 2V 
ca.0,96 Tau, daher 10k mit 10nF ca. 96uS.

Allerdings weiß ich nicht, ob ich korrekt gerechnet habe.

von Johannes S. (8n1)


Lesenswert?

Dann nimm doch für i2c gpio0 und gpio2 und häng latch und clock an gpio4 
und 5 und verbau pullup oder pulldown widerstände.
Gpio4 und 5 sind beim booten komplett "still".

von Christian M. (Gast)


Lesenswert?

Das Schieberegister selbst ist das Problem. Das heißt das Ausgangslatch 
hat beim Einschalten undefinierte Zustände.

Chregu

von Michael U. (amiga)


Lesenswert?

Hallo,
Clock und Date der 595 kann auch der Hardware-SPI bedienen. Dann ist 
genau eine zusätzliche Leitung für die Latch-Übernahme nötig.

Naja, da sind mir die MCP23S17 dann doch lieber. 16Bit I/O im Chip, per 
Software-Adresse kaskadierbar kosten das eben nur den Hardware-SPI + 1x 
/CS auch für mehrere. Mit 3,3V laufen sie auch. Der kleinere 
Ausgangsstrom könnte stören. allerdings hängen da entweder Logikpegel 
dran oder Treiber die man passend bemessen kann. 10MHz SPI-Clock reichen 
auch um nehrere schnell genug zu bedienen. Nur weil im Netz die '595 
scheinbar mit AVR und Arduino "verheiratet" zu sein scheinen muß man an 
denen nicht festhalten.

Gruß aus Berlin
Michael

von chris (Gast)


Lesenswert?

Bernd B. schrieb:
> GPIO 0,2,16 für das Schieberegister, die Pins für I2C
> und SPI werden später benötigt

Und wie wärs, wenn du das Schieberegister einfach mit ans SPI hängst?
Solange du nicht den Latch-Pin taktest, ist es ja egal, was auf dem Bus 
gesendet wird. (--> wirkt also quasi wie Chipselect)

von Johannes S. (8n1)


Lesenswert?

Achso. Man müsste das register also erstmal leeren, und solange können 
manche ausgänge/Motoren aktiv sein.

Schieberegister an die SPI Pins wär auch meine nächste Idee.
Oder stattdessen einen port expander, SPI oder I2C.

PCF8574 wär ne günstige wenn auch langsamere alternative zum MCP23x17.

von Hp M. (nachtmix)


Lesenswert?

Falk B. schrieb:
> Du darfst mich mit "Mein Gott" ansprechen . . . ;-)

Bist du De Gaulle?

von MaWin (Gast)


Lesenswert?

Bernd B. schrieb:
> Daher hatte ich überlegt per RC Glied irgend wie den Clear Pin auf Masse
> zu ziehen, aber irgendwie haute das nicht hin, weil er wohl noch nen
> Registertakt braucht.

Klar, das Schieberegister wird auchnohne CLK sofort gelöscht, aber das 
Ausgaberegister braucht noch ein CLK um die 0en zu übernehmen.

Du willst 74HC594, die haben asynchrones Ausgaberegisterclear, dafür 
kein OE.

Ein 74HC595 würde mit einer Flanke an RCLK die Daten übernehmen, aber 
RCLK kommt vom uC, du müsstest es, so lange der uC diesen Ausgang noch 
als Eingamg betreibt, durch SCLR steuern: Ist SCLR zu Ende, wird RCLK 
eine Flanke sdhdn. Bloss wie erkennt man dass der uC die Leitung wieder 
übernehmen will? Seriewiderstand ist blöd.

von Bernd B. (gorkde)


Lesenswert?

Danke für die Tipps, mache mir mal nen Kopf.

von Harald W. (wilhelms)


Lesenswert?

michael_ schrieb:

>> Nimm doch wenigstens ein Reset-IC an dieser
>> Stelle.
>
> Der ist in dem System vielleicht schon vorhanden.

An den vom TE gewünschten Eingängen?

von Harald W. (wilhelms)


Lesenswert?

Valan schrieb:

> Wie oft grüßt du so pro Sitzungstag? 50 bis 100 mal? Warum machst du
> das? Geltungsbedürfnis eines kleinen Bastlers allein reicht da ja wohl
> nicht aus.

Höflichkeit ist m.E. auch dann sinnvoll, wenn man sich nicht persönlich 
gegenüber steht. Wie beendest Du eigentlich ein Telefongespräch?
Indem Du den Hörer auf die Gabel knallst, oder mit einer Grussformel?

von Moota (Gast)


Lesenswert?

Harald W. schrieb:
> Valan schrieb:
>
>> Wie oft grüßt du so pro Sitzungstag? 50 bis 100 mal? Warum machst du
>> das? Geltungsbedürfnis eines kleinen Bastlers allein reicht da ja wohl
>> nicht aus.
>
> Höflichkeit ist m.E. auch dann sinnvoll, wenn man sich nicht persönlich
> gegenüber steht. Wie beendest Du eigentlich ein Telefongespräch?
> Indem Du den Hörer auf die Gabel knallst, oder mit einer Grussformel?

Das Anhängen von immer gleichen Textbausteinen. in anderen Foren 
allerdings viel schlimmer praktiziert, hat nicht mit Höflichkeit zu zu 
tun. Es ist eher das Gegenteil, eine unhöfliche, unpersönliche Phrase, 
die automatisch abgesondert wird.

Zum Glück hält die Mehrheit der Forumsteilnehmer davon Abstand, wie du 
ja auch.

von Pandur S. (jetztnicht)


Lesenswert?

> Obwohl ich das als allererstes mache dauert es manchmal ca. 0,5-1 Sek.

Ach ja ? der erste Befehl nach powerup kommt erst nach 500ms ? Naja. 
Allenfalls ist da ein konzept problem dahinter.
Also der Pin, der OE steuert, ist waehrend des Resets tristate. Dann 
muss da ein Widerstand hin, der OE disabelt waehrend des Resets.

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Moota schrieb:

> Zum Glück hält die Mehrheit der Forumsteilnehmer davon Abstand, wie du
> ja auch.

Erst, nachdem ich festgestellt habe, das Unhöflichkeit in diesem
Forum die Regel ist.

von Moota (Gast)


Lesenswert?

Harald W. schrieb:
> Moota schrieb:
>
>> Zum Glück hält die Mehrheit der Forumsteilnehmer davon Abstand, wie du
>> ja auch.
>
> Erst, nachdem ich festgestellt habe, das Unhöflichkeit in diesem
> Forum die Regel ist.

Harald! Du bist nicht unhöflich und die meisten anderen Teilnehmer sind 
es ebenfalls nicht. Was willst du mehr?

von Michael U. (amiga)


Lesenswert?

Hallo,

eigentlich ignoriere ich Postings wie das worauf sich jetzt diese 
Diskussion bezieht.

Ich habe mal spaßeshalber bei google groups in alte Zeiten 
zurückgeschaut. Den "Gruß aus Berlin" benutze ich mittlerweile seit über 
15 Jahren.
Interessanterweise gab es den damaligen fachlichen Newsgroups keinen 
Beitrag, der nicht mit einer kurzen "Unterschrift" beendet wurde.
Werbung oder mehr als (meist) 3 Zeilen Footer war nicht erlaubt und das 
wurde auch durchgesetzt.

Allerdings waren die fachlichen moderierten Newsgoups damals auch 
generell konsequent.
OT wurde konsequent gelöscht, unliebsame User waren eben schnell 
gebannt.
Das hatte auch nichts mit Zensur zu tun, eine Fach-Group, wo beim News 
holen (per Modem!) von 20 News nur eine zum Thema passte hat man nicht 
mehr abboniert. Und eine Group, die kaum jemand abboniert hat, war 
automatisch tot weil dann ja auch niemand die gelesen und geantwortet 
hat.

Die Zeiten haben sich geändert, nicht immer zum Guten.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Ständig wird Multi-kulti, Toleranz und Respekt gepredigt, und hier stößt 
man sich an einer Grußformel? Höchst befremdlich.
  Bitte bleiben Sie beim "Gruß aus Berlin", er ist ein bunter Tupfer.

Gruß aus dem Südwesten

von Moota (Gast)


Lesenswert?

S. Landolt schrieb:
> Ständig wird Multi-kulti, Toleranz und Respekt gepredigt, und hier stößt
> man sich an einer Grußformel?

Du solltest definitiv nicht zu oft in die Kirche gehen.

"Ab heute sind wir tolerant und finden jeden Arsch interessant."
Robert Long

von S. Landolt (Gast)


Lesenswert?

Sie sollten schon richtig zitieren:

"Ab morgen sind wir tolerant, tolerant, tolerant,
und finden selbst die größten Idioten interessant,
wir reichen jedem Arsch die Hand
und was uns stört in diesem Land..."

Wobei mir aber völlig unklar ist, was dieser Liedtext von Robert Long 
mit der Diskussion hier zu tun hat.

von S. Landolt (Gast)


Lesenswert?

Nachtrag:
Auf derselben LP fordert Long ein für damalige Verhältnisse sehr hohes 
Maß an Toleranz ein.

von Bernd B. (gorkde)


Lesenswert?

1) Ich finde es nett wenn jemand grüßt, wenn sich daran wer stört sagt 
das viel drüber aus, warum oft so arrogante Antworten kommen im Netz!

2) 0,5 Sek ist nicht ungewöhnlich, denn der ESP arbeitet noch andere 
Routinen ab ehe er das Programm ausführt, aber das ist eben eine der 
besonderen Eigenheiten dieses Moduls.

von дампфтроль (Gast)


Lesenswert?

Naja. Zwischen Initialisierung der Hardware und Programmausfuehrung ist 
schon ein Unterschied. Egal. Denn ein Reset kann auch laenger dauern, 
wenn man zB am Programmieren ist. Deshalb sollte ein Sicherheitsfeature 
von einem unendlich langen Reset ausgehen. Also mit einem Pullup/-down 
widerstand.

von michael_ (Gast)


Lesenswert?

Harald W. schrieb:
> michael_ schrieb:
>
>>> Nimm doch wenigstens ein Reset-IC an dieser
>>> Stelle.
>>
>> Der ist in dem System vielleicht schon vorhanden.
>
> An den vom TE gewünschten Eingängen?

Ein paar Graue Zellen und den Lötkolben muß man schon in Gang setzen.
Mit ein paar Gatter oder einem weiteren Reset-Baustein geht das.
Da braucht man nicht probieren, da kann man die Verzögerung berechnen.

von Fire H. (fireheart)


Angehängte Dateien:

Lesenswert?

Bernd B. schrieb:
> Nun muss ich irgendwie hardwaremäßig sicher stellen, dass alle Ausgänge
> solange auf Low sind, damit mir später vor dem Initialisieren nicht 4
> Motoren gleichzeitig angesteuert werden und durch den Strom alles
> durchbrennt.

Ich versteh das prinzipiell schon, dass man sich - gerade in der 
Entwicklungsphase - und wir alle hier bauen vermutlich eher Prototypen 
als Massenprodukte - gegen falsch angesteuerte Signale schützen will, 
damit eben im Fall des Falles nicht gleich alles in Flammen aufgeht.
Ich hab mir in solchen Fällen zumeist ein paar "Ableittransistoren" 
geleistet, d.h. wenn zwei Signale nicht gleichzeitig anstehen durften, 
weil sonst irgendwelche Steuertransistoren die Versorgungsspannung 
kurzschließen, dann hab ich mit dem einen Signal das andere über einen 
Transistor auf Low gesteuert. Ist sicherlich nicht die sauberste Lösung, 
spart aber manchen Wutanfall...

von michael_ (Gast)


Lesenswert?

Wenn ich mir aber überlege, wie kurz in einem MC die Initialiserung 
erfolgt,
dann lacht doch ein Motor über den kurzen Impuls.

Nein, ich kann den Sinn nicht verstehen.

von Michael U. (amiga)


Lesenswert?

Hallo,

das ESP8266-Modul ist ein SoC mit einem 32Bit Core und WLAN.
Bei Reset startet zuerst der Bootloader aus dem Rom und meldet sich am 
UART0 (GPIO0 und GPIO3). Dann werden GPIO2 und 15 auf Ihre Pegel 
getestet um den gewünschten Bootmode festzustellen. Entweder 
UART-Download (Programming) oder Flash oder SD-Card (nicht wirklich 
unterstützt).
Vom Flash wird ein Teil der Firmware ins interne Instruktion-Ram geladen 
und ausgführt. Das initialisiert u.a. die WLAN-Hardware usw.
Erst dann startet er auf einer festen Flashadresse die User-Software.
Das dauert eine merkliche Zeit, ich habe es nicht gemessen, aber ein 
angestuertes Relais, daß eine Lampe schaltet, läßt diese kurz 
aufleuchten. Könnten so 100ms sein.
Das zwingt durchaus dazu, sich mit diesen Eigenheiten zu befassen.

Allerdings gab es z.B. keine Antwort auf meinen Hinweis, die '595 mit 
Clock  und Data an den SPI zu hängen und nur das Latch über ein Pin zu 
steuern.
GPIO15 wäre dann frei für SPI /CS, 4 und 5 für I2C, der UART wäre frei.

Sind letztlich aber seine Entscheidungen...

Gruß aus Berlin
Michael

von Bernd B. (gorkde)


Lesenswert?

Michael U. schrieb:
> Hallo,
.
>
> Allerdings gab es z.B. keine Antwort auf meinen Hinweis, die '595 mit
> Clock  und Data an den SPI zu hängen und nur das Latch über ein Pin zu
> steuern.
> GPIO15 wäre dann frei für SPI /CS, 4 und 5 für I2C, der UART wäre frei.
>
> Sind letztlich aber seine Entscheidungen...
>
> Gruß aus Berlin
> Michael

Hallo,

das habe ich gelesen, gab ja mittlerweile viele interessante Vorschläge. 
Wie gesagt ich habe jetzt für die Testphase erstmal einen der MC Pins 
benutzt, den ich später brauche.
Was ich nachher mache werde ich mir nochmal genau überlegen, das mit den 
Transistoren klingt auch interessant.

von Falk B. (falk)


Lesenswert?

Beitrag "Re: Schieberegister 595 hardwaremäßig löschen"

Der ist nahezu pinkompatibel zum75HC595. Das Reset kann man einfach ans 
globale Reset des ESP klemmen.

von Bernd B. (gorkde)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> das ESP8266-Modul ist ein SoC mit einem 32Bit Core und WLAN.
> Bei Reset startet zuerst der Bootloader aus dem Rom und meldet sich am
> UART0 (GPIO0 und GPIO3). ...
>
> Gruß aus Berlin
> Michael

Genau!
Das Hochfahren dauert scho ca. 50ms, dann werden die GPIO abgefragt und 
entweder in den Bootloader geschaltet oder in den normalen Modus.
Dann wird WLAN initialisiert und für eine gewisse Zeit der WLAN Takt auf 
GPIO 0 ausgegeben.
Habe schon überlegt den als Impuls für den Speichertakt beim Reset per 
RC Glied zu nehmen.
Dies geht aber nicht, da wegen dem Pull Wiederstand dann wenn man in den 
Bootloader schalten will alle Ausgänge des 595 auf Hi gehen.
Das allein alles dauert Schätzungsweise 100-150ms.
Wenn uch jetzt nicht die Spannung des ESP unterbreche sondern die 
gesamte, dauert allein wegen meiner Kondensatoren der Boot des ESP 
länger während due HC Bausteine schon arbeiten, daher muss ich mit mehr 
rechnen und das schon beachten.

von Klaus (Gast)


Lesenswert?

Eine Idee:

GPIO0 muß ja bei einem Reset zum Betrieb High sein, sonst geht der Chip 
in den Flash Mode. Ich verwende den daher garnicht. Man kann ihn nach 
der Bootphase sehr wohl zum Ausgang machen. Das High passt hier sogar 
gut als default Signal für das #OE. Mir würde der GPIO0 für den Rest der 
Schaltung nicht fehlen.

MfG Klaus

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Bernd B. schrieb:
> Dies geht aber nicht, da wegen dem Pull Wiederstand dann wenn man in den
> Bootloader schalten will alle Ausgänge des 595 auf Hi gehen.
> Das allein alles dauert Schätzungsweise 100-150ms.

Bernd B. schrieb:
> Eben.
> Das mit OE per ESP Wäre am einfachsten geht aber wiegesagt nicht weil
> ich keinen Pin frei habe den ich dafür nutzen kann.

 Natürlich hast du Pins frei, nur hast du dich, wie Falk schon sagte,
 in etwas festgerannt. Man sollte nach Lösungen suchen und nicht mit
 Gewalt an etwas festhalten (es muss ganz einfach so sein, Schluss).

 RCLK an einen Tiny85 (weil diese billiger als T25-T45 sind) und dein
 Problem ist nicht nur gelöst, du hast sogar bei kluger Programmierung
 noch zusätzliche Pins zur Verfügung.
 ESP.RCLK => Tiny85
 Tiny85 => RCLK + OE    (und noch 3 zusätzliche Pins frei).

 Beim Start:
 Tiny hält OE auf High.
 Nur wenn ein Impuls LOW-HIGH-LOW > 5ms über RCLK (zum ersten Mal)
 kommt, wird OE auf LOW geschaltet und gut isses.

 Im Betrieb (falls später oder überhaupt nötig):
 Impuls < 250ns = RCLK wird durchgeschaltet.
 Impuls > 500ns = Es folgen weitere 8-256 bits auf der RCLK Leitung,
 das können Data oder Commands oder sonstwas sein - Tiny führt das aus.

 Es kann von einschalten irgendwelcher Zusatzgeräte bis zur WS2812 oder
 zusätzlichen Servos oder Motoren so ziemlich alles sein.

 Oder du kannst weiter nach RC-Gliedern suchen...

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
Noch kein Account? Hier anmelden.