Forum: Mikrocontroller und Digitale Elektronik Schieberegister Daisy-Chaining


von Nutzer (Gast)


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

von M.K. B. (mkbit)


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.

von Erich (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.