Fórum témák

» Több friss téma
Fórum » PIC programozás assemblyben
 
Témaindító: sonajkniz, idő: Máj 30, 2015
Témakörök:
Lapozás: OK   25 / 25
(#) sonajkniz hozzászólása Dec 8, 2021 / 2
 
Első körben nagyon szépen köszönöm mindenkinek a segítséget.
Sikerült megoldani a feladatot.
Mivel gondolom, kíváncsiak vagytok rá mi célt szolgál ez a sok adat, leírom.
Fiamnak ajándék volt egy úgynevezett Ambibox.
Ez egy RGB ledes háttérvlágítás a számítógép monitorának hátulján.
Egy kis videó arról, mit csinál.
A lényeg az hogy a számítógép USB-n át folyamatosan küldi a ledeknek az adatokat. Egy lednek 3 byteot.
Csakhogy míg a géptől uart formaban jöllen az adatok korlátozott sebességgel, addig a WS2812-es ledek 1-Wire kapcsolaton működnek 800000-110000 bit/sec sebességgel. Ezt a jelátalakítást végzi el egy Arduino nano. Sajna a jelátalakító rekord idő alatt megdöglött. Kínosan érintett, hogy az ajándék csak eddig bírta, így gyorsban kellett valami megoldás.
Szerencsére az UNO CH340-es USB illesztőt használ, ami volt nekem itthon, és nem kétirányú a kommunikáció. Azaz a szoftvert csak az érdekli, meg van-e a CH340-es. Ha igen, tolja az adatokat.
Mivel 120db lednek már elég komoly adatmennyisége van, (A PIC18F14K22 jelen alkalmazásban 160 LED kihajtására képes.) a géptől kb 31msec-ig érkeztek az adatok, majd egy rövid szünet és kezdődik előröl.
A szünet ideje messze rövidebb, mint amennyi idő alatt az összes adatot tovább tudom küldeni. bár az 1-Wire csaknem 10x gyorsabb.
Az adatok folyamként történő letárolása és a már továbbküldöttek felülírása nem akadály egy PIC18-nak. Itt csak arra kellett ügyelni, hogy időben kivegyem az RCREG-ből az adatot.
Szerencsére az 1 Wire roppant rugalmas, és akár két bit elküldése között is megszakítható, majd folytatható az adás. (persze azért a megszakítás ideje nem korlátlan)
Egyszóval fáradozásomat siker koronázta, köszönhetően a gyors és hatékony segítségeteknek.
(#) Hp41C válasza sonajkniz hozzászólására (») Dec 8, 2021 /
 
PIC18F14K22I/P (512 byte RAM) @ 820 Ft+Áfa -- PIC18F16Q41I/P (4K RAM) @ 640Ft+Áfa
(#) Bakman válasza sonajkniz hozzászólására (») Dec 8, 2021 /
 
Idézet:
„Szerencsére az 1 Wire roppant rugalmas”
Bocsánat, hogy belevau de mindenképpen érdemes figyelni arra, hogy a Dallas Semiconductor által kifejlesztett 1-Wire protokoll (Wikipédia) nagyon is kötött időablakokat használ.

A WS2812 alapú szerkentyűk ugyan egy vezetéket használnak kommunikációra de nem a szabványos 1-Wire protokoll szerintit.
(#) benjami válasza sonajkniz hozzászólására (») Dec 8, 2021 / 1
 
Bár már megoldottad, de egy kis megjegyzés. Ahogy a videót nézem semmi gond nem lenne belőle, ha csak minden második adatcsomagot dolgoznád fel. Nekem nem úgy tűnik, hogy extra nagy sebességű animációkat kellene megjeleníteni, nem hiszem, hogy észrevehető lenne, ha a jelenlegi 40msec helyett csak 80msec sűrűséggel lenne újraprogramozva a ledsor (25fps -> 12,5fps lenne).
(#) asch válasza sonajkniz hozzászólására (») Dec 8, 2021 /
 
> Sajna a jelátalakító rekord idő alatt megdöglött.

Ez a pont ütött még szöget a fejembe. Van valami tipped hogy mitől ment tönkre? Eleve hamisítvány volt? Valami védelem hiányzott róla? Csak mert alapból ezek ritkán mennek tönkre, ha így gyorsan tönkremegy, az legalábbis gyanús.

Azért is érdekes lehet, mert ha betettél helyette egy PIC-et, de a környezetében van a probléma, akkor a PIC is hamar elmúlhat esetleg.
(#) sonajkniz válasza asch hozzászólására (») Dec 9, 2021 /
 
Jó kérdés, hogy mitől adta fel a harcot. A kütyü az USB-től kap tápot, a LED-eknek külön tápjuk van. Az UNO panelján a CH340-es működik. A reset gomb megnyomására az Arduino boot ledje villog. De jel nem jön ki belőle. Hogy most a programja sérült, vagy a kimenete szált el én nem tudom kideríteni. Az biztos, hogy egy kóbor ellenállás sincs az Arduino kimenete és a WS LED bemenete között. Én azért oda betettem egy 1K-t.
(#) sonajkniz válasza Hp41C hozzászólására (») Dec 9, 2021 /
 
Mivel gyanús volt, hogy egy nagyobb tudású kontroller olcsóbb, kerestem a csapdát.
Első pont, nincs benne a "PIC micro database" állományban.
Gondoltam újabb, ráfrissítettem az állományra, akkor sincs.
Megpróbáltam nyitni neki egy új projektet az MPLAB X-ben, az sem ismeri.
Én a v3.65-ös verziót használom. Ebbe valahogy utólag beimportálható?
Ugyanis szívesen kipróbálnám.
(#) majkimester válasza Hp41C hozzászólására (») Dec 9, 2021 /
 
Az újabb PIC-ek mindig olcsóbbak, és néha váltani is kell, de ha hobbira használod, 1-2db-nál a fenti árkülönbség nem számít semmit, csak emiatt nem választasz egy újabb, egyébként nagyobb tudású kontrollert, ha a régebben használttal is tökéletesen meg tudod oldani a feladatot. A régebbi típusok, lehet, hogy vannak a fiókodban, több forrásból is beszerezhetőek, a jelenlegi programozód ismeri, nem kell újat venni. A korábban megírt periféria kezelő kódjaid teszteltek, működnek a korábban használt típuson, nem kell módosítani, újraírni, újra tesztelni.

Ha kinőtted az adott kontrollert az adott feladatra, akkor is érdemes megnézni, mit is tud például a jelenlegi programozód még felprogramozni.
(#) sonajkniz válasza Bakman hozzászólására (») Dec 9, 2021 /
 
Idézet:
„a Dallas Semiconductor által kifejlesztett 1-Wire protokoll (Wikipédia) nagyon is kötött időablakokat használ”

Én ilyet nem tapasztaltam.
Az általam eddig használt gyári 1_Wire eszközökről mind elmondható, hogy a szinkronjelhez képest a beolvasás ideje plusz - mínusz irányban 30-50% elcsúszást elvisel.Matematikailag ez a következőképpen néz ki: Ha a teljes jelszélesség 10usec, akkor ebből 2usec a startimpulzus. Az optimális beolvasás a start impulzus kezdetétől számított 6. usec-nél van. Ám 3usec-től 9usec-ig hibátlan beolvasás valósul meg. Két bit között is tarthat rövid szünetet az adó oldal (master). USART módban még a legrugalmasabb esetben is csak plusz-mínusz 6%.
Az 1-Wire-t nem az épp használt protokol határozza meg, hanem az adatátvitel mikéntje.
Én két PIC között mindíg 1-Wiret-t használok. Esetenként 30 métert is meghaladó vezetéken. Sosem volt még ebből adódó problémám.
(#) Hp41C válasza sonajkniz hozzászólására (») Dec 9, 2021 /
 
MpLabX V5.5 kezeli. PICkit4 / Icd4 kell hozzá. Avagy módosított PICkit2.
(#) sonajkniz hozzászólása Dec 9, 2021 /
 
Egy picit még ráfejeltem a projektre.
Mivel a LED szalagnak külön tápja van, így az vagy folyton áram alatt van, vagy folyton ki kell huzigálni a konektorból.
A PIC-nek egy csomó lába kihasználatlan. Ezért úgy módosítottam a szoftvert, hogy ha van érvényes adat a gép felől, Az első 6 byte még nem a ledek működtetésére vanatkozik. Az első 3 byte egy azonosító. A második 3 számomra érdektelen. bekapcsolok egy kimenetet. Ha nincs érvényes adat, 13 másodperc után lekapcsolom. Ezzel tudok üzemeltetni egy relét, ami áramtalanítja a LED szalagot.
(#) asch válasza sonajkniz hozzászólására (») Dec 9, 2021 /
 
> A kütyü az USB-től kap tápot, a LED-eknek külön tápjuk van.

Én nem vagyok ennek a szakértője, de úgy tudom, hogy nem szerencsés külön táplált dolgokat galvanikusan összekötni. Lehetnek ilyenkor zavarok, amik terhelést rónak az összeköttetésekre.
(Ezért amikor mikrovezérlőt programozok, akkor leveszem a saját tápjáról, és csak a programozó táplálja USB-ről. Vagy laptopot használok, de úgy hogy direkt csak akksiról.)

Persze elvben a kettős szigetelésű tápok, amiknek nincs földelése nem visznek át stabil nullát, de mégsem szokás ilyet csinálni.

A másik hasonló "szabály", hogy a mikrovezérlő jeleit nem vezetjük ki a dobozból közvetlenül.

Talán ésszerű lenne a jelet egy optocsatolón keresztül vezetni a LED szalagba, és ezzel galvanikusan szétválasztani a kettőt. Van erre lehetőség?

Én kimérném, hogy a tönkrement Arduino-nak mi a baja, kiváncsi lennék rá a helyedben.
(#) sonajkniz válasza asch hozzászólására (») Dec 9, 2021 /
 
Fikarcnyit sem értek az Arduinohoz, ezért nem tudom tesztelni sem.
Idézet:
„nem szerencsés külön táplált dolgokat galvanikusan összekötni.”

Bár ez valóban így van, és a saját áramköreimen szoktam is optocsatolókat alkalmazni, ennek ellénére a gyakorlatban ha csak nem szintillesztés van vele megoldva, nemigen alkalmazzák.
Még a PLC-k bemenetein sincs optocsatoló. Konkrétan a gravírozó gépem és a "labortápom" közös tápegységen osztozik. A gravírozó gép állandó USB kapcsolatban van a PC-vel. A labortápról tápláltam egy áramkört, amit a PC-re csatolt oszcilloszkóppal mértem. Úgy összeugrottak, hogy minden betérdelt. Szerencsére újraindítás után minden működött, de azért ijesztő volt.
Egyébként valami ilyesmi lehetett itt is, mert a fiam elmondása alapján befagyott a PC-je, és az újraindítás után már nem működtek a fények.
(#) kissi válasza sonajkniz hozzászólására (») Dec 10, 2021 /
 
Idézet:
„Még a PLC-k bemenetein sincs optocsatoló.”
Én úgy tudom, hogy mindegyik úgy kezdődik ( nem noname-k!) !?
(#) Peter65 válasza kissi hozzászólására (») Dec 10, 2021 /
 
Amiket eddig láttam azok is mind optocsatolós áramkörrel kezdődtek, egy kivétellel, az Unitronics Jazz oplc-jében emlékeim szerint nem volt optocsatoló.
Következő: »»   25 / 25
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem