www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Shiftregister Programmieren M74HC595


Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Schiftregister ist an meinen ATmega16 angebunden. Ich verwende die
ersten 4 Pins des PortDs. Dabei ist Bit0 der takt und Bit3 ist SI.
Bit1 ist RCK und Bit2 ist G.(Meine ich. Ist schon länger her)
Mit dem Nachfolgenden Programm kann ich alle Pins des Schiftregisters
auf 1 oder 0 setzen.
Programm1:
________________________________________________________________
.include "m16def.inc"
    ;Definitionsdatei einbinden, ggf. durch
                             ;2333def.inc ersetzen
.def temp = r16

         ldi temp, LOW(RAMEND)             ; LOW-Byte der obersten
RAM-Adresse
         out SPL, temp
         ldi temp, HIGH(RAMEND)            ; HIGH-Byte der obersten
RAM-Adresse
         out SPH, temp




     ldi r16, 0xFF
         out DDRD, r16
     ldi r20, 0x00      ;Counterregister
     ldi r21, 0x04      ;Durchlaufangaberegister
     ldi r16, 0b00001000  ;AusgabeRegister

Schleife:
    Cbr r16,0b00000001
    out PORTD, r16
    NOP
    NOP
    sbr r16,0b00000001
    out PORTD, r16

    inc r20
    cp r20, r21
BRNE Schleife

SBR r16, 0b00000010
out PORTD, r16
NOP
Nop
nop
CBR r16, 0b00000010
out Portd, r16

Ende:
rjmp Ende

______________________________________________________

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ersteinmal verwunderlich, da ich herausgefunden habe, dass nur
bei steigender Taktflange geschrieben wird und nicht auch bei
fallender, wie ich es vermutet habe(flüchtigkeit beim Lesen + Stress).
Naja aber wenn ich jetzt dieses Programm laufen lasse:

.include "m16def.inc"
    ;Definitionsdatei einbinden, ggf. durch
                             ;2333def.inc ersetzen
.def temp = r16

         ldi temp, LOW(RAMEND)             ; LOW-Byte der obersten
RAM-Adresse
         out SPL, temp
         ldi temp, HIGH(RAMEND)            ; HIGH-Byte der obersten
RAM-Adresse
         out SPH, temp



         ldi r18, 0b11001100  ;Bytespeicher
     ldi r19, 0b00110011  ;Bytespeicher

     ldi r16, 0xFF
         out DDRD, r16
     ldi r20, 0x00      ;Counterregister
     ldi r21, 0x08      ;Durchlaufangaberegister
     ldi r16, 0b00000000  ;AusgabeRegister

Schleife:
    SBRC r18, 0x0
      rjmp ByteAusleseWennEins
             CBR r16, 0b00001000
        rjmp EndeDerByteAuslese

      ByteAusleseWennEins:
        SBR r16, 0b00001000

      EndeDerByteAuslese:
    out PORTD, r16

;rcall TuNichts
nop

    SBRC r16, 0x0
      rjmp TaktWenn1
        SBR r16, 0b00000001
        rjmp TaktAendernEnde

      TaktWenn1:
        CBR r16, 0b00000001
      TaktAendernEnde:

    out PortD,r16

;rcall TuNichts
    inc r20
    lsr r18
    cp r20, r21
BRNE Schleife


CBR r16, 0b00000010
out PortD,r16
NOP
NOP




SBR r16, 0b00000010
out PortD,r16

;rcall TuNichts
;CBR r16, 0b00000010
/*
rcall TuNichts
SBR r16, 0b00000010
out PortD,r16

rcall TuNichts
CBR r16, 0b00000010

*/

ende:    rjmp ende

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann setzt er alle Pins auf High.
Ich habe schon alles ausprobiert, ich habe sogar den gesampen Speicher
für Haltstatesfunktionen, die sich gegenseitig öffnen aufgebraucht.

Ich dachte einmal, dass es funktioniert hat, aber das war wohl ein
Versehen.
Was mache ich beim 2. Programm falsch(abgesehen, dass ich ebend nur
jeden 2. Schleifendurchlauf sinnvoll verwende) und warum funktioniert
das 1. Programm auf allen Pins, obwohl es nur 4 Pins beschreiben sollte
weil nur jeder 2. Schleifendurchlauf effektiv ist.

Kann das an den 14cm Kabel zwischen dem Atmega16 und dem Shiftgegister
liegen?

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal: Ich hab fast nix gelesen, keine Zeit. Aber: Du benutzt einen
74HC Chip - die sind nicht TTL kompatibel, da der 0-Volt-Pegel anders
ist. Versuch mal einen 2.2K Pullup-Widerstand an den HC-Inputs.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andere Möglichkeit: Du benutzt die 74HCT Version; das ist ebenfalls
High-Speed-CMOS, aber speziell an die TTL Pegel angepasst.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Bezeichnung auf dem Chip ist:
f P0130AG
MM74HC595N
MC74HC595N
Wohin soll ich denn hochziehen?
Nach 5V?
Wie ist denn der LowPegel an den Teilen? Warum steht davon nichts im
Datenblatt?

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau' mal in den Tietze/Schenk, da steht das ganz gut drin. Meines
wissens ist der low-Pegel "passiv" unten, wird also intern nicht auf
masse gezogen sondern kann einfach Strom aufnehmen.
Beim open-collector ist's anders rum, der wird nicht aktiv auf high
gezogen sondern der Kollektor des Aufgnagstransistors ist nur am Pin
und nicht mehr intern angeschlossen.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Schau' mal in den Tietze/Schenk"
Was ist das?

Was ist das denn jetzt für ein Chip? Kann ich den nicht direkt an einen
Atmega anshcließen?
Der zieht an den Ausgängen doch alles aktiv auf 0 oder auf 5V.
Da sollte das mit dem Direktanschluss doch keine Probleme bereiten.

"Aufgnagstransistors" meinst du Ausgangstransistors?
Heißt das, du redest vom Atmel und nicht vom Schieberegister?

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich weiß musst Du die HC-Azsgänge mit 2.2K nach +5V hochziehen.
Der HC-Chip erkennt ein High erst ab 3.5 Volt, bei TTL-Logik jedoch
genügen 2.4Volt. Deswegen vermut ich mal kommt an Deinem
Schieberegister nur Mist an.

"Warum steht davon nichts im Datenblatt?"

Warum sollte es? Es gibt unterschiedliche Typen von Logikfamilien, das
sieht man an der Bezeichnung, z.B. 74HC, 74HCT, 74LS,...
Die haben halt unterschiedliche Spezifikationen für die Pegel.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hab Mist geschrieben; die Pullups kommen natürlich an die Eingänge
vom HC...

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also an den HC595 sollte es ersteinmal nicht liegen. Ich habe diese auch
schon öfters direkt an einem AVR betrieben, ohne Probleme. Problematisch
könnte hardwareseitig aber natürlich die Leitungslänge sein. Bei mir
spielte sich das bisher alles auf einer Platine ab. Widerstände an den
Eingängen des HC könne da schon helfen, da dann etwas mehr Strom über
die Leitungen fließt las nur mit den recht hochohmigen HC-Eingängen.

Das Programm an sich halte ich für "etwas umständlich", wenn es nur
darum geht, ein Byte auf einen HC595 auszugeben. Da sollte es
überschaubarere Lösungen geben. Empfehlen kann ich aber immer, für die
verwendeten Pins Namen und Masken zu definieren, das liest sich einfach
besser (z.B. sbi PORTD,pSCK). Ausserdem würde ich empfehlen, nach
Möglichkeit sbi und cbi Befehle zu verwenden, ist einfacher zu lesen,
kürzer und die anderen Bits des Ports bleiben unangetatstet.

Jörg

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>"Schau' mal in den Tietze/Schenk"
>Was ist das?

Die E-Technik Bibel. Der Buchtitel ist glaubich
"Halbleiterschaltungstechnik"

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Braucht das IC jetzt auch auf Low einen Strom?

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, meint ihr, dass die Leitungen zu stark stören, da die aufgrund der
hochohmigen Eingänge zu stromlos sind?
Gehen auch leicht höhere Widerstandswerte als Pullup. Ich glaube nicht,
dass ich 2.2 genau herumliegen habe, aber 3.3 oder was in der Art habe
ich (recht sicher)
Das müsste noch beim Schrott von Pollin dabeigewesen sein :-)

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe aus mehreren 9KOhm Widerständen einen Wald drangelötet, so dass
jeder Eingang einen 3Kohm Pullup hat.

Es hat NICHTs gebracht. Es ist nur so, dass nun alle Ausgänge auf 0
anstatt auf 5.5V stehen, wenn ich verschiedenartige Daten eingeben
will!

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du es drauf anlegst, dass andere Leute das Programm anschauen, dann
versuch mal es in lesbarer Form rüberzubringen. ggf. als Anhang
(vorzugsweise ohne TAB chars). So wie oben gepostet ist es praktisch
unlesbar.

Leute, was soll das mit den TTL Pegeln? Der AVR ist CMOS mit
ebensolchen Pegeln, der HC595 ist es, also wo ist hier TTL?

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heißt das, das mit dem Pullup bringt nichts? Dann kann ich die ja wieder
herunterlöten..

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit kann ich die Ausgänge entweder auf 1 oder 0 setzen.
Das Programm Läuft so, dass ich die Bits des PortD mit dem Register
verbunden habe. Dabei ist Bit0 der Takt und Bit3 ist mit den Daten
gefüllt. Die anderen beiden Pins sind für die Aktivierung der Ausgänge
und das Storage Register.
http://www.freak5mynew.no-ip.info/Muell/Shiftregis...

Das hier funktioniert genauso, außer dass es ebend nicht funktioniert
:-(

Das Ende habe ich mal weggelassen, da es nur "nop" Befehle sind. Da
das Prog nicht funzte habe ich wahrlos viele nop Befehle eingegeben.

http://www.freak5mynew.no-ip.info/Muell/Shiftregis...
Naja viele bereiche, die mit dem Nichtstun zutun haben habe ich
ausgeklammert usw.
Ich weiß nicht woran der Fehler liegen kann, da das Programm im
Debugger eine gute Ausgabe erzeugt.

Aber irgendwas muss falsch sein.

Ich würde mich freuen, wenn mir jemand helfen könnte!

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo @Freak5,

angenommen die Steuerpins am AT-- werden richtig gesetzt
dann schau mal auf die anderen Voraussetzungen.

Ist das Schieberegister "richtig" an die 5V angebunden?
(Anständige Masseleitung?,
 abgeblockte Versorgungsspannung [C's bei den IC])?
Sind Abschlusswiderstände bei den Schieberegistersteuereingängen
vorhanden [am letzten IC]?
Belasten die Ausgänge der Schieberegister die Versorgungsspannung?

Gruss Kurt

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Abschlusswiderstände bei den Schieberegistersteuereingängen
vorhanden [am letzten IC]?"
Was?
Ich habe zwar zwei ICs zusammen, aber ich kümmer mich jetzt eigentlich
nur um den ersten. Hat das einen Einfluss?
Was bringen diese Abschlusswiederstände?
(die sollten verhindern, dass die Eingänge flattern, oder?)
Muss ich die auf High oder auf Low ziehen und welche Größe?

------------
Sollte ich diese 3KOhm Pullups an den Eingängen wieder entfernen?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Programme sich zwar arg umständlich programmiert und formatiert (mit
TABs ungleich 8 schafft man sich wenig Freunde).

Aber die erste Version sollte 4 Bits mit Wert 1 auf QA-QD ausgeben.
Nach 2 Durchläufen dann komplett auf 1.

Warum beharrst Du auf der zweiten Version obwohl Du ja schon selbst
erkannt hast, dass die Taktung in der Form falsch ist? Die Taktung von
Version 1 zusammen mit den Daten von Version 2 ergeben da schon mehr
Sinn.

Was ist eigentlich mit dem Reset-Pin vom 595 (#10)?

Was passiert wenn der Ausgabe-Teil ungefähr so aussieht?

.equ sclk=0
.equ rclk=1
.equ sdat=3

        ldi     r20, 8

shift:  cbi     portd, sdat
        sbrc    r18, 0
        sbi     portd, sdat
        lsr     r18

        sbi     portd, sclk
        cbi     portd, sclk

        dec     r20
        brne    shift

        sbi     portd, rclk
        cbi     portd, rclk

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Widerstände schaden nichts und nützen nichts. Abschlusswiderstände
halte ich bei 14cm und deinem Timing selbst dann nicht für nötig wenn
der µC mit 16MHz läuft.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
->abgeblockte Versorgungsspannung [C's bei den IC])?
Du meinst Kondensator, oder?
Ich habe einen 20nF Keramikkondensator so zwischen die beiden
Schieberegister gesetzt, dass beide so nah wie möglich dran sind. Das
sind dann höchstens 3cm zu beiden ICs.
Ich mach mal ein Foto:
http://www.freak5mynew.no-ip.info/Muell/Schiebereg...

http://www.freak5mynew.no-ip.info/Muell/Schiebereg...

http://www.freak5mynew.no-ip.info/Muell/Schiebereg...

Naja aufgrund des Widerstandswaldes, welchen ich auf Anraten angelötet
habe, kann man die Leitungen nicht mehr so schön sehen, aber ihr
bekommt einen Überblick über die Kabellängen.
Das baumelnde Ding ist übrigens ein Inverter und später sollte das
eigentlich ein Display über wenige Leitungen steuern!

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A.K.:
Naja die große Version ist meine erste und die zweite (die alles mit
einem Wert vollschreibt) ist die Zweite, die ich zum Fehlersuchen
erstellt habe.

"Aber die erste Version sollte 4 Bits mit Wert 1 auf QA-QD ausgeben.
Nach 2 Durchläufen dann komplett auf 1.
"
Das Verwirrt mich ja!
Wenn ich das so auf den Chip draufhaue bekomme ich am Shiftregister
alles als eins oder (wenn ich das Programm etwas ändere) alles auf 0.
Obwohl nur die Hälfte geschrieben werden sollte.

"Warum beharrst Du auf der zweiten Version obwohl Du ja schon selbst
erkannt hast, dass die Taktung in der Form falsch ist? Die Taktung von
Version 1 zusammen mit den Daten von Version 2 ergeben da schon mehr
Sinn."
Ich habe trotz Ferien einen haufen Stress mit meinem PC(400GB
Datenverlust, Grafikkarte schrott usw.).

Da dachte ich mir, dass das mit der Taktung ja nicht so Der Fehler ist.

Andererseits ist der Fehler superleicht zu beheben und vereinfacht das
Programm sogar.

Ich habe mir gedacht, dass dann ja ein Muster wie 0101 an den Pins
stehen müsste(wenn ich eigentlich 00110011 haben wollte).

Du hast recht, dass ich das unbedingt ändern muss, aber das muss
irgendwoanders dran liegen.. Ich schaue mir mal den Code an...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Resetpin habe ich beim ersten IC dauerhaft auf High
gezogen.(direktverkabelt) Beim IC2 hängt der noch in der Luft, aber IC2
ist mir ohnehin egal, solange auf IC1 absolut nichts ausgegeben wird.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei der Verkabelung wäre je ein Elko (10µF oder so) auf beiden Platinen
(AVR, 595) sinnvoll, der 22nF ist da so ganz allein etwas dünne (lass
den drin, Elko zusätzlich). Und lass bei Test mal den Inverter dahinter
weg.

Mal ganz was anderes: Wie programmierst Du das Teil? Anno dunnemal wie
bei EPROMs? Rausziehen, anderswo reinstecken, programmieren und dann
retour? Ich vermisse nämlich die ISP Anschlüsse.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super Idee, das mit dem Herunterzählen.
In anderen Foren kamen mir bei dem code alle mit Optimierungen an und
haben nicht einmal das so gemacht.

Das mit dem Clear und Set direkt, hätte ich vielleicht auch später
gemacht, aber ich dachte, da brauche ich noch ein paar NOP dazwischen.

Mh außer, dass der Code schlüssig und optimiert ist ist das doch das
gleiche, oder?
(gut gelöst, das mit dem Löschen und dem Danach setzen des Bits. Ich
habe das immer noch so geproggt, als wäre das IC nicht flankengesteuert
)

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ungefähr das, was rauskommt wenn Du die Taktung von V1 mit den
seriellen Daten von V2 kombinierst.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen HC595 kriegst Du nicht so schnell überfahren. Bei 5V verdaut der
typ.54MHz. Mit CBI/SBI hintereinander sind's auch bei 16MHz µC-Takt
maximal 4MHz am SCLK (umso weniger bei 1MHz Standardfrequenz). Solange
es sich also nicht um lange Übertragungsleitungen handelt, ist das
Timing kein Thema.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Multimeter sagt mir, dass alle Ausgänge des IC1 auf High stehen.

@A.K.: Ich habe einen ISP mit Sockel.
http://www.freak5mynew.no-ip.info/Muell/Platine-neu1.jpg
Das Teil hat sogar sofort funktioniert, nachdem ich stundenlang den
Fehler gefunden habe und irgendwan den AVR einfach heftiger in den
Sockel gedrückt habe*g*

http://www.freak5mynew.no-ip.info/Muell/Platine-fehl1.jpg
http://www.freak5mynew.no-ip.info/Muell/Schaltplan1.png
Dieses Forum hat mich bewart diese Platine zu benutzen, wo ich
dummerweise den Schaltplan eines 20Pin alt AVRs benutzt habe, was ich
gar nicht gemerkt habe peinlich.

Wartemal.. Ich such mal das Layout von meinem Schiftregisterteil. Dann
kannst du die Verkabelung auch sehen

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A.K.:
Jou der Chip ist heftig schnell, wenn man bedenkt, dass man den einfach
so bei Reichelt bekommt. Ich hätte etwas viel trägeres erwartet.

"Und lass bei Test mal den Inverter dahinter
weg." Hast recht. Der geht höchstens noch kaputt, wo er doch
funktioniert.

"Bei der Verkabelung wäre je ein Elko (10µF oder so) auf beiden
Platinen
(AVR, 595) sinnvoll, der 22nF ist da so ganz allein etwas dünne (lass
den drin, Elko zusätzlich). "
Mache ich mal morgen...

Ich muss mir unbedingt durchlesen, wie man das berechnet. Für nen Atmel
haben mir vorher immer alle 22nF emfohlen.
Oder meinst du, dass ich auch gegen tiefe Störungen schirmen muss,
anstatt nur gegen Hochfrequenz?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Standard-Abblockkondensator für jedes einzelne Logik-IC empfiehlt
sich ein 100nF-Keramikkondensator, der möglichst nahe an den
Versorgungsspannungsanschlüssen des ICs unterzubringen ist.
Es gibt auch IC-Sockel, in die ein solcher Kondensator gleich eingebaut
ist.

Für die gesamte Platine (die ihre Versorgungsspannung ja über ein
längeres Kabel bekommt) ist dann zusätzlich ein 10 µF-Alubecher ratsam.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yep, an das Bild erinnere ich mich. Allerdings auch an den Tip mit dem
Elko. Zu berechnen gibt's da übrigens nichts (für Normalbastler), das
eher Erfahrung/Tradition/machtmanhaltso.

Grund: Elkos taugen nicht für hohe Frequenzen, Kerkos nicht für tiefe.

Soll heissen: pro IC einen 100nF Keramik-Kondensator (22nF geht
auch)direkt zwischen die Augen. Und auf jede beteiligte Platine kommt
je nach Grösse mindestens einer mit 10-47µF oder so, was halt grad da
ist. Und der kommt ungefähr dort hin wo der Strom auf der Platine
ankommt.

Ich will nicht sagen, dass dies der Grund ist. Kann sein, kann nicht
sein. Aber so gehört sich das einfach.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mh ich dachte nur, dass ich von Niedrigen Störungen weitgehend verschont
bin, da ich erstmal noch keine wirkliche Last habe und auch ein halbwegs
ordentliches NT habe. Ich probiere es morgen früh aus. Jetzt muss ich
erstmal schlafen.

P.s.: @A.K.
An welches Bild erinnerst du dich? Warst du der, der bemerkt hat, dass
ich sogar das falsche Datenblatt gelesen habe?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich war der, der sich gefragt hat ob Du überhaupt eins gelesen hast.

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die AVR's geben kein TTL sondern ein "C-Mos-Signal" aus.
Dadurch ist es egal ob Du HC- oder HCT-Typen verwendest.
Die 3.3 K Widerstände sind also sinnlos, sind zudem als
"Abschlusswiderstände" ungeeignet.
Diese sollten irgendwo bei 100..600 Ohm liegen.

Wenn die "Anbindung" an den AVR passt dann sind sie bei 15 cm nicht
unbedingt notwendig.
Dadurch dass die Schieberegister so schnell sind (siehe weiter oben)
sind sie auch für Leitungsreflektionen und Spannungseinbrüche sehr
empfindlich.
Manchmal hilft es auch wenn man den Takt-Eingang und /oder Dateneingang
mit einem Kondensator zusätzlich belastet (einige pF).
Das gibt eine zeitliche Verschiebung und entkoppelt dadurch bei
zeitkritischen Vorgängen in den IC_s.
Wenn der Bezugspunkt (Masse) nicht OK ist dann gibt es auch keine
anständige und zuverlässige "Schiebung".
Wenn die 5V "einbrechen" können, dann ist das ebenfalls ein Problem.

Setz mal das SR-register massemässig direkt an den Bezugspunkt des
AVR's (nicht an die Zuleitungsmasse), entkopple die
Versorgungsspannung durch eine Drossel (R-geht auch), lege die 5V dann
durch einen "dicken" Elko (10..100uF) an die Leine und baue in deine
SW eine starke Verzögerung ein damit Du die Abläufe direkt in
"auseinandergezogener" Zeit beobachten kannst (LED's an die
Steuerleitungen).
Dadurch ist es möglich die einzelnen Abläufe zu beobachten und es
werden die "Fehler" (SW oder HW) schnell erkennbar.
Dann erkennt man auch wenn die SW das vorher eingeschobene Byte ev.
gleich wieder überschreibt (LED's an den Ausgängen des SR sind auch
sehr hilfreich).

Viel Erfolg Kurt

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Manchmal hilft es auch wenn man den Takt-Eingang und /oder
Dateneingang
mit einem Kondensator zusätzlich belastet (einige pF)."
Mh du meinst, so kann man HF auf der Leitung vorbeugen...?

"Setz mal das SR-register massemässig direkt an den Bezugspunkt des
AVR's (nicht an die Zuleitungsmasse), entkopple die
Versorgungsspannung durch eine Drossel (R-geht auch), lege die 5V dann
durch einen "dicken" Elko (10..100uF)"
Eine Drossel habe ich leider nicht...

Ich bastel mir dann erstmal einige DebugLEDs und die Elkos.

Ich kann mir aber nicht erklären, dass immer alle Daten im SR gleich
sind. Kann das durch HF am Takteingang kommen??

Sollte ich nicht irgendwie für eine Einschaltverzögerung des AVRs
sorgen? Im Moment arbeitet der nämlich direkt los, was zu Problemen
führen kann.(denke ich mal)

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie groß sollen die Kondensatoren an den Dateneingängen denn genau sein?

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Wie groß sollen die Kondensatoren an den Dateneingängen denn genau
sein?"
es hilft nut probieren (10...200pF)

Wenn die Platine Massemässig gut ist dann sind keine solchen
"Hauruckmassnahmen notwendig)

"Eine Drossel habe ich leider nicht..."
ein R von 22..100 Ohm tuts auch und wirkt manchmal Wunder.


"Mh du meinst, so kann man HF auf der Leitung vorbeugen...?"
53 Mhz sind eine Menge Zeug.


"Sollte ich nicht irgendwie für eine Einschaltverzögerung des AVRs
sorgen? Im Moment arbeitet der nämlich direkt los, was zu Problemen
führen kann.(denke ich mal)"

Das SR ist wesentlich schneller bereit als jeder üC
(wenn die Stromversorgung passt).

Das ist nur die garantierte Geschwindigkeit.

Es kann durchaus sein dass eine Leitung an so einem Pin als Antenne
wirkt (Lamda/4 von 100 Mhz  sind 75 cm)  die dann am ihrem Fusspunkt
eine 50 Ohm Steuerlast vorfindet und richtig strahlt!
Es geht hier aber weniger um die verhinderung von HF sondern um
Zeitverzögerung.

"Ich kann mir aber nicht erklären, dass immer alle Daten im SR gleich
sind. Kann das durch HF am Takteingang kommen??"

Das deutet eher auf "falsche" bedienung des SR.
Es kann sich um falsche Signale (vom AVR)  , Mehrfachtaktung durch
Reflektionen auf der Zuleitung, Signalverkoppelung auf der SR-Platine
(Masseschleifen) usw handeln.

Grober Ablauf:
Die Steuersignale werden vom AVR-Ausgang erzeugt, laufen dann über die
13cm zum SR und über die Masseleitung wieder zurück.
Der Bezugspunkt am AVR ist der GND-Pin, über dies "Masseleitung" zum
SR laufen aber auch noch die Ströme für die IC-S des SR, die Ströme der
Ausgänge des SR's usw.
Da das kein statischer sondern ein hochdynamischer Vorgang ist (siehe
die Mhz-en) kommt es zu schnellen Strom-Änderungen, welche sich dann
als HF bemerkbar machen und Spannungseinbrüche bzw. Spannungsspitzen
verursachen und die [gewollte] Funktion überlagern.

Eine Lamda/4 Antenne ist an der "heissen Spitze" nahezu unendlich
Hochohmig, es fliesst also kein Strom (sie ist praktisch für bestimmte
Frequenzen als Leiter unsichtbar).


Sind wirklich alle Steuereingänge des SR "geklemmt"  (/SCLR, /OE )?
Ist sichergestellt dass sich die Steuersignale vom AVR nicht überlappen
usw. ?

Kurt

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du eigentlich mal ein Oszilloskop angeschlossen und Dir die
verschiedenen Signale angesehen? Ist bei solchen Problemen seeeeehr
ratsam.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Ich habe kein Oszilloskop.

@Kurt: Was meinst du damit:
"Sind wirklich alle Steuereingänge des SR "geklemmt"  (/SCLR, /OE
)?
"
Meinst du, dass der Sockel vielleicht nicht sitzt?

P.S.: Mein Netzteil hat übrigens einen Abflug gemacht. Ich muss jetzt
warten, bis ich ein neues kriege.
Das ist wirklich hinüber. Wenigstens geht das Licht aus, wenn man es
einsteckt!

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kurt:
So wie du das mit dem Signalrücklauf beschreibst habe ich die
Masseleitung vielleicht etwas ungünstig verlegt. Ich bin beim Verlegen
davon ausgegangen, dass die Frequenz niedrig genug ist. Aber wie du auf
dem Layout sehen kannst, kreist die masse ganz schön durch die
Gegend....

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Apropos Abflug: Das ist nicht zufällig ein zweckentfremdetes
PC-Netzteil? Der Stecker schaut ja danach aus. Falls doch: die brauchen
eine ziemlich deutliche Minimal-Last, ohne die wird's kritisch, und so
ein bischen AVR langt dafür nicht annähernd.

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ja das mit den Masseleitungen ist aufgefallen, darum diese
"Eindringlichkeit"

"
@Kurt: Was meinst du damit:
"Sind wirklich alle Steuereingänge des SR "geklemmt"  (/SCLR, /OE
)?"

Meine damit ob sie auf Masse oder + gelegt sind
das mit dem "/" bedeutet dass sie auf Masse müssen um Aktiv zu sein
(/OE = Output Eneable)  /SCLR heisst Schieberegister löschen)

also /OE auf Masse  und /SRCR auf +


Kurt

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, meinst du mit OE dieses G?
Das müsste mit Bit2 steuerbar sein! Das habe ich auf Masse. Ich habe
vorher schon gemerkt, dass es auf 5V nicht funzt.
SCLR habe ich per Leitung auf 5V.

@AK: Also ich ziehe schon einige A mit den Deltas.
Vielleicht 2 oder so.

Als ich noch ein paar Deltas dazugehängt habe und eine Pumpe, dann ist
das Ding abgeraucht.

Sogar welche von Enermax haben mir gesagt, dass so ein paar lüfter
reichen müssten.

Ein Lüfter Zieht normalerweise 0.9A auf 12V.
Ich habe dem NT 4Lüfter auf 24V gegeben und dann ist es irgendwie
abgeraucht.

Schätzungsweise habe ich dabei so um die 6A verbraucht, da die -12V zur
+12V in Wirklichkeit eher 21V bieten.

Mh ich dachte eigentlich immer, dass Netzteile sich von alleine
ausschalten, wenn sie warm werden....

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die -12V ist nur minimal belastbar, da ist nur ein Negativ-Längsregler
drin.

...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte die früher nicht auch mal eine spule?

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwar jetzt keine Möglichkeit etwas zu testen, da mit eine
Stromversorgung fehlt und ich meine PC-Hardware nicht gefährden möchte,
aber mir ist aufgefallen, dass das Shiftregister alle Ausgänge auf den
letzten Wert setzt, den ich eingeschoben habe.

Das finde ich irgendwie eigenartig.
Ich könnte mir das nur dadurch erklären, dass die Taktleitung flattert
und deshlb den Letzten Wert durch das ganze Register Schiebt.

Einen Grund hätte das Ding vielleicht, da mein PC offen steht und sogar
Radios in benachbarten Räumen komplätt stört.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann sich jemand vorstellen, wodurch dieser Effekt auftreten kann?

Durch einen falschen Code kann man ja eigentlich ausschließen. Eine
falsche Ansteuerung sollte  auch nicht solch einen Fehler verursachen,
da so das Schreiben gar nicht möglich wäre.

Also muss irgendwie der Takt hardwaremäßig so flattern, dass die Bits
alle auf dem letzten Wert durchgeschoben werden.

Könnte das zum Beispiel durch normalen stark erhöhten Elektrosmog
entstehen?
Hängt das mit einem falschen Layout zusammen?

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich hab die Dinger vor Monaten auchmal probiert und habs nie
hinbekommen. Wollte ein LCD damit ansteuern, und hatte das gleiche
Problem. In Foren hab ich keine Hilfe gefunden. In einem englischen
Forum war ein Typ der genau das gleiche Problem hatte - wieder keine
Lösung.

Ich bin nicht draus schlau geworden, woran's liegt; an
Störeinstreuungen lags bei mir aber definitiv nicht. Ich würds mal mit
nem kleinen Keramik-Kondensator zwischen Taktleitung und Masse
probieren.

Sag bescheid wenns klappt, interessiert mich auch!

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Keramik versuche ich sofort.
Im Moment spielt der Chip nämlich TOT! Ich habe ihn vorhin ganz normal
in Betrieb genommen, aber er hat gar nicht die normalen Fehler, wass
mich beunruhigt. Hoffentlich ist keine Lötstelle an der platine kaputt
bibber

Ich frage am wochenende mal ein paar Leute an der Uni. Vielleicht
wissen die was.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.