Nejste přihlášen/a.

Přihlásit se do poradny

 

Signalizace 0/1 (8x, stav bufferů)

Od: gilhad® odpovědí: 11 změna:
avatar gilhad

Chtěl jsem se zeptat/ujistit, že tohle nemá moc zádrhelů a moje 3 úvahy jsou správně:

Vymýšlím rozšiřující desku pro retropočítač, na ní 8 bufferů pro komunikaci mezi tou deskou a retropočítačem, půlka pro čtení, půlka pro zápis.
Chtěl bych indikovat, zda jsou zrovna prázdné, nebo plné (do prázdného se dá psát, plný se dá číst a tedy zda je míč na straně retropočítače, nebo desky) a mám málo místa na desce, tak šetřím místo i trasy (ještě to budu muset dopřeroutovat, abych se nějak vešel) :D
[attachment=0]Expanduino_nahled_001.png[/attachment]

Jde o 8 párů LED (ukázané jen 4, ostatní jsou stejné), signál jde ze 74HC279 (SR klopáky) do dvou dalších podobných IC. Na každý výstup bych dal takhle dvě LED (jednu proti zemi, jednu proti VCC) přez společný odpor.
[attachment=2]SR_led.png[/attachment]

1) Signál je vždy 0 nebo 1, není to 3-state, takže vždy bude jedna LED svítit a druhá (kvůli prahovému napětí) jako by tam ani nebyla (jen se budou střídat, která je která)

2) Normálně bude polovina bufferů připravených (k zápisu) a polovina nikoli (vše přečteno), takže bude svítit půlka jedněch a půlka druhých diod. V extrémním případě bude ale svítit celá jedna stana a druhá nic. Světelnost bude asi kolísat, ale při počtu 8+8 LED by to s 220 Ohmů odporem nemělo žádnou LED spálit (asi 16mA) a i pokud bude svítit celá strana, tak by to nemělo být neviditelné (asi 2mA), ledky obyčejné SMD z Číny

3) chtěl bych tu desku nechat vyrobit v https://jlcpcb.com/ (ale osadit si ji sám), myslíte, že mi projde, když budou vždy půdorysy 2 LED přez seba a Via k tomu? (Já si myslím, že budou pouze řešit, zda je to vyrobitelné - což je - a tak mi to vyrobí)
[attachment=1]2LED_prez_sebe_a_Via.png[/attachment]

----


doplněno 03.09.23 22:01:

Pokud někoho zajímá, jak to dopadlo (teda spíš, jak se to vyřešilo a jak se to vyvíjí dál), tak

Tady mám o tom stránky 8bit.gilhad.cz/...

Tady jsou k nim poznámky a errata 8bit.gilhad.cz/...

a tady je k nim galerie z finální fáze oživování 8bit.gilhad.cz/...


Signalizace 0/1 (8x, stav bufferů)
Signalizace 0/1 (8x, stav bufferů) #2
Signalizace 0/1 (8x, stav bufferů) #3

 

 

11 odpovědí na otázku
Řazeno dle hodnocení

 

 

hodnocení

avatar gilhad

Čistě pro záznam

1) Ano, funguje to, když tam je signál,tak jednu LED překlene, druhou zasytí jako obvykle. Pokud je tam šstate, tak obě LED jen slabě žíří. Pokud je tam pulzující signál, obě svítí silně.

2) ano, kolísá to, ale je to dobře šitelné i v extrémech :)

3) Dva půdorysy přez sebe neřešili a vyrobili, já to osadil a funguje to. Via mi nakonec vyšla "těsně vedle" a nebyl s ní problém

monk

Co z toho asi poznáte? Pokud tam není vzorkovaný Buffer na kmitočtu stravitelný pro led

(kmitočtově), tak je to celé nesmysl.Nějak to v podstatě analogově poblikává a nic z toho.

Na vzorku by to mělo svítit jedna nebo druhá led naplno.To je dané softwárem a programováním

vyrovnávacího bufferu s ohledem na kmitočtovou stravitelnost led.

hodnocení

Poznám z toho docela dost. Každý kanál má pro každý směr LED (teda dvě led = žlutou a zelenou, říkají na které straně je míč).

Pokud LED svítí zeleně, tak se kanál (skoro) nepoužívá, pokud svítí půl na půl žlutozeleně, tak kanálem tečou data daným směrem. Pokud svítí převážně žlutě, tak data tečou, ale nestačí se dost rychle zpracovávat. Pokud svítí čistě žlutě, tak se zpracovávání zaseklo.

LED dokáže blikat výrazně rychleji, než oko stíhá, ale oko díky setrvačnosti dokáže zaregistrovat i velice krátké záblesky, jen je neodliší od sebe a prezentuje to jak slabý svit.

Ty LED tam v podstatě kdykoli svítí naplno, protože jinak ani nemohou - viz to schema nahoře. 3state nastával jen při nedoosazené desce.

Teď, v počátcích ladění a psaní firmware je to dobrá signalizace, zda se to někde seklo, nebo zda probíhá komunikace a v jakém přibližně je to stavu.

Až to bude odladěné, tak to bude ukazovat zda systém nerauguje, protože je zaneprázdněný, nebo protože se seknul.

Podobně jako třeba u ZX Spectra během nahrávání běhaly ty pruhy po okraji obrazovky.

Řízení těch LED je hardwareové (až na tu nejlevější) kde HW té desky eviduje, kdo naposled přistoupil ke kterému z chipů (což musí dělat stejně kvůli synchronizaci mezi 6809 a Arduinem) a ty LED to jen vizualizují. Díky nim tam nemusím píchat sondy. Sotware je nemá možnost přímo ovládat - zobrazují vnitřní stav HW.

monk

Vy nechápete jednu věc.Doba držení výstupního bufferu(vzorku)musí být delší než

doba zotavení přechodu LED diody.To znamená že tam nemohou být nějaké led

diody nebo musíte upravit délku vzorku nad dobu zotavení led diod.To je analogová záležitost.

Potom to pojede dobře.Máte tam klopné obvody, tak to mužete vzorkovat Hardwárově nebo

softwárově.Je to jedno.Prostě výstup KO je digitální a led je analogová.To musíte napasovat na sebe.

Když Vám to stačí takhle ,jak to máte ,tak není co řešit.

hodnocení

Doba náběhu běžné laciné LEDky jsou jednotky nanosekund. Doba odběhu až nižší desítky nanosekund.

Jakým způsobem to má být problém u systému se sběrnici taktovanou 1MHz (tedy 1 000 nanosekund), kdy mezi jednotlivými přístupy ještě nutně proběhnou minimálně desítky cyklů sběrnice (ale typicky se s těmi daty ještě bude něco dalšího dělat, třeba se uloží do RAM pro pozdější zpracování, takže těch cyklů bude výrazně víc)?

A jaký to má být problém, pokud je ta LED čistě výstup, který bude pozorovat člověk?

Vnímatelné stejně budou jen jevy, které v souhrnu zaberou nějaké milisekundy, nanejvýš mikrosekundy. Takže LED jsou na to rychlé až dost. A pokud člověk nepostřehne nějaký mikro/nano pulz, tak se vůbec nic neděje - podstatné je to až když dané pulzy začnou zabírat nějaké zajímavé procento času.

To podstatné - tímto kanálem data (skoro) netečou, tímto tečou (málo/hodně), tento je (skoro) ucpaný - to dokáže zprostředkovat naprosto v pohodě. Na nějaké větší detaily je pak potřeba osciloskop, měřáky a software.

(A podle kanálu (a dalších kontrolek) je taky vidět, jestli to zuřivě updatuje obrazovku, čte EEPROMku, nebo třeba pracuje s SD kartou)

monk

Kdyť jsem Vám napsal že když Vám to stačí tak neni co řešit!Od začátku si myslím že to bude

trpět právě tím jak se to chová.Zkuste si zapojit rychlé hradlo s otevřeným výstupem a na něm

led diodu.Nakrmte to generátorem a uvidíte co to bude dělat!Potom si dejte KO typu D a vzorkujte.

Uvidíte ten rozdíl.Ta konstrukce neni špatná jenom trochu nedotažená.!

hodnocení

Od začátku si myslím že to bude trpět právě tím jak se to chová.

To mi právě vůbec není jasné, co tím myslíte. Co bude trpět, proč to bude trpět (co tomu bude "ubližovat" a jak) a čím by se to mělo projevit?

Zkuste si zapojit rychlé hradlo s otevřeným výstupem a na něm led diodu.Nakrmte to generátorem a uvidíte co to bude dělat!Potom si dejte KO typu D a vzorkujte.

Otevřený výstup by asi vyžadoval pull-up, ale 74HC279 má v sobě totem-pole, katalogové náběžné a sestupné hrany asi 6ns při 5V a pokojové teplotě (7/8 dvojic). Nejrychlejší střídání stavů té LED může být někde kolem desítek až stovek mikrosekund. Čili tisíckrát pomaleji, než by měl ten obvod (i ta LED) stíhat. Sledovat to budu okem, které 50Hz vidí jako spojité světlo, nikoli blikání.

Zapojit jsem to zkusil teď, když ta deska došla, LEDky svítí/nesvítí/částečně svítí podle toho, co se tam odehrává a vypadá to na první pohled dobře

Uvidíte ten rozdíl.Ta konstrukce neni špatná jenom trochu nedotažená.!

Co konkrétně bych se měl snažit uvidět? (Opravdu to nevím a proto se ptám.)

Kdybych nebyl omezený velikostí desky (a časem, který jsem na to byl ochotný věnovat), dal bych odpor ke každé LED, jako vždycky, ale i tak ty LED jsou dost jasné a rozdíl mezi 6 svítícími na jedné straně a 2 na strané druhé není příliš znatelný a neruši.

Co by tam chtělo ještě v této oblasti dotahovat?

(Montážní díry, popisky a přídavná RAM jsou zcela jiná oblast.)

monk

Tak mi to připadá, že nevíte co je vzorkování obecně.Vy jedete přímo z paměti ale ty 74HC279 máte ovládány

jak?Máte tam set i reset.To by mělo být nastavováno jako buffer pro pomalejší periferii.Hardwárove nebo

softwarově.Prostě odebrat vzorek-zobrazit-vynulovat-a tak pořád dokola.(přijatelnou rychlostí pro periferii.)

To se ale už opakuji.:)Nikam to nevede.To je elementární funkce vyrovnávacího Bufferu.

hodnocení

Co je vzorkování obecně vím, ale tady to nedává naprosto žádný smysl.

Každá z těch linek je samostatný 8bitový HW buffer mezi 6809 (který to vidí jako paměť) a Arduinem (které to vidí jako SPI device) a příslušná dvojice LED jenom značí, zda ten buffer je prázdný, nebo ne. Rozhodně neukazuje obsah dat v tom bufferu.

Dvojice bufferů tvoří jeden kanál pro komunikaci. Obecně tu nejde označit jedno zařízení za pomalé a druhé za rychlé, jsou asi tak srovnatelná, ale každé je taktováno jinak a přistupuje k tomu jiným způsobem (sobě přirozeným). Podrobněji to mám popsané tady (ještě jsem to nedodělal, ale schemata tam jsou, stejně jako základy teorie) 8bit.gilhad.cz/...

Pokud si vezmu takový, docela realistický, příklad, tak na tom 6809 hraju nějakou hru pomocí klávesnice a obrazovky připojené k Arduinu (třeba Průlet meteority, nebo jinou střílečku). Hra posílá mraky dat na obrazovku přez Exp1 a taky přez něj čte, co jsem zrovna stisknul. Z Exp2 zároveň čte data z SD karty pro další úroveň a na EEPROM zapisuje tabulku highscore.

Takže Exp1 Read jen občas problikne, když něco stisknu, ale obecně čeká na moje (lidsky pomalé) akce.

Exp1 Write přenáší data na obrazovku jako divé po celou dobu (a obě LED pro tento směr svítí jak divé, protože tam teče plno dat - průběžně se updatuje obrazovka)

Exp2 Write před chvilkou probliklo, protože 6809 požádala o čtení souboru a teď krátce svítí, protože se zapisuje celá tabulka highscore do EEPROM (po nějakých 30bytech a pak pauzička, než to ten chip schřoustá a uloží)

Exp2 Read teď svítí chvilku, protože přez něj teče několik kilobytů dat z SD karty.

Exp3 nedělá nic ani v jednom směru.

Pokud tu někde vezmu nějaký vzorek, tak mi neřekne nic - jestli když se četl 1.234.byte souboru se zároveň zapisoval 12.345.678 byte do obrazovky, nebo už se čekalo až se připraví 12.345.679 byte je naprosto jedno.

Důležité je, že že zatímco Exp1 Read blikne jen když stisknu klávesu, tak Exp1 Write svítí už hodinu jak divý, ale oběma diodama, takže se zjevně přenosy nějak stíhají a Exp2 krátce probliknul jedním a déle druhým směrem.

A to je právě to, kde LED zobrazující průběžně aktuální stav, ve spolupráci s okem, které přirozeně integruje délku/intenzitu toho svitu dá mnohel lepší informaci o celku, než nějaký izolovaný vzorek zmražený po dobu, než ho dokážu přečíst a interpretovat pomalými lidskými smysly.

monk

No ono mne to příliš neinteresuje.Tak jsem odpověděl ze slušnosti- aby se neřeklo.

To by jsme tady mohli žvanit pořád dokola.Na mne je to obecně příliš nízký kmitočet a

nechci se tím už zabývat.Howg.

 

ka
hodnocení

0x

To chování záleží i na časováni a programování. Ale tvé úvahy by měly jinak platit.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]