Ich verwende ebenfalls MOS4094. Für die Ansteuerung habe ich mir eine
eigene Routine gebastelt, die auch eine kaskadierte Ansteuerung der
Schieberegister erlaubt. "Ausgang_Port" ist ebenfalls selbst
geschrieben und schaltet nur den entsprechenden Portpin ein bzw aus.
ANZAHL_MOS4094_SPI definiert die Zahl der verwendeten MOS4094
Schieberegister
Hier der code:
Ausgang_Port(SPI_STROBE, AUS); /* Strobe = 0 */
Ausgang_Port(SPI_ENABLE, AUS); /* Enable = 0 */
Ausgang_Port(SPI_CLOCK, AUS); /* Clock = 0 */
Ausgang_Port(SPI_OUT, AUS); /* Data = 0 */
for (MOS_Baustein_u8 = 0;
MOS_Baustein_u8 < ANZAHL_MOS4094_SPI;
MOS_Baustein_u8++)
/* Alle MOS-Bausteine ansteuern */
{
for (MOS_Bit_u8=0;
MOS_Bit_u8<8;
MOS_Bit_u8++) /* Schleife, die 8 mal durchlaufen wird */
{
if (SPI_Byte[MOS_Baustein_u8] & ( 0x01 << MOS_Bit_u8 )) /*
Datenbit anlegen */
{
/* Datenbit = 1: Ausgang setzen */
Ausgang_Port(SPI_OUT, EIN);
}
else
{
Ausgang_Port(SPI_OUT, AUS);
}
Ausgang_Port(SPI_CLOCK, EIN);/* Clockpuls erzeugen */
Ausgang_Port(SPI_CLOCK, EIN);/* Impuls etwas verlaengern */
Ausgang_Port(SPI_CLOCK, AUS);/* Clockpuls loeschen */
}
}
Ausgang_Port(SPI_STROBE, EIN); /* Strobe = 1 */
Ausgang_Port(SPI_ENABLE, EIN); /* Enable = 1 */
Ich hoffe, das konnte helfen
Gruß
Detlef