HC595 ohne /OE nutzen

Hallo,

könnte mal bitte jemand schauen, ob folgende Probleme bei ihm auch auftreten?

Ich habe das Problem, wenn ich /OE auf GND lege, das es prinzipiell mit dem Schieberegister funktioniert. Jedoch mit einem entscheinden Problem, alle Leds die LOW sind, flackern einmal sehr kurz auf.

Setzte ich während des Schreibvorgangs den Eingang /OE auf HIGH und nach dem Senden wieder auf LOW. Funktioniert es besten.

hi,

dieses problem tritt bei mir nicht auf.
kann es sein, daß Du den latch-pin nicht schaltest?

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, wert);
digitalWrite(latchPin, HIGH);

dann würdest Du nämlich das “schieben” sehen und das hätte dann diesen seltsamen effekt.
EDIT: vermute ich mal so…

gruß stefan

Hallo Stefan,

ich nutzte die IDE Features (shiftOut) nicht, jedoch war der Tipp mit

  1. Latch LOW
  2. Daten schicken
  3. Latch HIGH
    passend!

Während des Schiebens war der Pin durchgehen HIGH, da bei der vorherigen Operation der Pin nicht auf LOW geschaltet wurde.

	do
	{
		uint8_t data = *--p_ser;
		for (uint8_t bits = 8; bits > 0; bits--)
		{
			HC595_PORT &= ~(1 << HC595_SER);
			if (data & 0x80) HC595_PORT |= (1<<HC595_SER);
			data <<= 1;
			
			// Mit jeder positiven Flanke an SCK wird eine Schiebeoperation durchgeführt
			HC595_PORT &= ~(1<<HC595_SCK);
			HC595_PORT |= (1<<HC595_SCK);
		}
	}
	while (--num_sr > 0);

	//Zustand in Ausgangsregister uebernehmen
	HC595_PORT |= (1 << HC595_RCK);
	HC595_PORT &= ~(1 << HC595_RCK);

Bild1: Zeigte das Probleme, ich hatte die “Peaks”, die dort nicht hingehörten. Bild 2 ist soweit bereinigt und es sind saubere Pegel am Ausgang.