Fórum témák
» Több friss téma |
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.
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.
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.
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
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.
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.
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é.
Ö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.
É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á).
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.
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
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
ahogy nézem a lábkiosztást a 12f609 is azonos az f508-al de gondolom a "GONDOLKODÁSA" más
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
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.
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...
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:
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.
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...
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!
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.
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).
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?
É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?
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.
Szerintem az alapból működött, csak a reset bekavart z 595-nek. De az enable lábat kösd testre.
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 "
Hmm. Milyen verziójú a Flowcode-od? Az enyém v4.3.7.63. Nekem lefordította, majd holnap jobban utánanézek...
Akkor is ezt írja ki ha ékezetes betű van a nevében !
PL:siftelés
Nem használok sehol ékezetet. Még az útvonalban sem.
Zenetom: Ugyan az a verzióm van nekem is. |
Bejelentkezés
Hirdetés |