mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Schieberegister 74595 - Bascom


Autor: BascomBeginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich versuch nun seit zwei Stunden zwei 74595 Schieberegister 
anzusteuern. Sie sollen an einer Alphanummerischen Azeige die einzelnen 
Segmente ansteuern. Dazu wurde der Takt, Latch und Reset der beiden 
verbunden. Ein zeichen besteht aus 2 Bytes, aus denen immer je ein Bit 
in die Register eingelesen wird. Der Zeichensatzt ist jetzt natürlch 
nicht angehängt.

Das Problem ist jetzt dass bei dem einem Register (Daten durch PA1) fast 
immer nur einsen ausgegeben werden (auch wenn ich bis auf eine eins nur 
nullen einlese) und das andere fast immer nur nullen ausgibt(Daten durch 
PA3). Output enable habe ich fest auf die Masse gelegt.

Hat jemeand eine Idee was ich falsch mache?

Reset = PA5
Takt  =PA6
Latch=PA4



   For Q = 1 To 10                                          'das ganze für 10 Stellen
   Porta.5 = 0                                              'Schieberegister reset
                                                            'Reset aufheben
   Porta.5 = 1                                              'Die Bits aus den Bytes holen
   For Ab = 0 To 7                                          '2 Bits einlesen
   Porta.1 = D(q).ab
   Porta.3 = C(q).ab

   Porta.6 = 1                                              'ein Taktimpuls
   Porta.6 = 0

   Next Ab                                                  'ein Latchimpuls nachdem ein Byte eingelesen wurde
   Porta.4 = 1
   Porta.4 = 0
   Porta.7 = 1                                              'Stellenzähler +1
   Waitms 1                                                 'warten
   Porta.7 = 0                                              'Stellentakt wieder auf 0



   Next Q


Autor: Carsten Pietsch (papa_of_t)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mangels genauerer Angaben ein allgemeiner Tip: Vereinfache Deinen Code. 
Schreibe erstmal eine Programmschleife, die nur EIN Schieberegister 
bedient, und schiebe ein einzelnes Bit z.B. auf Tasterdruck je eine 
Stelle weiter und miß, ob es nacheinander an allen Ausgängen ankommt. 
Evtl. geht es erstmal nicht und Du kommst darauf (durch Messen von 
Latch, Reset usw.), wo der Fehler liegt. Nebenbei: Du kannst auch das 
letzte Ausgangspin auf den Eingang des zweiten Schieberegisters 
schalten, dann sparst Du ein Ausgabepin.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst die SREGs auch nicht jedesmal resetten...

Ich hab das so gemacht(Assembler):

-Datenbit auf Pin schreiben
- SCLK-Impuls
- nächstes Datenbit
.
.
.
RCLK-Impuls

Ausserdem verwende ich den OE zum Abschalten der SREGs und der Reset ist 
auf festen Potential und wird nicht vom Controller geändert.
Wie ist denn dein Schaltplan?

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uf ne weile her...
soweit ich  mich erinnnere muss der Taktpuls, wie du ihn nennst, dauernd 
anliegen, der Latchpuls orientiert sich an diesem...

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


unter bascom solltest du mit dem shiftout befehl arbeiten.
der ist einfach und funktioniert sehr zuverlässig.
als tipp zum debuggen (so habe ich das auch gemacht):

nimm erst einmal 3 kleine taster und versuche so daten in die register 
zu shiften.
meist hat man sich irgendwo mit der korrekten impulslage vertan.
die anfangsbedingungen müssen natürlich bezüglich der pulslagen genau 
stimmen.
benutze kurze leitungen zu deinen schieberegistern < 50 cm.
das timing ist unkritisch, die dinger sind rasend schnell.
ein paar waistates können aber nicht schaden.


dietmar

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die üblichen 100nF an allen Logikbausteinen schaden auch nichts. 
Ausserdem die Taster entprellen, wenn du mit ihnen testen willst.

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie siehts eigentlich aus, wenn ich z.b. 5 74HC595 in serie schalte und 
sich diese auf 3 verschiedenen Prints befinden, hab ich das probleme 
wenn ich handelsübliche steckverbinder verwende?
wenn ich sagen wir mal maximumm mit 100kHz takten will, wie siehts aus 
mit der maximalen leitungslänge? was kann grundsätzlich gemacht werden, 
damit die max. leitungslänge erhöht werden kann (kann allenfalls eine 
treiberstuffe dazwischengeschaltet werden?

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas hab ich grade gemacht. Unter der Decke hängt eine
Zwischendecke und darauf sind 8 Module mit je einem 74595
drauf. Die einzelnen Module sind mit Flachbandkabel
über Pfostenstecker verbunden. Kabellänge von einem
Modul zum nächsten, ca. 60 cm.
Keine Probleme.

Ach ja. Taktfrequenz:
Was der ATMega8 bei 12 Mhz hergibt.

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.