Hallo Karl Heinz,hallo Hard/Softwarefans,
richtig : Trickreich, wie Karl Heinz geschrieben hat.Und ich finde
diesen Trick wirklich genial.
Leider ist dieser Trick nicht von mir, sondern er ist aus einem Artikel
aus der EDN.Um unnötiges Kopfweh zu vermeiden möchte ich kurz die
Funktion des RC-Filters erklären (Oszillogramm siehe Oszi.jpg)
Erst einmal bitte merken, daß der 74HCT164 die Daten an Pin1/2 mit der
positiven Flanke des Clocksignals übernimmt !
Auf dem Bild ist die obere Kurve das Datensignal an Pin 1/2, die untere
der Clock auf Pin 8.
Starten wir also das Bild von der linken Seite und arbeiten uns nach
rechts durch:
Am Anfang sind beide Signale (Clock und Data) auf "1".Wenn eine "0"
geschrieben werden soll, so stellt die Software den Ausgangspin des AVR
auf "0" und wartet einige Zeit.Durch diese "0" am Ausgangspin wird der
Kondensator über den Widerstand entladen.Nach einem Software-Delay wird
nun der Ausgangspin kurz auf "1" geschalten.Durch den entladenen
Kondensator und den Clock von "0" auf "1" wird nun eine "0" in den
74HCT164 geschrieben.Wie man am Datensignal sieht, wird der Kondensator
durch die "1" des Clock-Pulses kurz aufgeladen.Dies stört aber nicht, da
das Datensignal bei der "0"->"1" Flanke ja "0" war.
Soll eine "1" geschrieben werden, so wird der Ausgangspin des AVR eine
bestimmte Zeit auf "1" gesetzt, der Kondensator lädt sich daher in
dieser Zeit auf die +5V auf.Nach dem Delay wird der Ausgangspin auf "0"
und dann gleich wieder auf "1" gesetzt.Mit dieser "0"->"1" Flanke des
Clocks wird nun eine "1" in den 74HCT164 geschrieben.
Nun kommt der "Drop" in´s Spiel.Hier ist die zeitliche Limitation der
Funktion zu sehen:Während es beim "0"-schreiben nicht weiter stört, wenn
sich der Kondensator kurz auflädt, so stört es aber beim "1"-schreiben,
wenn sich der Kondensator zu weit entlädt.Das Datensignal muß auf jeden
Fall noch über der "1"-Schwelle des IC´s bleiben, um als "1" erkannt zu
werden.Mein Software-Treiber schafft mit den in der Schaltung
angegebenen Dimensionierung des RC-Gliedes einen Clock-Frequenzbereich
von 500 KHz bis 8MHz.Bei einer Taktfrequenz unter 500 KHz ist der "Drop"
so stark, daß keine "1" mehr erkannt wird, weil sich der Kondensator zu
weit entlädt.Man muß also in dieser Situation das RC-Glied modifizieren.
Bei einer Clock-Frequenz über 8MHz muß der Delay in der Software
verlängert werden, weil sich sonst der Kondensator nicht vollständig
entladen/laden kann.
So,ich hoffe, meine Erklärung war nicht zu langatmig und hat zum
Verständnis beigetragen.
Ich finde dieses RC-Glied aber trotz alledem EINFACH GENIAL!!
Liebe Grüße aus Wien