Ich lach mich kaputt.....
Du hast ja sowas von recht Witkatz
Oh Mann, das tut ja weh, vielen Dank für die Info
--------------------------------------------------
Ich habe jetzt einen laufenden Code, fast ausschließlich in "C" , basierend auf der Funktion von Klebwax(dessen Code ich geklaut habe).
Das Timing stimmt eigentlich nicht, aber das scheint wesentlich unkritischer zu sein als das Datenblatt vorgibt.Code:// so viele LEDs sollen angesteuert werden: #define LED_COUNT 3 /* Jede LED hat 3 Bytes insgesamt also 24 Bits */ typedef struct // __pack weil wir keinen Speicher verschwenden wollen ???? { U8 green; /* 8 Bit fuer die Helligkeit */ U8 red; /* 8 Bit fuer die Helligkeit */ U8 blue; /* 8 Bit fuer die Helligkeit */ } TLed; /* Type Bezeichner ist TLed */ TLed LedArray[LED_COUNT]; void LedShiftOut(U8* leds, U8 count) { U8 one_byte; U8 bit_count; count *=3; // 3 Bytes pro Led RGB while (count) { one_byte = *leds++; // next Byte for (bit_count = 0; bit_count < 8; bit_count++) { if (one_byte & 0x01) // lowest Bit { LATA5 = 1; asm("NOP"); asm("NOP"); asm("NOP"); LATA5 = 0; } else { LATA5 = 1; asm("NOP"); LATA5 = 0; } one_byte >>= 1; } count--; } Delay_ms(1); }
Die Low Phasen dürfen nämlich viel länger sein, das scheint nicht zu stören. Die sind bei mir alle so ca. 2us.
Die High-Phasen müssen lediglich stimmen, dann ist die Welt in Ordnung.
Ich habe zwischen den Bytes sogar 5us Pause, das stellt kein Problem dar.
![]()
Nochmal einen DANK an alle Die mir hilfreiche Informationen gegeben haben (beonders Witkatz + Klebwax)







Zitieren

Lesezeichen