www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M74HC595 und ATmega16 - Die Ansteuerung funzt nicht ganz.


Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche durch ein Programm an meinem Atmega16 einen M74HC595
anzusteuern. Die Verbindung besteht so:
PD0=SCK
PD1=RCK
PD2=G
PD3= SI

R18 enthält das Byte, welches in das Schieberegister geschoben werden
soll.

Der Fehlerbericht geht so.
OK: erst war alles Tristate. Dann habe ich G auf LOW gezogen.
Dann war erst alles auf 0. Dann habe ich SCLR welches vorher frei
herumhing auf 5V gelegt.
Ich meine, das war der Zeitpunkt wo die Ausgänge verschiedene Werte
hatten, die aber nicht mit R18 übereinstimmten.
Es war eher so, dass 2 Pins einen anderen Wert hatten und der Rest auf
High war. Es war also nicht nur eine Spiegelung oder so.

OK dann habe ich Pausen eingefügt, was aber nur dazu führte, dass
zwischenzeitlich alles auf High war und bei noch mehr Pausen ist jetzt
alles auf Low.

Das aktuelle Programm ist dies:
http://www.freak5mynew.no-ip.info/Muell/AVR-source...

Liegt das am Programm?

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Reset Pin vom 595 auf 1 setzen
2. Output Enable vom 595 auf 1 setzen
3. Datenpin mit Daten belegen (entweder 0 oder 1)
4. ShiftClock 0 ->1 (und wieder 0 meinetwegen)
   zu Punkt 3, bis Register voll ist
5. LatchClock 0 ->1 (und wieder 0)
in diesem Moment sind die Ausgänge aktualisiert

Das Ganze funzt auch bei 16Mhz ohne WaitStates!

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja das sind so um die 14cm Flachbandkabel zwischen dem Atmel und dem
Shiftregister.

LatchClock ist der StorageRegisterClock, oder? Wenn ja, dann habe ich
den.
Muss der danach wieder 0 sein?
Ich habe es aber auch schon ausprobiert, wenn der öfter hin und
herschaltet.

Ich mache mir mal gleich ein Testprogramm, welches das Register einfach
nur mit 1 oder 0 füllt.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LatchClock ist der StorageRegisterClock, oder? Wenn ja, dann habe ich
den.
Muss der danach wieder 0 sein?

Richtig, wird hin und wieder auch als SRC (storage register clock)
bezeichnet. Das mit der 0 ist optional, weil nur die 0->1 Flanke vom
595 ausgewertet wird. Ich mach´s nur aus Gewohnheit so, daß ich
nichtinvertierende Eingänge als default immer 0 setze und invertierende
als 1. Somit ist die darauf folgende Flanke gleich die richtige.
Übrigens, die 14cm Flachband sollten´s nicht sein, habe 16 gestapelte
HC595 über 30cm Flachband mit 128 LEDs als Statusboard an ´nem 13Mhz
AtMega162 hängen und absolut keinen Horror damit. Alle Ausgaben habe
ich über "sbi" und "cbi" Befehle am entsprechenden Port gelöst,
direkt aufeinanderfolgend. Wichtig ist halt nur, daß Du den Port,
speziell die Clockleitungen, nicht für andere Ausgaben benutzt und das
Datenrichtungsregister auch immer schön gesetzt bleibt für diese Pins.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, und immer erst den Datenpin aktualisieren, dann clocken!

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.