Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   23 / 361
(#) kkrisz75 válasza vilmosd hozzászólására (») Márc 13, 2011 /
 
Ez ok és már ez is segített.
Bajom, hogy semennyire nem jutok előrébb ha beégettem és működik. Látom és jó. A szimulátorban is látom, hogy működik. Összerakom és jó, lényegében lesz egy elektronikám ami fogalmam sincs hogyan működik, csak működik.

Nekem be kell tenni egy teljesen más elven működő programba. Lényegében nekem a működési elvi leírása kellene. Itt vagyok bajban, hogy az asm alapján vissza kell fejteni, kitalálni, hogyan működik.
Ezzel nem is lenne bajom ha ismerném az asm-et. De egy hónap alatt sem értem az alapjait, pedig a pictanf könyvet, és mindent leszedtem már tőled és átnéztem. Az számomra értelmetlen és bonyolult.
(PL: Minek kell mindent W-be tenni. beteszek valami és aztán kiolvasom máshonnan. Miért nem teszem egyből oda ahova kiolvasom... na mind1)

Programban
Látom RB4-en kiküld 8db 1-0 váltást. Ez a 595ösön egy storage órajel láb. Mire jó ez, miért csinálja?

Aztán az RB3 lábon mikor, az RB4en minden kiment, szintén kiküld egy 1-0 jelet. Ezt miért csinálja?

Ja és a leg elején, mielőtt bármit kiadna az RB5 lábon 1ről 0ra állítja. Ezt miért csinálja?

Előző hsz el is előrébb jutottam, eddig csak feltételeztem, hogy az RB0 és 1 lábakon egy fel le léptető számláló van, a kapcsolási rajz alapján. Így ezek szerint a számláló értéke átmegy a 595be. Eddig eljutottam legelőször is. csak azt nem tudom melyik lábon. És mikor átment honnan tudja az 595 hogy új adat megy ki, és honnan tudja, hogy az 595, hogy mikor jelezze is ki.

Hogyan küldi át az adatot? RS232 szerint? Vagy váltsam fel a PL: 1300at bináris számra és az 1eket és 0kart küldjem át? Ha így van akkor honnan tudja, hogy két 1-es érték jött. Van belső órajele? vagy nekem kell külön megadni az órajelet is?


A kapcsolási rajzon mi az az IC2P. Se kocka se háromszög, semmi elektronikai szimbólum, mint pl a kapcsolónál, ami összetéveszthetetlen. Arra se tudtam a rájönni mi az.

Amúgy nekem csak hex értéket ír ki.
Ha bináris is lett volna akkor kiszámolom fejben, azt naponta használom.
(#) vilmosd válasza kkrisz75 hozzászólására (») Márc 14, 2011 /
 
Hali
Latom mi a problemad. Nem erted a 595 mukodesi elvet. Ezt kellene elobb megerteni az adatlap alapjan. Roviden a lenyeg, hogy a belsejeben van egy shiftregiszter, es egy arnyek (kimeneti ) regiszter. Mind a ketto 8 bites. Amikor az adatokat irod be, az orajel hatasara mintat vesz az adatvonalrol, es eltolja 1 bitnyit. A 8 orajael tehat 8 bit informaciot tol be a shift regiszterbe. Amikor "0" a bemeno jel, akkor "0" lesz a regiszter bit erteke, amikor "1" akkor termeszetesen "1". Mondjuk hasonlit a RS232 atvitelehez, de itt az orajel vezerel. Amikor betoltal minden bitet, akkor a masik jellel attoltod a bemeneti regiszter tartalmat a kimeneti regiszterbe, es megjelenik a 8 bit a 8 kimeneti labon. Na ez kb a mukodese. Talan kellene tanulmanyozni a digitalis technikat. A konyvespolcon talalsz meg konyveket magyarul, amiben talalhatsz leirast a shift regiszterek mukodeserol is. Amig ezt nem erted meg, nem fogod megerteni a programot sem, es termeszetesen Te sem tudsz programot irni, mindegy milyen nyelvjarasban probalod.
(#) kkrisz75 válasza vilmosd hozzászólására (») Márc 14, 2011 /
 
A számítógép és egységei is mind digitális technika és értem.
Amit leírtál is értem. Az adatlapot nem értem. Ez pedig nem a digitális technika nem értése, hanem az angol-é.

Sajnos azzal lassabban haladok mint ennek a megértésével.
(#) proli007 válasza kkrisz75 hozzászólására (») Márc 15, 2011 /
 
Hello!
"A számítógép és egységei is mind digitális technika és értem." Ha nem haragszol meg, azért ebben a kijelentésben kételkednék. Szerintem még Vilmos sem engedné meg magának, ennél óvatosabb.
De a PC nem mikrokontroller. Az egy sokkal hardver közelebbi eszköz. Egy gépikódú program visszafejtését, csak úgy lehet elképzelni, ha az ember a kontroller programozásának és hardver környezetének alapos ismeretét feltételezi. De még ekkor sem lehet biztosra menni. Nem csak a programot, hanem a programozó gondolkodását is meg kell érteni (átvenni), amihez semmi segítség nincs. Megjegyzések, utalások, tárolók feladata, táblázatok helye és értelme... Szóval elég "felelőtlen", időrabló vállalkozás. (próbáltam)

De hogy ne csak ledorongoljalak, egy kérdésedre válaszolok:
Azért kell sokszor a W-be tenni a dolgokat, mert a PIC RISC proci, és sebesség növelése miatt egy utasítás byte-ban tárolja a műveletet. (Avagy próbálja nélkülözni a több byte-os utasításokat.) Így az utasítás és paraméterei benne vannak a gépi kód szavában. De annak bitszáma korlátozott hosszúságú. Ezért a kódban vagy egy regiszter cím, vagy egy konstans érték lehet. De két regiszter címe, vagy egy cím és egy konstans, már nem fér el benne. Ezért van az, hogy a forrás mellett, a cél helyét egy biten tárolja az utasítás, ami ha "0" akkor az adat a W-be megy, ha "1" akkor vissza a megcímzett regiszterbe..
üdv! proli007
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 15, 2011 / 1
 
Hali!
Simpi mester noszogtatására (meg természetesen a köz javára ) összedobtam egy 74HC595-nek irogató programot 18F2550-re.
Nagyjábból felkommenteztem, az "adat1" nevű változóba írjuk be azt az adatot, amit a 74HC595 kimenetén látni szeretnénk.
Az elv nagyon egyszerű, megnézzük a szám 7. bitét, ha 0, akkor 0-át írunk ki, ha 1, akkor 1-et. Majd eltoljuk a biteket 1-el balra, és megint megnézzük a 7.bitet, kiírunk, tolunk...stb ezt így 8-szor, amíg mind a 8 bitet ki nem írtuk.
Csatolom a Proteusos kapcsolást is, ha nem menne a szimuláció, akkor álíltsuk be a PIC programját (a hex filét).
A programot valószínűleg meg lehetne máshogy is csinálni, hatékonyabbra, de nem akartam mégjobban megkavarni.
A delayokat lehet kisebbre is írni, csak a biztonság kedvéért írtam be 1ms-ot.
(#) kkrisz75 válasza proli007 hozzászólására (») Márc 15, 2011 /
 
Részben, és egyszerűsítve.
Akartam jelezni, hogy bár nem vagyok elektro mérnök, de azért a bit, byte, hex átváltást még ismerem. Sőt még meg is értem, hogy miért 1 vagy 0 a kimenet, vagy mit jelent. Stb, Alap szinten azért elprogramozgatok egy PHP oldalt, ami messze van a C-től, de nem vagyok annyira h.. hogy ne értsem meg ha valaki leírja.

Jó indulatú volt mert küldött rajzot és ASM kódot is. De szöveges magyarázat nem volt, így max a visszafejtés maradt. El is jutottam vele egy darabig. (Ma ki is derült nem is jártam messze a dologtól.)

Na látod ezt már értem miért teszi w-be. Ugyan ezt 3 oldalon keresztül taglalja egy könyv. Feleslegesen.

Amúgy tegnap teljes véletlenséggel egy simson találkozón összefutottam egy "újonc" elektromérnök kollégával, akinek elküldve az 595ös adatlapját, leírta magyarul a lényeget.
Szóval amit megfejtettem, igazolásra került, és kiegészül sok hasznos információval. Még pár hónap és rájöttem volna magam is.

Most már tudom, melyik lábon kell betolni az adatokat, melyikkel léptetni és melyikkel kiíratni(engedélyezni a kimenetet), melyikkel kell törölni. Ez kb 10 mondatos e-mail ben megértettem.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Márc 15, 2011 /
 
Néztem már, hasonlót kreáltam én is időközbe.

Most elektronikát építettem össze hozzá, de kipróbálom az övét is. Etalonnak tökéletes lesz. be tettem a példák közé.
(#) kkrisz75 hozzászólása Márc 15, 2011 /
 
Összeraktam egy programot a lenti, példa és a leírás alapján.

Nem igazán azt teszi amit én akarok.
Sorban egyesével kigyújtani kellene neki a ledeket.
Na persze a led számát kiírja LCDre, hogy ellenőrizni tudjam.(az jó)

Minden láb bekötve a pic re. És a picről adom a MRnek, OE-nek a logikai 1et és 0-t. Lényegében a reset kikapcsolva, és OE(engedélyező állandóan bekapcsolva) nullán, így amit kiír a regiszter kimenetére egyből ki is kellene gyulladni a lednek.

Lehet én tévedek, de mikor DS lábnak adok 1-et és a SH_CP lábon 1-0-t akkor a regiszterbe 1 van az első helyen.(Majd DS láb ismét 0 ra teszem)
Mikor az ST_CP re is adok 1-0-t akkor kell kiíródnia és mivel engedélyezve van így ki is gyulladni a led nek.

Ha a ciklus 2 szer fut le akkor az első két helyen 1 van így ST-CP re adott 1-0 val az első két lednek kellene kigyulladni.

Ha jó a logikám akkor nem értem miért nem működik. Ha nem jó, akkor az lehet a hiba, hogy az üres helyekre a 0kat is be kell léptetni.

Ha jó a logikám és mégsem működik, akkor a hosszú vezeték miatt zavart vehet fel, de sajna elfogyott a 100nf kondi zavarszűrésnek.

595_1.fcf
    
(#) lalca válasza kkrisz75 hozzászólására (») Márc 16, 2011 / 1
 
Én anno 4094-el csináltam,de ua. a logika.Egyébként a
makrokat el lehet menteni és egy másik projectben használni(ha valaki még nem jött rá).
(#) kkrisz75 válasza lalca hozzászólására (») Márc 17, 2011 /
 
Meg oldottam.

vilmosd rajza alapján le vettem a reset és az engedélyező lábat a pic ről, és direktbe kötöttem őket. Engedélyezőt testre, reset pedig +5v ra. Bekapcsolás után azonnal szépen léptetett.

A programból kivettem ezeknek a vezérlését és egyben kivettem a nullák bevitelét. Eredmény az össze vissza lépkedés lett. nem egyesével hanem 1-2-3 asával is ugrott.

A soros nullák visszarakása után ismét jó.

A kérdésem, viszont az, mert azért van kis hiba. Hogyan tudom vezérelni az engedélyező lábat és a resetet a picről. Jelenleg bekapcsoláskor néha kigyullad pár led, PL az első kettő, és mikor a program utóléri (1-8 ig léptetéskor) akkor ha végére ér a program eltűnik, és már jól megy tovább.

Vagyis, mi lehet az oka ennek? jól gondolom, hogy feszültség ugrásra kimegy valami a lábakra gondolom. Hogyan lehet ezt kiküszöbölni?

És a reset lábat hogyan lehet bekötni, hogy használni tudjam. Mert ugyan ebben a programban, mikor be volt kötve a láb meg se moccant a ledsor, pedig ott a pic adta a 1et neki vagyis 5V ot.
(#) SzT3 hozzászólása Márc 19, 2011 /
 
Sziasztok.

Szeretnék PIC12F508-ra írni egy kis led villogtató progit de nem találom a felsorolásba?
Esetleg kompatibilis vajon másik IC-vel (hogy azt válasszam helyette? ) Vagy valahogy bele tudom varázsolni a felsorolásba?
Köszi
(#) SzT3 válasza (Felhasználó 15355) hozzászólására (») Márc 19, 2011 /
 
Szia

12f es szériából elég sok van benne
609
615
617
629
635
675
683

HA jól veszem ki a szavaidból akkor esetleg a 12f629-el tudom helyettesíteni? vagy nem? tudom vegyek olyan picet ami van a Flovcode-ba
(#) SzT3 válasza (Felhasználó 15355) hozzászólására (») Márc 19, 2011 /
 
ahogy nézem a lábkiosztást a 12f609 is azonos az f508-al de gondolom a "GONDOLKODÁSA" más
(#) SzT3 válasza (Felhasználó 15355) hozzászólására (») Márc 19, 2011 /
 
Mivel nem tiitkoltan nem igazán értek a programozáshoz ezért inkább váltok az általad javasolt 675-re. tényleg nincs horror ára, és a belső óra nekem előny.
Köszönöm
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Hali!
Van még valami más IC az áramkörben?
A resetet egyszerű megoldani.
Kitalálsz neki egy lábat, majd a program legeslegelején kiadsz rá "1"-et, vársz egy picit (pl. 1ms), majd "0"-át, megint vársz, majd megint "1"-et és megint vársz. És utána kezdődhet a program...
Aztán többet már nem nyúlsz a reset-hez.
szerk.: mivel negált a 74HC595-ön a reset láb, ezért kell "1"-esen hagyni.
(#) bodgabo hozzászólása Márc 20, 2011 /
 
Sziasztok!
Tudtok valami egyszerű módszert byte-ok bitenkénti kiküldésére (sorosan) egy adott lábon? 4 byte-ot szeretnék kiküldeni, közben egy másik lábon bitenkénti órajelre is szükség van. MC14499P kijelző meghajtót szeretnék működtetni. Bit eltolással próbálkozok, de már annyira összebonyolítottam, hogy se füle se farka...
(#) zenetom válasza bodgabo hozzászólására (») Márc 20, 2011 /
 
Hali!
Pedig jól csinálod!
Amit csatoltam, hozzászólásomban egy 74HC595-ös IC-nek küldi ki 1 byte-ot, sorosan.
Szerintem ha azt át tanulmányozod, akkor már könnyebb dolgod lesz. :yes:
(#) kkrisz75 válasza zenetom hozzászólására (») Márc 20, 2011 /
 
Ok, ezt így is csinálom.

De amint a picre kötöm az engedélyező (OE) és a reset (MR) lábat azonnal össze vissza ugrál.

Amíg ha ezek le vannak kötve VDDre és VSS re már jól működik.
(#) bodgabo válasza zenetom hozzászólására (») Márc 20, 2011 /
 
Köszi!
Így már valószínűleg menni fog! Én eddig erősen túlbonyolítottam a dolgot, már átláthatatlan volt...
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Az engedélyező lábat azt kötheted direktbe testre, azzal nem kell törődni (hacsak nincs rá különösebb ok).
Nézd át a programot hogy biztosan nem-e nyúlsz hozzá ahhoz a lábhoz, ami a resetre megy, meg lehet hogy az a láb open-draines (vagy open-collectoros).
Milyen PIC-et használsz (18F4550?) és annak melyik lábát a resetnek?
bodgabo: szívesen, és sok sikert!
(#) kkrisz75 válasza zenetom hozzászólására (») Márc 20, 2011 /
 
18f4550 és az RC5 volt a reset és az RD6 volt a engedélyező.

Azért akarnám használni őket, mert bekapcsoláskor felvillannak a ledek össze vissza, és csak az után kezd el működi, de az első kisorozásig karácsonyfaként világít.

Viszont ha van jó, láb spóroló megoldás, amivel maradhat a 3 láb használata akkor inkább azt választanám.

Mert mivel működik a 3 láb vezérlés, így megpróbálom a sebesség mérőt is besűríteni ugyan ebbe a PIC-be.

A két pic a multiplex 18-és 14 szabad láb miatt kellett.
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Az RC4 és az RC5 lábak az USB kommunikáció miatt lehet hogy nem működnek rendesen.
Le kell tiltani az USB-t.
Az "UCON" regiszter "USBEN" bitét törölni kell (a 3. bit), az "UCFG" regiszter "UTRDIS" bitét pedig "1"-re kell állítani (ez is a 3. bit).
(#) kkrisz75 válasza zenetom hozzászólására (») Márc 20, 2011 /
 
Igazad lehet. Sőt.

Menet közben felszabadítottam az RB0 kimenetet, hogy tudjam használni megszakításnak. Az LCD 0 adat kimenetet ami RB0-n volt át tette, RC5 re és össze vissza kijelzett valamit.
A RD2-re téve jó lett a kijelzés.

Közben az élő teszt az autóban is megvolt, és pontosan mér az RB0INT megszakítással is.

A kérdésem, az lenne, hogy C kódon kívül nem tudom kikapcsolni az USB-t a konfig beállításoknál?
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Én nem találtam olyat a config beállításoknál. De ha kikapcsolod a kóddal, amit mutattam, úgy műr működik az RC5?
(#) kkrisz75 válasza zenetom hozzászólására (») Márc 20, 2011 /
 
Még nem néztem. De most bekötöm és megnézem.

Ez a kód kikapcsolja az USB-t, ezt értem.
RD6 is működni fog, vagy azt mással kell működésre bírni.
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Szerintem az alapból működött, csak a reset bekavart z 595-nek. De az enable lábat kösd testre.
(#) kkrisz75 válasza zenetom hozzászólására (») Márc 20, 2011 /
 
Ezt a hiba üzenetet dobja ki.
"A Flowcode nem tudja lefordítani C kódra a folyamatábrát, a következő hibák miatt:

Ha a folyamatábra tartalmaz C kódot, kérem vizsgálja át alaposan. Ha a folyamatábra nem tartalmaz C kódot, vagy nem talált benne hibát, kérjen technikai támogatást "
(#) zenetom válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Hmm. Milyen verziójú a Flowcode-od? Az enyém v4.3.7.63. Nekem lefordította, majd holnap jobban utánanézek...
(#) kaqkk válasza kkrisz75 hozzászólására (») Márc 20, 2011 /
 
Akkor is ezt írja ki ha ékezetes betű van a nevében !
PL:siftelés
(#) kkrisz75 válasza kaqkk hozzászólására (») Márc 20, 2011 /
 
Nem használok sehol ékezetet. Még az útvonalban sem.

Zenetom:
Ugyan az a verzióm van nekem is.
Következő: »»   23 / 361
Bejelentkezés

Belépés

Hirdetés
XDT.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