Stránka 1 z 1

MM5450

Napsal: 28 čer 2020, 22:32
od Jindra
Ahoj,

Pro svůj projekt bych potřeboval rozkódovat protokol LED budiče který se požívá na sériové ovládání dispalyů.
Na ovládání dislaye osazeného tímto budičem je ukázek a knihoven na internetu dost.

Já bych, ale potřeboval přesný opak a tedy donutit Arduino nano, aby umělo emulovat tento převodník / číst jeho protokol.
Stačilo by kdyby se třeba na základě sériových dat vracela hodnota 1 - 35 ale dalo se top přiřadit pinu původního MM5450

Věděl by někdo ?

Díky Jindra

Re: MM5450

Napsal: 29 čer 2020, 06:21
od pavel1tu
No, Nano nemá tolik nožiček a jelikož mám zkušenosti s odezvou "rozšiřujících" modulů s výstupy,
tak to nevidím reálně.
Jinak si stačí stáhnout datasheety a jet podle nich.

Zkoušel jsem dělat ovládání 8x 8LED segmentů - segment po segmentu, ale asi špatnou strukturou programu - to blikalo ...

Re: MM5450

Napsal: 29 čer 2020, 21:29
od Jindra
Děkuji za odpověď,

Nechtěl jsem přímo Arduinem ovládat původní display, ale aby Arduino rozumělo komunikaci a umělo z toho vyčíst data.
Datascheet mi v tomto případě si moc nepomůže. Vlastní řešení by tedy mělo vypadat tak, že tedy připojím CLK a data na nějaký vtup a
pak budu odečítat stav dat při vstupné / sestupné hraně clk a po 35 bitech budu mít nějaké číslo co bude znamenat nějakou kombinaci výstupů ??

Re: MM5450

Napsal: 29 čer 2020, 21:49
od ondraN
Vstup CLK si připoj na nějaký pin, který může generovat interrupt, DATA a ENABLE pak na libovolné vstupy. V interruptu od CLK si přečti stav DATA a ENABLE. Při neaktivním Enable, nedělej nic, jinak si pochytej a poskládej jednotlivé bity. Nejjednodušší je to do pole 2x35ti bytů. Po přijetí prvního bloku si jen změň index v poli a dále zapisuj do toho druhého a z prvního data zpracuj, pak zase změnit index a tak dokola.
Může se stát, že komunikace bude tak rychlá, že se nestihne zpracovat interrupt, v tom případě se přijme nižší počet bitů. Pokud máš možnost, jak komunikaci přibrzdit na arduinu, které budeš odposlouchávat, tak to určitě udělej. Pokud to napíšeš ve wiringu, tak bych odhadl max. frekvenci CLK tak 50kHz.
V poli, po přijetí bloku, budeš mít hodnoty jednotlivých segmentů zobrazení. Zhasnutý segment bude nula a rozsvícený jednička (pokud si to tam zapíšeš takhle). Co s tím hodláš dělat dále, to nevím.

Re: MM5450

Napsal: 30 čer 2020, 20:39
od Jindra
Děkuji za radu,

sice chápu ten postup co píšeš. Taky jsem už pochopil jak to funguje. Do budiče MM5450 sériově po pinech nasype procesor 35 bitů a každý bit pak odpovídá stavu vývody budiče. pak proběhne reset a celý proces se opakuje.

Ovšem jak to dostat do Arduina a ještě ho nechat dělat něco jiného to je nad moje síly.
Záměr byl načíst místo původního budiče Arduinem stavy přeložit je do proměnných pak přidat další informace z Arduina a pak to zobrazit na LCD po I2C.
Jedná se o starý CD HiFi a Aruduino bude dělat dálkové ovládání - to umím a je to naprosto banální. Tak jsem doufal v nějakou knihovnu jako u jiných periférií.

Re: MM5450

Napsal: 01 črc 2020, 07:02
od ondraN
Pokud je to v nějakém přístroji, tak to pofrčí maximální možnou rychlostí (vím ze zkušeností) a arduino to nedokáže odchytat. Jediná šance, je v tom případě, použití přídavného posuvného registru a část úlohy si zparalelizovat. Ale to je už projekt spíše pro pokročilé.
Knihovnu tady nečekej. Ty se nedělají pro situace, kdy je řešen nějaký vyjímečný případ. Správný postup by byl, v tomto případě, změřit rychlost komunikace (log. analyzátor, dá se koupit jednoduchý za 3 stovky), podle toho zvážit použití přídavného HW nebo jiného MCU (třeba STM32 BluePill). Dále zjistit, jaké výstupy MM5450 budí jaké segmenty displeje. To musíš vědět, abys dokázal dekódovat, jaký je zobrazovaný znak. V programu pak udělat dekódovací tabulku, přijatou informaci dekódovat a podle toho pak přejít k požadované akci.