www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 74HC597


Autor: Jörg Günzel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hat schon mal jemand mit dem obigen Baustein gearbeitet. Soweit ich das
aus dem Datenblatt verstanden habe, braucht man hier zum Ansteuern (z.B.
mittels eines Mikrocontrollers) 4 Leitungen (3 Steuerleitungen +
Datenleitung). Ist das richtig? Mir ist nicht ganz klar, warum zum
Übertragen des äußeren Zustands auf das Schieberegister Informationen
von zwei Steuerleitungen gebraucht werden.  Beim 74HC595, der ja
genauso arbeitet (allerdings in die andere 'Richtung'), sind nur 3
Leitungen (2 Steuerleitungen + Datenleitung) nötig, oder?
Gruß Jörg

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Namensvetter,

sieht auf den ersten Blick schon etwas "doppelt gemoppelt" aus mit
dem STCL und dem /PL Signalen. Wenn es nicht unbedingt dieser HC597
sein muss, könnte ich Dir noch den 4021 oder den HC165 empfehlen für
das serielle Einlesen von digitalen Signalen.

Jörg

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme deshalb den 74HC165, da brauchts nur 3 Leitungen:

- parallel Laden
- Schiebetakt
- Datenausgang

Warum das beim 597 so ist, kann ich Dir auch nicht sagen.

Das Gespann 74HC165/74HC595 sieht man jedenfalls sehr häufig für
IO-Erweiterungen.


Peter

Autor: Jörg Günzel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch!
Ist denn der HC165 oder 4021 auch kaskadierbar?
Jörg

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Den HC165 habe ich auch schon recht häufig verwendet, ungünstig ist
dabei lediglich die "falsche Polarität" des Ladesignals im
Zusammenspiel mit dem HC595. Damit braucht man beim geichzeitiegn
Einlesen und Ausgeben normalerweise je 1 Ladesignal für Ein- und
Ausgang. Mit einem H schaltet der HC165 in den Shift-Mode, der HC595
übernimmt die SR-Wert aber mit der L-H-Flanke an seine Ausgänge.
Deshalb bin ich auf den 4021 gestoßen (den gibt es auch als HC4021). Da
reicht mir dann ein "CS"-Signal.

Jörg

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg
 Ja, beide sind kaskadierbar, besitzen also einen seriellen
Dateneingang.

Jörg (der andere, ich schreib mir doch nicht selbst)

Autor: Programist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der is eigentlich einfach zum Ansteuern.
Hier http://romux.com/tutorials/pic-tutorial/shift-registers wird 
erklärt wie es geht.

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Günzel schrieb:
> Hallo,
> hat schon mal jemand mit dem obigen Baustein gearbeitet. Soweit ich das
> aus dem Datenblatt verstanden habe, braucht man hier zum Ansteuern (z.B.
> mittels eines Mikrocontrollers) 4 Leitungen (3 Steuerleitungen +
> Datenleitung). Ist das richtig? Mir ist nicht ganz klar, warum zum
> Übertragen des äußeren Zustands auf das Schieberegister Informationen
> von zwei Steuerleitungen gebraucht werden.

Das ist ein zweistufiger Prozess. RCK lädt das Inputregister mit den 
Werten des parallelen Eingangs. S/L überträgt dann den Inhalt des 
Inputregisters ins Schieberegister. Der 165 hat kein Inputregister und 
damit einen Steuerpin weniger, genauso wieder 164 kein Outputregister 
hat.

fchk

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaut hier eigentlich keiner auf das Datum eines Beitrages?

Autor: Juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt ist der Thread beantwortet.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf einen 2166 Tage alten Thread zu antworten dürfte wohl der neue 
Rekord im Spätposten sein. :)

Autor: Programist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe sogar die routine ins JAL übersetzt und die geht.Leider ist der 
HC597 nicht gerade leicht zu finden.Den gibt's nicht bei Reichelt und 
auch nicht bei Conrad.Deswegen würde Ich mich über eine routine zum 
HC165 freuen, aber wie man sie schreibt weiß ich noch nicht.

Das ist meine HC597 routine.


-- 74hc597 input expander
-- how to use:
-- The DATA pin should be set as input, all other as outputs

var volatile bit DATA   is pin_c3           -- Any other  I/O pin could 
be used
var volatile bit CLOCK  is pin_c2
var volatile bit LATCH  is pin_c1
var volatile bit LOAD   is pin_c0

pin_c0_direction = output
pin_c1_direction = output
pin_c2_direction = output
pin_c3_direction = input

var byte  vport_c = 0

procedure hc597_receive is


var byte  Var1, Var2     -- port status and counter

   Var2 = 8              -- initializing counter
   Latch = high          -- receive pin states into input latch
asm   nop
   Latch = low
   Load  = low          -- transfer the contents of input latch to SHIFT 
reg
asm   nop
   Load = high


asm local  Loop1          -- lokal label
asm Loop1:

assembler

      rlf  Var1,f         ;rotate "Var1" one place to the left

      btfss  Data        ;is data line = "1" ?
      bcf    Var1,0      ;if not, clear bit 0 in Var1
      btfsc  Data        ;is data line = "0" ?
      bsf    Var1,0      ;if not, set bit 0

      bsf    Clock       ;generate one clock
      nop
      bcf    Clock

      decfsz  Var2,f     ;has 8 bits been received?
end assembler

asm   goto    Loop1       ;if not, repeat


vport_c = Var1

end procedure

Autor: P.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programist schrieb:
> Leider ist der
> HC597 nicht gerade leicht zu finden.Den gibt's nicht bei Reichelt ..

Einfach nach 74HCT597 suchen!

Autor: Programist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den tip.

Wollte noch sagen , dass die routine für den hc595 auf der Seite 
http://romux.com/tutorials/pic-tutorial/shift-registers  nicht stimmt.

Die sollte so aussehen:

HC595 MACRO VAR,VARL
    LOCAL LOOP                    ;Local  label
            MOVLW .8             ;Transfer  eight bits
            MOVWF VARL            ;Initialising  counter


LOOP        RLF    VAR,F        ;Rotate "Var" on place to the left

            BTFSS STATUS,C         ;Is  carry =  "1"   ?
            BCF DATAA            ;If not,   set Dataa line   to  "0"
            BTFSC STATUS,C        ;Is  carry =  "0"   ?
            BSF    DATAA            ;If not,   set Dataa line   to  "1"

            BSF CLOCK            ;Generate  one   clock
            NOP
            BCF CLOCK

            DECFSZ VARL,F        ;Has  eight bits been sent  ?
            GOTO LOOP              ;If not,   repeat

            BSF LATCH            ;If  all  8 bits have been sent,
            NOP                  ;contents  of  SHIFT register
                                 ;to  send the output latch
            BCF     LATCH
            ENDM

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programist schrieb:
> Wollte noch sagen , dass die routine für den hc595 auf der Seite
> http://romux.com/tutorials/pic-tutorial/shift-registers  nicht stimmt.

Wayne interessierts.

Ich verstehe beides nicht und mein AVR auch nicht.
Daher schreibe ich sowas in C.
Das kann ich lesen, der AVR C-Compiler und sogar ein PIC C-Compiler 
sollte es auch können.
uint8_t shift_io( uint8_t b )   // send / receive byte
{
  uint8_t i;

  SPI_CLK_DDR = 1;              // set as output
  SPI_MOSI_DDR = 1;

  for( i = 8; i; i-- ){         // 8 bits
    SPI_MOSI = 0;
    if( b & 0x80 )              // high bit first
      SPI_MOSI = 1;
    b <<= 1;
    SPI_CLK = 1;
    if( SPI_MISO_PIN )
      b++;
    SPI_CLK = 0;
  }
  return b;
}


Peter

Autor: Programist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sagst, du kannst nicht den assembler.Wie hast du dann deine routine 
geschrieben?Hast sie eben erfunden oder was?

Autor: P.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Ich verstehe beides nicht und mein AVR auch nicht.


PIC PIC PIC PIC!
Kennt doch jeder :-)

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.