Fórum témák
» Több friss téma |
Szia!
Idézet: „Amikor az öt villanás megvolt, akkor egy másik lednek kellene elkezdeni villogni mondjuk egészen addig még a gombot nyomva tartom. Ha a gombot elengedem, akkor újra kellene kezdenie az egészet, először az egyik led öt villogása utána utána a másik folyamatos villogtatása.” Vagy én értettem félre vagy te írtad rosszul.. Azt írtad ha elengeded akkor is újra kell indulnia.. Amit feltettem az pont azt csinálja amit leírtál először.
Szia! Igazad van, én írtam rosszul, te úgy csináltad a programot ahogy kértem. Tegnap már annyira belekavarodtam hogy meg sem tudtam fogalmazni mit akarok Elvileg így is jó lenne a program, ahogy először megcsináltad, csak érdekelne a másik megoldás is. Egyébként a gyalupadom behúzójának a vezérlése lenne. Ha odaillesztem az anyagot a behúzóhengerhez az megnyom egy mikrokapcsolót az indítja a vezérlést a behúzómotornak( ez az 5 villogás) utána a másik hengert eléri ami kiviszi az anyagot (az a többi villogás) Röviden ennyi, azért kértem led villogást mert azt át tudom variálni én is ha kész a vezérlés. Ma átírtam pic16f877-re, és mostmár működik azon is, és elvileg így is meg tudom csinálni ahogy elkészítetted, mert a mikrokapcsoló az akár kapcsolhatja a kontroller tápját is és akkor úgyis indul ciklus.
Csak így még egyszerűbb lett volna..
Sziasztok! Tud valaki olyan magyar oldalt ahol a flowcode programozásról lehet informálódni? Ezt a topic-ot már elolvastam, meg amit a google talál magyar nyelven szinte mindet, de elég sok akadályba ütközök, amire nehezen találok megoldást. Közben elkezdtem tanulgatni az assembly programozás alapjait, hogy tisztában legyek az alapokkal is, de így is nehéz. Ilyen kisebb dolgok mennek, mint pl led villogás, időzítés stb... de amikor már pl egy feltételes elágazást rakok be, nem tudom hogy mit kell csinálni. Meg pl példaprogramból meg tudom csinálni hogy létrehozok egy változót, de nem tudok rájönni hogy mit csinálok amikor egy változót létrehozok. Ezt a topic-ot meg nem akarom szét offolni a kérdéseimmel. Ezért kérdezem hátha van valami magyar nyelvű segítség hozzá.
Szerintem ez a topic pont erre van hogy feltehesd a kédéseket ha nem megy valami.
Én is itt tanultam meg az egészet amit jelenleg tudok, sokat kell probálkozni és tesztelni, sajnos vagy nem de egy gyakorló áramkörre szükséged lesz mindenképp mert a simulátor nem fedi a valoságot. A kérdésedből azt látom hogy már az alapokkal van baj, probáld megérteni a logikát mert ha az nem megy akkor cs....ed a dolgot. Nem vagyok guru de ha a logikával bajvan akkor ne kezd egy programozási nyelvbe is mert csak nagyon összekavarodsz és nem fogod átlátni a dolgot, vagy az egyik vagy a másik. Én is 0-ról indultam és rájöttem hogy programozni hogy megtanuljak, sok idő kell (dis.... gondok) míg a flowcode egy egyszerü és használható program. Egy probléma van az a forditott file méret de egy mplab-el meg lehet faragni és az sokat segít a dolgon.
Ha ezt a 294 oldal elolvastad + amit a google mutatott, és még nem tudod mi az a feltételes elágazás.... valóban nem lesz egyszerű.
Feltételes elágazás, ahogy neve is mutatja egy elágazás, (választási lehetőség) ami feltételhez van kötve. Ezt a feltételt te határozod meg. Pl: vizsgáljuk KÖRTE változó értékét feltétel, hogy (KÖRTE legyen egyenlő 0) akkor az elágazás 'Igaz' ágán folytatódik a program lépés, minden más esetben a 'Nem' ágán. Idézet: „étrehozok egy változót, de nem tudok rájönni hogy mit csinálok amikor egy változót létrehozok” Ez egy fogós kérdés. Változót képzeld el egy doboznak amiben tárolsz valamit, Ez a valami lehet szám, karakter, byte... A létrehozott változódat el kell nevezni, pl: KÖRTE A változódnak meg kell határozni, hogy mi tárolható benne. (szám, karakter.... ) Ha létrehozol egy KÖRTE és ALMA és SZILVA változót aminek a tipusa szám, akkor ezekben tárolhatsz számokat amivel matematikai műveleteket végezhetsz. KÖRTE = 10 ALMA = 5 KÖRTE + ALMA = SZILVA Idézet: „Közben elkezdtem tanulgatni az assembly programozás alapjait, hogy tisztában legyek az alapokkal” Először az alapok alapjait értsd meg !
Üdv! Köszönöm a segítséget! Közben egész nap ezzel szórakoztam, találtam pár oktató videót amiből kicsit könnyebb megérteni dolgokat, igaz angolul van de a videó a lényeg. Plussz ott vannak a kész példaprogramok is amiket ki lehet egészíteni, meg variálni rajtuk. Most már tudom használni a feltételes elágazást sőt a többirányút is. Változót azt eddig is használtam csak úgy értettem hogy nem tudom miért kell létrehozni, hogy magában a mikrovezérlőben ez mit csinál. De már kezdem érteni ezeket is. Gyakorló áramkör tervben van, csak még kicsit várok hogy jobban bele tanuljak. Ha csinálok valamit egyből lefordítom hex-be, és egy másik szimulátor programban megnézem. Egy hete még azt sem tudtam hogy létezik ez a program, mindíg csak kész hex-fájlokkal dolgoztam. Nem akarok semmi bonyolult dolgot csinálni így nekem ez a program tökéletes lesz, és ha időm engedi mindíg gyakorlok kicsit, és minden nap tanulok valamit. Igaz sok a homályos dolog, de bízom benne hogy bele jövök.
Egy változó létrehozásával gyakorlatilag lefoglalsz egy területet a kontroller memóriájában (RAM) saját magadnak azzal a céllal, hogy azon a részen te akarsz garázdálkodni. Remélhetőleg így érthető a dolog. niedziela szóhasználatát alapul véve, megveszed a dobozt, amiben tárolsz valamit.
Erre voltam kíváncsi! Hurrogjatok le ha hülyét kérdezek, de én ilyen vagyok hogy mindenre kíváncsi vagyok! Még az érdekel hogy hány ilyen területet lehet lefoglalni egy kontrollerben? Gondolom ez kontrollertől is függ és attól is hogy mennyi számot tartalmaz a változó. Én így megértem ahogy írjátok, de sok oldalon nekem nem mint amatőrnek nem érthető. Mondok egy példát tegyük fel egy mosógép programját akarnám megcsinálni egy Pic16f877 be mondjuk tartalmazna 30 változót, maga a folyamatábra meg tele lenne többirányú elágazással, makróhívással, számítással stb... Meddig lehet ezzel elmenni. Vagyis úgy értem hogy pár videó mutat pl két led vezérlését vagy három féle megoldásban, van ahol makróhívással, van ahol számítás+ kimenet+feltételes elágazás van. Mennyire van jelentősége ezeknek? Gondolom én mint lelkes kezdő, nem valószínű hogy nagyobb programot fogok írni mint ami belefér a programmemóriába ugye?
A memóriaterületeket elég könnyű telíteni, de ezt majd tapasztalni fogod. A legegyszerűbb elkészíteni a programot és megpróbálni lefordítani, a fordítás végén kapni fogsz egy memóriafelhasználási statisztikát. Lévén Flowcode-ról van szó, nehéz előre kiszámolni, mennyire telítődik a kontroller.
Egyrész minden kontrollernek véges memóriaterületei vannak, családonként/típusonként változó. Másrészt nem nagyon lehet tudni, főleg kezdőként, hogy a Flowcode a te folyamatábrád pontosan hogyan is fordítja le. Mindenesetre eléggé "szószátyár" programozási módszer, de valamit valamiért. Ha létrehozol egy változót, nem attól függ a mérete, hogy mit tárolsz benne, hanem attól, hogy a változó mekkora. A Byte (8 bit) típusú változó az egyik legkissebb, cserébe 0-255 -ig lehet benne tárolni egy számot. Mindegy, hogy nullát vagy 255-öt írsz bele, a helyfoglalása 1 Byte. Namost, léteznek nagyobb változók (dobozok), pl. Integer, de azok eleve nagyobb helyet foglalnak el. Nyílván van egy adott területed, amivel gazdálkodhatsz. Ha nagy változókat használsz, akkor kevesebb, ha kis változókat akkor pedig több fér el az adott területen. Törekedni kell a lehető legkevesebb változó használatára illetve egy változó többszöri felhasználására, de ezt majd idővel látni fogod.
Köszönöm hogy elmagyarázzátok, azt hiszem kezdem is érteni! Összedobtam egy led+nyomógomb kombinációt. A lényege hogy az első gomb megnyomása után kigyullad az egyik led, és csak utána lehet bekapcsolni a másikat. Csak annyi hogy ránéznétek erre a megoldásra? Csak hogy tudjam hogy esetleg ezt meg lehet oldani egyszerűbben, vagy jó ez így? Köszi!
Jó, csak a switch és led helyett használj bemeneteket és kimeneteket .
Switch és Led makrokat ha lehet mellőzd. A hozzászólás módosítva: Júl 11, 2015
Üdvözlet!
A következőben kérnék segítséget: Egy SSD1963-as vezérlővel szerelt kijelzőt próbálok megszelidíteni és a következőnél akadtam el: 16 bit (565) módban (16bit parallel) használom, működik is szépen, de a kijelző törlése relatíve lassú. A metódus amit használok a következő: kijelölöm a teljes kijelzőt, kiküldöm a két portra a megfelelő értéket (pl. feketénél 0-0) , aztán már nincs más, mint, hogy ezt kiórázom a megfelelő számban (jelen esetben 480x272= 130560-szor) a kijelzőnek. Ez a ciklus tehát nem tartalmaz mást mint egy H és egy L értéket (órajel) valamint egy számítást(ami a kiküldött órajeleket számolja). Ez összesen 3 művelet ebben a ciklusban. A pic egy 18f8722, 40 MHz-en (10 x 4 (Pll) ). Így most kb. 700ms a teljes kijelző törlése és ezt nem értem. Amit én számoltam, ennek a töredéke kellene legyen. Mit rontok el?
Meg kellene nézni ASM nézetben hány utasításra fordul a kód, onnan ellenőrizheted a számításod.
Azokat én raktam össze. A legnehezebb része az iniciálás, mert az ugye minden kijelzőnek (mármint a displaynek önmagában) más, a vezérlő IC-től független, az eladó (E-bay) meg nem tudott segíteni mit igényel ez övé. Végül többnapos kisérletezéssel (rengeteg helyről szedtem le init. C kódokat ehhez a vezérlőhöz), sikerült megtalálni egy működő kombót (pixel clk freq, hs-vs sync. etc...). Szeretném a képeket Sramból töltögetni, de amíg ilyen lassú, addig nincs értelme, merthogy az is kb ez a sebesség lenne... mondjuk gyorsabb, mint most Sd-ről, de a jótól messze van.
A hozzászólás módosítva: Júl 13, 2015
Asm-hez, C-hez nem értek, ha bemásolom azt a részt, kibogarászod nekem?
Meg lehet próbálni .
Kell pár perc, lecsupaszítom a fc fájlt , és beteszem ide.
Csináltam egy egyszerű tesztet, így ~360ms az eredmény.
Ha az asm-ben levettem a ciklus változót 24 bitesre ( 32 bitről) 255ms lett.
Az a pár perc pont egy óra volt, még így is maradt benne egy-két felesleg (ez egy fejlesztőpanelhez készült fc fájl, márvagy másfél éves, úgyhogy volt benne mindeféle).
A program végén lévő clrbox makróról lenne szó. ui.: Nem nevetni! : a makróban nem túl elegánsan van kiszámolva a 255 feletti érték! akkor még nem tudtam , hogy kell, azóta meg még nem írtam át.
Megvárom, míg belenézel abba amit feltettem, aztán kérdezek...
A teszt szerint a feltételvizsgálat 135us (nem néztem végig ), a ciklus 620ms és 1,5us a lezárás, tehát 700ms kb. helyes érték. Nem szoktam Flowcode-ban programozni, de azt tudom ajánlani az asm alapján, hogy fordítsd meg a ciklusfeltételt 0 vizsgálatra mert az egyszerűbb neki (tehát circle lastpixeltől számoljon visszafelé), így a ciklusideje lement 405ms-ra. Egyéb felesleges utasítások is maradnak benne, de azt nem tudom hogyan lehet kivenni. Ha az asm-ben átírom 196ms lesz az eredmény. Mindez feltételezi, hogy jól értelmeztem az egészet.
Átfordítottam a ciklust, ahogy mondtad, KÖSZÖNÖM, javul, bár egzakt mérést nem tudok végezni, kb. 500ms.
Ha valakinek van ötlete, hogyan tudnék lemenni 200 ms alá (evvel a Pic-kel), nagyon hálás lennék, mert az már egy elfogadható érték.
Tiszta gépi kóddal. Mellőzd a C -t.
Flowcodon keresztül, sehogy sem megoldható?
Szerintem nem, de vannak nálam sokkal jobban hozzáértők. Ők majd megmondják a bizonyosat.
|
Bejelentkezés
Hirdetés |