Schieberegister Daisy-Chaining

Gast #3387522
Lesenswert?
• ▲
▼
Hallo,

ich habe ein kleines Problem mit meinen Schieberegistern (74H599, also 
mit Latch). Das erste Register gibt schon keine Daten weiter... 
Vielleicht habe ich nur ein Problem mit der Ansteuerung.
Könntet ihr mal bitte gucken? :)

Funktionen zur Ansteuerung:
1
void ShiftRegister::reset()
2
{
3
  // tie reset low
4
  PORT_SHIFT_REGISTER &= ~(1 << _reset);
5
  _delay_ms(1);
6
  _byte = 0x00;
7
  PORT_SHIFT_REGISTER |= (1 << _reset);
8
}
9

10
void ShiftRegister::shift(uint8_t byte)
11
{
12
  setByte(byte);
13
  shift();
14
}
15

16
void ShiftRegister::shift()
17
{
18
  for (int i=0; i<8; i++)
19
  {
20
    if (_byte & (1 << i) )
21
      PORT_SHIFT_REGISTER |= (1 << _data);
22
    else
23
      PORT_SHIFT_REGISTER &= ~(1 << _data);
24
      
25
    // clock pulse
26
    PORT_SHIFT_REGISTER &= ~(1 << _clock);  
27
    PORT_SHIFT_REGISTER |=  (1 << _clock);
28
    
29
  }
30
}
31

32
void ShiftRegister::latch(uint8_t value)
33
{
34
  if (!value)
35
    PORT_SHIFT_REGISTER &= ~(1 << _latch);
36
  else
37
    PORT_SHIFT_REGISTER |=  (1 << _latch);
38
}

Und noch die Passage aus dem Programm:
1
ShiftRegister reg(PC3, PC2, PC0, PC1);
2
reg.reset();
3
reg.latch(false);
4
reg.shift(0xff);
5
reg.shift(0x00);
6
reg.shift(0xff);
7
reg.shift(0x00);
8
reg.shift(0xff);
9
reg.latch(true);

Ich habe mal nachgeguckt, die Daten kommen richtig an, Latch, Reset und 
Clock zeigen laut LA auch richtiges Verhalten.
Es hängen vier Stück hintereinander - das fünfte ist eigentlich nur so 
zur Kontrolle gewesen.

Vielen Dank und Grüße
Nutzer
#3392842
Lesenswert?
• ▲
▼
Sieht auf den ersten Blick richtig aus. Allerdings könnte der clock 
pulse falsch herum sein. Ich hab aber leider kein Datenblatt zu dem von 
dir angegebenen Chip gefunden.

Ansonsten kannst du vielleicht auch eine grobe Zeichnung deiner 
Schaltung posten. Vielleicht liegt der Fehler da.
Gast #3393063
Lesenswert?
• ▲
▼
> mit meinen Schieberegistern (74H599 ...
Es muss wohl heissen:  74HC599  oder  74LS599
Wobei ich nicht sicher bin ob es "HC" hier jemals gab.

Das '599 ist ein extrem seltener Exot, die "open collector" Version des 
wesentlich gängigeren 74(HC/LS)594
http://www.datasheetarchive.com/dl/Scans-056/DSAIH000137036.pdf

Programme für das Bauteil 74HC594 solltest du zuhauf finden hier... die 
Eingangsansteuerung ist ja identisch.

===> Oder liegt es daran, daß du die bei "open collector" notwendigen 
Pullup-R an den Ausgängen vergessen hast ???
Hänge mal einen 1k gegen +5V an (jedem) Ausgang ran!

Gruss

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.