32x32 Matrix z číny a Atmega8

Zdravim, dostal se mi do ruky tento led panel
zstled.com/article/85.html

je možné ho pomocí atmegy rozchodit?

zde je pinout:
zstled.com/uploadfiles/20110 … 815794.jpg

Čistě teoreticky by mi stačilo rozsvítit alespon jednu barvu, nevím zda na to najdu knihovnu, google mi neporadil.

Napadá vás nějaký způsob? Nebo nevíte o podobné matici která by se zapojovala stejně?

:arrow_right: administrator: přiloženy externí soubory
20110515163815794.jpg

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 :slight_smile:

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.

Rozumim, zítra napíšu podrobnosti :slight_smile:
prozatím ti děkuju :slight_smile:

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í.

teď jsem přišel a už jej mám u sebe

Žádný tutorial k tomuto modelu nemám, snažím se pochopit jak fungují tyto matice na různých jiných modelech na internetu.

uploaduji vám fotky onoho zařízení, snad pomůžou

tassdar.eu/P06F01M-085S.rar

:arrow_right: administrator: přiloženy externí soubory
P06F01M-085S.rar (6.4 MB)

Nic horšího už jsi na focení neměl ? Tos to mohl rovnou nakreslit od ruky. Hoď sem buď kvalitnější fotky nebo alespoň zkus opsat označení na IO.

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

Podařilo se mi najít jen tenhle datasheet :
MBI5050 Preliminary Datasheet V1.03-EN.pdf (384 KB)

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ě?

atmega má oscilátor na 8Mhz

A akoze kolko ns Ti trvaju tie pulzy? :slight_smile:

Ak si to kompiloval pod -Os, tak predpokladam, ze sa ziadne pulzy ani nevygenerovali, lebo ten kod kompilator urcite zoptimalizoval.

Dobrá úvaha, ale já zkoušel ten kód dát do smyčky a připojit na to diodu - svítila.

Otevřel jsem si přeložený program do assembleru

42: 81 e0 ldi r24, 0x01 ; 1 44: 88 bb out 0x18, r24 ; 24

Při oscilátoru 8Mhz trvá jedna instrukce 0,000000125 s
tedy 0,125 mikrosekundy?

V datasheetu jsem myslim četl, že ty drivery by měli zvládat až 30Mhz

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áš :smiley:

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.

Chápu to dobře, že tedy do CLK posílám dvojnásobnou rychlostí 1010101
a poloviční rychlostí zapisuju do registrů? Když tu udělám časovou osu

CLK 1 0 1 0 1 0 1 0 1 0 1
R1 1 0 0 1 0 0
G1 0 1 0 0 1 0
B1 0 0 1 0 0 1

Toto by mi mělo na první řádek rozsvítit diody postupně červenou, zelenou a modrou?

tassdar.eu/clk.jpg

Takhle jsem to myslel a pochopil.

:arrow_right: administrator: příspěvek byl upraven

:arrow_right: administrator: přiloženy externí soubory
clk.jpg

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.