Připadá mi to jako jednoduché zapojení pomocí nějakých shift registrů. Jak podle pinoutu, tak podle toho, jak jsou ty moduly na obrázku propojený do série. Na obsluhu IO 74595, 74164 a podobných potřebuješ hledat knihovnu ? Máš modul v ruce, tak se podívej, jaký jsou tam osazený IO. Je v tom nějaký háček ?
I když jsem napsal, že mi “přišel do ruky”, pravda je taková, že se k němu dostanu zítra a dnes si zjišťuji co a jak.
Matici jsem ještě nezapojoval a když, tak obyčejnou 8x8 kde se akorát zvolí řádek a sloupec diody jenž se má rozsvítit. Zde to bude dozajista složitějši.
Podle pinoutu bych tipnul že R G a B (0,1,2,3) připojím na digitální vstupy a jimi budu předávat data.
Dále je tam Clock který by měl sloužit jako identifikátor vstupu? Něco ve smyslu, matice čte když je na něm logicka 1, matice zapisuje když je na něm logická 0? Nejsem si jistý.
A B C bych měl připojit do anologového portu, nevím ale zcela proč, četl jsem to v anglickém tutorialu. Poslední piny které mi nejsou jasné jsou LAT a OE.
Pokud se nikomu nebude chtít psát zbytečný návod, stačil by mi tutorial kde se tato problematika řeší, ovšem pokud se někdo nudí a chtěl by mi to osvětlit budu jenom rád
Budu jenom hádat, ale :
OE je Output Enable - předpokládám, že je to signál, který posuvným registrům povoluje dostat stav na piny IO. Výsledek bude asi takový, že se tímto signálem fyzicky zapnou/vypnou LEDky.
LAT - Latch - nebo taky Write - tedy signál pro přepis posuvných registrů do výstupních registrů jednotlivých IO. Z toho bych usuzoval na IO 74595.
To, že jsou vstupy R0,G0,B0, … ,R3,G3,B3 bych hádal, že půjdou data pro 3 řádky ve 3 barvách najednou.
Záhadou jsou mi vstupy A,B a C. Z toho důvodu bych tedy počkal, až se Ti modul dostane do ruky a z toho se dá odvodit, jak tento modul ovládat.
Clock jsou hodiny pravděpodobně pro synchronizaci přenosu dat, nebo pokud jsou tam shift registry, tak i jejich řízení. Proč sem nehodíš ten angl. manuál či tutorial, když ho máš?
Taky by bodla fotka čelní a zadní strany (detailně), dost to napoví.
Pokud myslíš ty led drivery na desce s popisem R,G,B U 1,2,3,4,5,6,7,8
Ty mají označení MBI5050GF E0K7181GFA
Omlouvám se za kvalitu fotek, nelze to vyfotit líp v domácích podmínkách a s mobilem, dalo mi práci jen přečíst to označení když je deska pokryta lakem proti dešti.
Pokusim se zatím rozluštit ostatní smd s popisem U 1,2…N
Nemam cas citat nejaky manual ale binarna kombinacia ABC dava zhodou okolnosti 8 kombinácii. V Kazdej sa nastavuje hodnota styroch RGB LED a to je kupodivu 32. Z toho potom dedukujem, ze signalom OE a CLK bude treba naklokovat 32 udajov asi pre kazdy riadok alebo stlpec alebo ako si to len natocis.
Veice jednoducho nastav lubovolnu kombinaciu A, B, C, stavy RGB a sprav OE a v ramci neho nejaky CLK - na zaciatku staci jeden - a potom OE ukonci. Predpokladam, ze sa Ti nieco rozsvieti.
Tak jsem to tu matici připojil na 5V (0,5A by snad na rozsvícení par ledek mělo stačit). RD0,BD0,GD0 tedy první řádek jsem připojil na port D u atmegy8 a CLK na nejnižší bit na portu B, OE na druhý nejnižší bit na portu B. A B C jakožto adresy ledek jsem připojil ke GND tedy hodnota 0 0 0.
Pak jsem zkompiloval tento kód a nahrál do atmegy:
DDRD = 0xFF; //port D jako vystupni
DDRB = 0xFF; //port B jako vystupni
PORTB =0x00; //Nuluju port B
PORTD =0x00; //Nuluju port D
PORTB =0x01; //CLK na 1
PORTB =0x00; //CLK na 0
PORTD =0x01; //RD0 na 1
PORTD =0x00; //RD0 na 0
PORTB =0x02; //OE na 1
PORTB =0x00; //OE na 0
měla se podle mého rozsvítit první ledka v prvním řádku červeně, nenapadá někoho co jsem udělal špatně?
Z prilozeneho asm nevyplyva, ze by Ti tam nieco kmitalo (napr. CLK)
To akoze cez Tvoje kabliky k LED prelezu 4MHz? Bez zmeny nabeznych a dobeznych hran? Si si isty, ze mas dodrzany dostatocny casovy odstup medzi CLK a OE na zaciatku a ana konci?
To je pravda, jdu na to moc primitivně. Procházím ten datasheet, ale moc moudrý z toho nejsem. Mohl bych na ten CLK a OE nastavit PWN. Ale otázka je, jakou frekvenci. Podle datasheetu na straně 6 je
SDI=10Mhz (což by měla být nejspíš frekvence datové linky pro diody)
DCLK=GCLK=20Mhz (podle googlu nějaké globální hodiny)
Což mě přivádí na otázku, zda se pro toto hodí atmega8, když ji můžu nastavit oscilátor tuším na 16Mhz max.
Dále na straně 10. je vcelku pochopitelný diagram, seřazení pulzu, který začíná GCLK pulsem a pokračuje nastavením barev v každém řádku.
No, začíná se mi to komplikovat a mám v tom solidní guláš
To jsou maximální rychlosti, kterými můžeš s modulem komunikovat. SDI jsou data do modulu. Jejich přenášení je synchronizováno kmitočtem DCLK. DCLK může být maximálně 20MHz - z toho logicky plyne, že SDI může být max. 10MHz, neboli polovina hodin. Je to přesne stav, kdy do modulu posíláš 10101010 na SDI. Funguje to tak, že nastavíš data a dáš hodinám 0->1->0 => zapisovací impuls. Z tohoto důvodu je kmitočet DCLK dvojnásobnej. Pokud nekomunikuješ, hodiny i data stojí a modul by měl zobrazovat to, co má v registrech už našoupáno.
Takže klidně můžeš použít ATmega8 a klidně i třeba v továrním nastavení na 1 MHz.
Já si nějak nejsem jistej, jestli chápeš princip synchronního sériovýho přenosu. Prostě na datovým/datových vodičích nastavíš hodnoty, které chceš zapsat do registru(ů) a potom je hodinovým impulzem zapíšeš. Pokud ne, tak si k mcu připoj IO 74595, k němu dej 8 LEDek a zkoušej to na tom. Pak teprve se pusť do něčeho většího.