Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszi én is erre gondoltam csak nem voltam benne biztos
hali
Hogyan lehet egy ilyen programrészletet leszimulálni:
Én csak arra vagyok kíváncsi, hogy a "tizezresek' regiszter mennyi lesz a végén.
A kilépési pontra (goto Osztas_ezerrel a kilépési pont?) teszel egy töréspontot. Amikor ott megáll a program, akkor megnézed az eredményt (View/File registers, vagy View/Watch ablakban).
Idézet: „movf b'00100111', w ;eloször felso bájt” A MOVF az file regiszterbol (memoriabol) mozgat! Szerintem MOVLW B'00100111' -et akartal irni... A "subwf SZAM1_felso, w" es a "movwf SZAM1_felso" helyett egyszeruen irhatnad, hogy "subwf SZAM1_felso, F" Ugyanaz ADDWF-nel... Azonkivul nem latom hogy lepne ez ki a ciklusbol! Feltetel nelkul ugrasz vissza az elejere... Ja es az ATVITEL-t ugye nullazod az elejen?
Ez a script részlet amit bemásoltam nagyon sok sebből vérzik és nem is az egész rutin, csak annak egy részlete.
Azóta rájöttem magamtól ezekre a hibákra és kijavítottam mindet! Most már működik a saját osztó szubrutinom. Egy 16 bites számból csinál nekem 5db decimális számot. Például ha SZAM1=d'25498' (persze két bájton), akkor ez lesz: tizezresek=2 ezresek=5 szazasok=4 tizesek=9 egyesek=8 Utána már ki tudom jelezni akárhogy... :yes:
Ujjgyakorlatnak elmegy, de nem muszáj újra feltalálni a melegvizet. Az MCC18 telepítési könyvtárában ott van pl. az itoa függvény assembly forráskódja.
Csatlakozom icserny-hez, pl sokszor az MIT-nak a piclist-jet hasznalom (ill annak is a techref-jet) hogy egy-egy rutint kinezzek:
http://www.piclist.com/techref/microchip/routines.htm Konkretan az atalakito rutinok: http://www.piclist.com/techref/microchip/math/radix/index.htm De amugy ha a PIC-et akarod megtanulni, akkor erdemes ugyanigy sajat kutfobol megoldani, es mikor mar megy a sajat megnezni masok hogy csinaltak meg.
Az MCC18-s forditoban van szoftveres SPI mód. Ennél mindenképp definiálni kell a Chip Select -t?
4 db 4021 -s IC -t szeretnék beolvasni. Itt 3 PIC lábat használók, a LOAD -hoz, CLK hoz és a DATA -hoz. Esetleg, azt még tudja valaki, hogy hogyan lehet itt beolvasni?? A doksiban csak irási funkció szerepel. Olvasásit nem látok...
Nemtudom, hogy muszáj-e, de ha igen, akkor adj be neki egy nem használt bitet egy változóból.
Értem.
Esetleg azt nem tudod, hogy szoftveres SPI esetén h kell olvasni? Megnyitási és írási funkciót látok a doksiban, de olvasásit nem. Erről tudsz valamit?
Amennyi időt az ember az SPI doksikereséssel elvacakol, annyi idő alatt megír egy bitbillegtetést. Szóval fogalmam sincs, sosem használtam a gyári függvényeket SPI-re. De szerintem valami ReadSPI lehet.
Idézet: Bármilyen meglepő, az írás függvénnyel kell olvasni! „szoftveres SPI esetén h kell olvasni?”
Itt data az adat, amit kiküldesz, a visszatérési érték pedig az, amit beolvasol.
Végülis logikus, hiszen az SPI egy léptetőregiszter. Írás és olvasás egyidejűleg történik, csak esetleg egyik nincs figyelembevéve.
Persze, ki lehetne ollózni mindent, csak abból nem tanulnék.
------------------------------------------------------- Összeraktam ezt az áramkörömet: Bővebben: Link De nem tudom beleírni a PIC-be a programomat! Ezt a hibaüzenetet írja ki az MPLAB: Idézet: „PKWarn0003: Unexpected device ID: Please verify that a PIC18F4520 is correctly installed in the application. (Expected ID = 0x1080, ID Read = 0x0)” Mit rontottam el? Esetleg a program rossz? Itt van az is:
Próbáld meg a PGC / PGD ról ideiglenesen lekapcsolni a ledeket. Csak a pickit csatlakozzon.
Leszedtem őket, de így sem jó sajnos. :no:
Programoztad már ezt a tokot ? Vagy most elsőre nem akar menni ? Zárlat, a panelen, szűrőkondik rendben vannak ? Ha adsz neki külön VDD -t ? Lehet hogy a PK nem bírja ellátni az egészet.
Nem, még nem programoztam ezt. De ahogy nézem nincs zárlat. A szűrőkondik megvannak (a PIC táplábain 1db 100nF-os fóliakondi egy 100µF-os elkóval), és nem adtam neki külön tápfeszültséget.
Adj neki tápot külsőleg akkor. Ha így se menne, akkor én kivenném a PIC et az áramkörből, és beleraknám egy foglalatba, amin csak az ICSP lábak vannak behuzalozva közvetlen a PK -be. Ha így sem ismeri fel, akkor nem MPLAB ban, hanem a PK saját win-es programjával nézném meg. Ott van egy olyasmi opció hogy add vpp before vdd vagy vmi hasonló. És úgy megnézni, törölni teljesen. Ha ekkor sem ismeri fel akkor gáz van. Vagy a PIC, vagy a PK nincs rendben akkor.
Adtam neki külön tápot, így már tudom programozni. De a LED-ek nem világítanak.
(Ennyi az össz programom: bsf TRISC,3 goto$)
A
sorral csak azt éred el, hogy az RC3 bemenet lesz, vagy csak félreírtad?
Hopsz, az igazából "bsf LATC,3". De így sem világít. :no:
Power on Reset után minden port bemenet lesz: lásd adatlap: Table 4-4! Igy aztán a te kétsoros programod, nem sok mindent csinál...
Ui: A portot kimenetre kell állítani, mert a LATC-re sem fog semmi láthatót csinálni.
Persze, kimenetre állítottam őket! Mutatom:
Nem látom, hogy az oszcillátort mire állítottad.
Idézet: „Adtam neki külön tápot, így már tudom programozni.” Ez azért lehet, mert a gyári PK2 gyengébb, mint a klón, nem tud akkora áramot kikapcsolni. Próbáld meg esetleg a PK2 programmal is, mert lehet, hogy az MPLAB mást is kavar. MPi-c kérdésére van válaszod?
Csak én nem látom az oszcillátorbeállítást? A kommentekben írod, hogy belső oszcillátorról akarod működésre bírni, de utána semmilyen erre vonatkozó beállítás nincs. (pl.: OSCCON regiszter, konfigurációs bit)
ui.: Ha jól vettem ki az adatlapból defaulton "External RC Oscillator, port function on RA6" -t állít be. |
Bejelentkezés
Hirdetés |