Schieberegister mit Bascom zeigt keine Reaktion

Gast #3623968
Hallo bin dabei eine Nixie Uhr zu bauen, nun habe ich das Problem mit 
den verbauten Schieberegistern (74HC595), dass eigentlich gar nichts 
passiert die Pins MR, STCP, SHCP und DS hängen am Controller und OE habe 
ich direkt auf Masse gelegt. Der Programmcode sieht folgendermaßen aus:

"If _sec_alt < _sec Or _sec_alt > _sec Then

   _sec_bcd = Makebcd(_sec)
   _min_bcd = Makebcd(_min)
   _hour_bcd = Makebcd(_hour)

   Scl = 0
   Scl = 1

   Shiftout Shift_pin , Clock , _sec_bcd , 3 , 8
   Shiftout Shift_pin , Clock , _min_bcd , 3 , 8
   Shiftout Shift_pin , Clock , _hour_bcd , 3 , 8

   Rck = 1
   Waitms 10
   Rck = 0

_sec_alt = _sec


End If"

Die Pins die am MC hängen sind als Ausgänge konfiguriert an PA.2 bis 
PA5.
Ich verwende einen ATmega32.
Ich habe die Register kaskadiert und immer 4 Ausgänge der Register auf 
die Eingänge von Nixietreibern gelegt.
Wenn OE nun auf Masse liegt leuchtet immer nur eine 9 der Röhre und wenn 
ich OE auf VCC (5V) lege leuten ein paar Nullen eine eins und eine 
zwei!?!
Wo könnte da der Fehler liegen?

Schöne Restostern noch,

Danny
Gast #3624273
danny schrieb:
> Wenn OE nun auf Masse liegt leuchtet immer nur eine 9 der Röhre und wenn
> ich OE auf VCC (5V) lege leuten ein paar Nullen eine eins und eine
> zwei!?!

/OE gehört auf 0V damit die Ausgänge eingeschaltet sind. Wenn du die 
Ausgänge in Hi-Z schaltest (/OE = high) dann sieht die nachfolgende 
Stufe irgendeinen Pegel wenn da keine Pullups dran sind.

rgds
Gast #3624292
Oft wird aber auch OE, während des Schiebens auf High gezogen, um 
unsinnige bzw. zweideutige Zwischenzustände zu vermeiden.

Also:
-OE=1
"schieben"
-OE=0

Allerdings darf dann die nachfolgende Hardware ihrerseits, aus dem 
Z-Zustand, keinen Blödsinn ableiten.
Gast #3624309
Amateur schrieb:
> Oft wird aber auch OE, während des Schiebens auf High gezogen, um
> unsinnige bzw. zweideutige Zwischenzustände zu vermeiden.

Hochohmigen Zustand mit OE nutze ich immer nur, wenn mehrere Ausgänge 
zusammengeschaltet sind. Zum Schieben ohne die Ausgänge zu beeinflussen 
ist SHCP da.
Gast #3624312
Hugo schrieb:
> Amateur schrieb:
>> Oft wird aber auch OE, während des Schiebens auf High gezogen, um
>> unsinnige bzw. zweideutige Zwischenzustände zu vermeiden.
>
> Hochohmigen Zustand mit OE nutze ich immer nur, wenn mehrere Ausgänge
> zusammengeschaltet sind. Zum Schieben ohne die Ausgänge zu beeinflussen
> ist SHCP da.
Sorry, nicht SHCP sondern STCP.
Gast #3624314
Ich vergaß, ganz Wichtig ist das ausschalten der Ausgänge, wenn Du, was 
ja fast normal ist, byte-weise ausgibst:

Ein Beispiel hierzu:
a. Schieben nach links
b. Ausgangsbyte = 00010001
c. Es soll 00010000 ausgegeben werden

Zustand Bitmuster Bewertung
0       00010001  Soll alt
1       00100010  Unsinn
2       01000100  Unsinn
3       10001000  Unsinn
4       00010001  Zufällig alt
5       00100010  Unsinn
6       01000100  Unsinn
7       10001000  Unsinn
8       00010000  Soll neu
Machen Deiner Hardware die "wandernden" Einsen nichts aus - kein 
Problem.
Irritiert diese die für mehrere Taktzyklen "stehende" 1 - dann schon.
Alle anderen Ausgänge zappeln, je nach Zustand, auch.
Gast #3624471
Danke schonmal für die vielen Antworten.

Der Schaltplan ist leider etwas zu groß um ihn als PNG oder GIF 
hochzuladen.

Hab mehrere Platinen, der Controller sitzt zB auf einer anderen als die 
Register und die Nixie Treiber, welche sich eine Platine teilen.

Wenn ich die Controller Platine abziehe von der Register Platine ändert 
sich in der Anzeige gar nix, obwohl wie Pins für die Ansteuerung alle 
Durchgang haben.

Der Programmcode den ich im ersten Post angehangen habe sollte aber 
funktionieren. oder?
Gast #3624657
danny schrieb:
> Der Programmcode den ich im ersten Post angehangen habe sollte aber
> funktionieren. oder?

Hallo danny,

ich kann jetzt kein bascom .... aaaber:
> If _sec_alt < _sec Or _sec_alt > _sec Then

Da gehört schon ausreichend gehirnverrenkung dazu um das flüssig zulesen 
wie in der deutschen Sprache sollte auch im programmieren interpunktion 
und satzzeichen guter stil sein besonders wenn das jemand andere 
irgendwann mal lesen soll also ein bischen mehr an klammern und und und

Merkste was?

Nebenbei: Ich kenne die Operatorvorränge von Bascom nicht. Ist das "OR" 
dem Vergleich vorrangig oder nachrangig? Ist das Or binär oder logisch?

Was kommt denn an den Pins raus? Schon mal da nachgeschaut? Wenn nicht 
mit Scope dann mit Logikstift?

rgds
Gast #3624744
> If _sec_alt < _sec Or _sec_alt > _sec Then


Was ist aber, wenn sec = sec_alt ist?

Oben steht doch: wenn sec-alt kleiner ist als sec, oder wenn sec_alt 
größer
ist als sec, dann mache los....


MfG Paul
Gast #3625356
Hallo,
für die Syntax von Bascom kann ich leider nichts, klar könnte man das 
sicherlich schöner machen aber das passt eigentlich.

Wenn _sec_alt = _sec dann wird nichts neues in die Register geschoben da 
sich da die Uhrzeit nicht verändert.

Die Controller Ausgänge sollten passen hab zu Testzwecken leds 
rangehangen, da ich nichts anders da hab.

Könnte es daran liegen das ich die Kondensatoren auf der Register 
Platine einige cm von den Ics weg gesetzt habe?

Oder kann es Probleme damit geben wenn die Ics eine Versorgungsspannung 
von 6,2V haben und die Pins von Controller nur knappe 5V rausgeben?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.