Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Hát mert az működött helyesen abban a konkrét esetben. Ha nem így lett volna, nem írtam volna a fórumba...
MOVLA nincs. oké. Legyen hát munkaregiszter!
Próbáld észrevenni, hogy valami nem stimmel, mert ellentmondás van az általad leírt állítások között!
1. Most akkor 12-őt akartál a munkaregiszterbe tölteni 2. Vagy a 12. memóriarekesz tartalmát akartad elővenni x. Rosszul emlékszel, hogy mi volt a jó utasítás Idézet: „1. Most akkor 12-őt akartál a munkaregiszterbe tölteni 2. Vagy a 12. memóriarekesz tartalmát akartad elővenni x. Rosszul emlékszel, hogy mi volt a jó utasítás” Tenyleg jo lenne ha Topi betenne azt a szavazasi lehetoseget Nekem lenne egy Y. valasz lehetoseg is: 0x0C memoria rekeszben mar 12 volt egy elozo probalkozas miatt es ezert volt "sikeres" a muvelet
Azt gondolom, hogy rosszul fogalmaztam meg a kérdésemet. $0c-t akartam a munkaregiszterbe tenni, illetve tettem (movlw 0x0c) is csak szubrutin hívása után már nem $0c volt benne, hanem valami más... Máig nem értem miért, de az assembler újraindítását követően helyreállt a rend... a MOVF-el val.szeg hihetetlen szerencsém volt, hogy pont $0c volt ott, ezért tűnt jónak.
Más: a MOVF utasítással tényleg nem voltam tisztában most használtam először és sokat megtudtam róla Tőletek, kösz érte! Jogos: az adatlapból is megtudhattam volna, csak álmomban sem gondoltam hogy a memóriarekesz tartalmát mozgatom az adat helyett. Tehát nem gondoltam volna, hogy movf 0x0c,temp <> movlw 0x0c,movwf temp. (visz. mov ax,bx) Oké, ez nem mentség, tanulságot levontam: előbb tájékozódj, aztán kérdezz! Köszönöm a segítségeteket! :yes:
Azt írod, hogy a W-be akartál 12-őt tenni. Az adatlap utasítás készletében ez a
A
A célod szempontjából megegyezik az eredeti szándékoddal, mert a MOVF nem rontja el a W tartalmát. Így eleve nem értem mi okból nem volt jó a W tartalma a szubrutin hívása után!? Lehet, hogy közben egy megszakítás elrontotta, feltéve, ha van megszakításod és nincs rendesen lekezelve a fontos regiszterek mentése. Más egyéb ok nem lehet, kivéve az operációs rendszered és az MPLAB működésében fellépő anomáliát, ami szintén elég valószínűtlen, de nem kizárható. Idézet: „MOVLA nincs. oké. Legyen hát munkaregiszter!” Lehet gunyolodni, de pl epp ma reggel botlottam ebbe a kodba:
Ez egy MC68HC705C8 MCU-nak egy kod reszlete. Ha az ember tudja, hogy a Motorola csalad hasznalja az "Accumulator" kifejezest, akkor az adott kod egeszen konnyeden megertheto.
Nem is kell ilyen messzire menni példáért, hiszen a Microchip dsPIC30/33 SCU-jaiban is van akkumulátor regiszter (mindjárt kettő is!) és a MAC utasítások neve a Multiply and Accumulate (szorzás és szummázás) műveletet takarja.
Nem értem a problémát... Van olyan gyártó, aki "accumulator"-nak, van, amelyik "work register"-nek nevezi "ugyanazt a funkciót ellátó regisztert ( a műveletek során az operandusok egyike legtöbbször itt helyezkedik el!), ebben mi a gond?
Steve Idézet: „Nem értem a problémát... Van olyan gyártó, aki "accumulator"-nak, van, amelyik "work register"-nek nevezi "ugyanazt a funkciót ellátó regisztert ( a műveletek során az operandusok egyike legtöbbször itt helyezkedik el!), ebben mi a gond?” Nekem ugyan nem gond, csak ha nem azt a terminologiat hasznaljuk amit a gyarto, akkor tobb problemaba is utkozunk: 1. Lehet a masik szakember nem fogja megerteni mirol is beszelunk 2. Nem fogjuk megtalalni a kivant informaciot a keresokkel mivel rossz kifejezesre keresunk ra 3. Mint amire mar ra szerettem volna vilagitani az utasitasok elnevezesei gyakran hordozzak a funkciojukat, es ha ismerjuk a gyarto terminologiajat akkor az utasitasok nevenek lekepzese is logikus igy konyebb megjegyezni + gondolkodni vele 4. Ahogy Icserny ravilagitott a DSP PIC-ekben vannak Work registerek is es van 2 db un. Accumulator amik pl reszeredmenyeket kepesek akkumulalni (osszegezni). Ha tevesen a munka regisztert hivtuk korabban akkumulatornak akkor nehezebb lesz megerteni a kuonbseget + ujfent bonyodalmakat fog okozni mikor egy problema leirasnal a forumon akkumulatorrol beszel valaki es a masik meg gondolkodik, hogy "Na de a PIC 18F-ben nincs is akkumulator, az csak a dsPIC-ben letezik"
Lehet, hogy tévedek, de főleg abban az esetben szokásos az akkumulátor regiszter elnevezés, hogy egyedi, kitüntetett szerepű, az ALU-ban elhelyezkedő regiszterről van szó.
Ahol pl. az összeadáshoz vagy egyéb művelethez több, egyenértékű regiszter is felhasználható, ott inkább munkaregiszterről, általános célú regiszterekről szokás beszélni.
Szeretnék egy tömböt definiálni asm-ban (dsPic30F), és a tömb elemeit szeretném programból beolvasni, hogy tudnám ezt megcsinálni?
Sehogy.
Ismered a DSP utasításokat és a velük összefüggő munka regiszterek speciális feladatait? Ha lefoglalsz egy területet a RAM-ban, akkor a megfelelő munka(Wx) regiszterekbe töltött RAM címmel lehet műveleteket végezni a megcímzett rekesz tartalmával(ill. regiszterek tartalmaival). Ez hasonlít a tömbkezeléshez, de asm-ban nincsenek tömbök, mint a C-ben...
Szia!
Megvan a hiba. Persze men ott volt, ahol kerestem. A word cím növelését véletlenül kitöröltem....
Csak most ismerkedek a PIC-el és az assemlyvel, a DSP-ről már ne is beszéljünk . Egy pár alap feladatot már megoldottam, LED, kapcsoló használat, ilyemit, csak annyi az információ a programozással kapcsolatban és kevés a jól magyarázott példa, hogy nem tudom hol kellene keresni az infót.
Melyik parancsot lenne jó nekem? Most éppen a PSV-vel kapcsolatos dolgokat tanulmányozom... Idézet: „Lehet, hogy tévedek, de főleg abban az esetben szokásos az akkumulátor regiszter elnevezés, hogy egyedi, kitüntetett szerepű, az ALU-ban elhelyezkedő regiszterről van szó. Ahol pl. az összeadáshoz vagy egyéb művelethez több, egyenértékű regiszter is felhasználható, ott inkább munkaregiszterről, általános célú regiszterekről szokás beszélni.” Most picit olvasgattam, hogy mik derulnek ki! Az Accumulatort John Von Neumann talalta ki, hogy csokkentse a koltsegeket. Igazandibol a fo kulonbseg, hogy az ALU ha csak az Accu-ba kepes dolgozni, akkor beszelunk igazi Accumulator-architekturarol. Ha kepes mashova is eltarolni a szamitas adatait akkor pedig regiszter-architekturarol beszelunk. Nos, mivel a PIC kepes a szamitas vegeredmenyet eltarolni regiszterbe, ezert en nem neveznem akkumulator-architekturanak. De mivel nem kepes ket regiszter tartalmat kozvetlen ossze adni, ezert tisztan regiszter-architekturanak sem lehet nevezni. Valoszinuleg ez a ketto kozotti dolog az amit munkaregiszter-architekturanak lehetne hivni es akkor lehetunk a legkozelebb a talany megoldasahoz, de sajnos eddig nem talaltam ezzel kapcsolatosan konkret infot -- majd a neten meg nezelodom a hetvegen. Talan a dsPIC mar inkabb tekintheto regiszter architekturanak, nem tudom.
Assembly, vagy C vagy esetleg Alma++ nyelven dolgozol?
dsPIC-el kezdesz? Vagy már ismered a többi PIC-et?
Foglalkoztam már alapszinten PIC16-tal. Igazából a dsPIC nekem nem a DSP utasítások miatt kell, hanem legfőképpen a 12bites AD miatt. Vannak még hiányosságaim, de folyamatosan pótolom.
Idézet: „Szeretnék egy tömböt definiálni asm-ban (dsPic30F), és a tömb elemeit szeretném programból beolvasni, hogy tudnám ezt megcsinálni?” Nézd meg nálam, a Mutatók, tömbök, szubrutinok c. fejezetben! A PSV használata is le van benne írva. Ne zavarjon, hogy a leírás PIC24-ről beszél, annak az utasításkészletét is a dsPIC30F/33F Programmer's Reference Manual írja le. :yes:
Icserny-nek van egy beosztottja, egy duracell nyuszi Soha nem pihen le es ilyen oldalakat csinal:
Ezt lattad mar?
Basszus a Te oldalad keresem már többször de nem találtam Nemrég már nézegettem csak nem mentettem el a címét.
Köszi nektek Átnézem.
Nem lesz könnyű menet.
A 18F-ek között is van 12btes A/D egyébként.
Sziasztok!
Van egy PIC16f716-om és az a problémám, hogy a program négyszer-ötször végigmegy aztán pedig leáll, után hiába resetelem csak az RB0-n világít a LED. Leveszem a tápot visszarakom rá, semmi csak az segít ha újra beprogramozom. A PIC belső RC oszcillátorról megy. Szerintetek mi lehet a probléma? Egyszer véletlenül fordítva raktam bele a programozóba lehet, hogy ekkor tönkretettem? Előre is köszönöm a válaszokat
Mondjuk a program nélkül semmit nem lehet mondani erre. De ahogy nézem, a 16F716-nak nincs is belső oszcillátora. Akkor mi is történt pontosan?
Van belső oszcillátora. Végülis csak a 7805-ös ic volt rossz kicseréltem és most működik rendesen.
|
Bejelentkezés
Hirdetés |