Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   236 / 1210
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Szia !

A megszakítás mindig működik, azaz a megszakítás bekövetkeztekor a 4-es címre ugrik ( 16-os PIC ). Ott elmented a PCLATH értékét, majd átállítod a megszakításnak megfelelően, elvégzed az int feladatait és PCLATH, stb. visszatöltése után visszatérsz! Szervezés kérdése, hogy LEHETŐLEG a megszakításban használt dolgaidat 1 lapra írd!
A másik: a változóid nem a PROGRAM memóriában vannak, hanem az ADAT memóriában (RAM, Harvard architektúra!). Itt a 0x70-es címtől elhelyezett változóidat BÁRMELYIK bankban láthatod ( de ennek nincs köze a PCLATH lapváltásaihoz!)! A memória állapotát meg tudod nézni szimulációban a view menüpont WATCH ablakban, vagy File registers menüpontban ( és így láthatod, hogy mit csináltál!)!
A 18-as sorozatnál a RAM-nál lehet szükség BANK váltásra ( ha több, mint 128 változót akarsz használni egyidőben!)!

Steve
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Használhatod a PAGESEL-t is (A PCLATH-ot a fordító megfelelő értékre "hozza" plussz utasításokkal! A ZIZZ és az IDE más lapokon lennének )!

pl.
IDE:
PAGESEL ZIZZ
CALL ZIZZ
PAGESEL IDE ( és már megint ugrálhatsz ezen a lapon!)

ZIZZ:
RETURN

Így nem "őrülsz meg" a lapok figyelésétől ( igaz, mindig beállítja az összes PCLATH bitet megfelelően ).

A szervezés nagyon lényeges: ne ugrálj ide-oda a lapok között, mert akkor nem győzöl lapot váltani! A visszaugrás CALL-nál mindig jó, mert a verembe a teljes cím bekerül, de akár egy BTFSC is rosszul sül el, ha elfelejtesz lapot váltani!


Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Köszönöm, kipróbálom ezt a PAGESEL -t mert ettől a manuális lapváltástól be lehet dilizni..
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Ami nem tiszta...A PAGESEL használata előtt kell egy címkét elhelyeznem (IDE)? Az rendben van hogy a rutin címkéjére ugrok, de visszafelé?
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Szia!

Nem kellenek plussz cimkék, csak a PAGESEL után kell egy, a megfelelő lapon lévő! A két cimkét csak azért írtam, hogy lásd, mi van akkor ha erre, vagy arra a lapra akarok ugrani!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Rendben, mondjuk hogy ugrok a ZIZZ rutinra ami a PAGE1 en van. Ebben az esetben a rutin cimkéje áll a PAGESEL után. Utána meghívom a rutint CALL ZIZZ..stb De visszafelé a PAGESEL után milyen cimkét adjak? Bármilyen cimke ami egyébként a PAGE0 án van az jó..? (pl nálam "start" a főprogram elején)
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Jó, mert a lapváltó biteket a cimkének megfelelően kell, hogy beállítsa!

Szimulátorban ki tudod próbálni!

Steve
(#) menyus válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Közben próbálgatom, úgy tűnik így működik. De ha az összes rutinomat a page1 re pakolom és a page0 ról hívogatom az rengeteg PAGESEL ide - oda, ez nagyon memória zabáló dolog nem? Mert a PCLATH,4 bitet is állítgatja amihez esetemben nem is kéne hogy hozzá nyúljon. Nincs erre valami memória takarékosabb megoldás..? vagy az egész kódot át kell szervezni...ez elég macerás. Lehet tényleg jobb lenne a 18F ebből a szempontból. Ha jól emlékszem a 16F eknél is kell a RAM nál lapot váltani..A 18F eknél ezek szerint egyáltalán nincs memória lapozás? Mert ez az amitől megkergülök.
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Milyen NASA programot fejlesztesz, hogy 2048 utasítás nem elég Neked a fő rutinjaidhoz ?!
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
A 18F-nél nem kell a programmemória miatt lapozást csinálni!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Hááát....Hogy elkerüljem a lapváltásokat, vannak klónozott rutinjaim, amelyek vannak a page1 en és a page0 án is, csak más cimkével..stb. Ezt már kínomban műveltem mert nem ment a kód, egyáltalán (pedig az F628A nál tökéletesen ment) és azt hittem a lapváltásokkal van a gond. Így "kissé" elszáltam a memóriával... Most már lassan a 4K is kinövöm...
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Na, akkor az lesz az én kedvencem, csak rengeteg panelem van letervezve a 16F ekhez, így dobhatom őket a hátam mögé....De hát "haladni kell a korral, süssön Váncza sütőporral" (Az öregebbek, mint én tán még emlékeznek a 70 es évek reklámjára...már annak aki nem értené... )
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Használható megoldás, amit írsz, de szerintem csak akkor célszerű, ha sebességkritikus a rendszer, egyébként van idő oda-visszaállítani!
Idézet:
„pedig az F628A nál tökéletesen ment”
Ha ott jól ment, akkor itt is mennie kell, mert egy család csak a 628-nak kisebb a memóriája --> ha abba belefértél, akkor a 648-ban mennie kellene annak a résznek! A plussz ugrálásokhoz kellene csak berakni a PAGESEL-t! :yes:

Steve
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Szerintem találsz hellyel-közzel lábkompatibilist, inkább a programok átdolgozása lesz macerásabb!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Hát nem lenne rossz ha láb kompatibilist találnék, szerintem főleg ez a macerásabb mert a paneleket újra tervezni és legyártatni elég sokba kerülne. Eleve SSOP tokozásúakat használok, már nézegettem de én nem találtam a F648A perifériákkal azonos 18F PIC et. Legalábbis olyat ami láb kompatibilis. A programozásuk...hát nem lesz egyszerű átállni az biztos, főleg nekem nem. Letöltöttem már adatlapot van jó pár utasítás ami új a 16F ekhez képest...stb.
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Ok, köszönöm akkor "pofozom tovább..." Ez a PAGESEL nem volt tiszta, megpróbálom kissé átszervezni a dolgokat a kódban. Biztos hogy én rontottam el megint valamit, amit egyelőre nem veszek észre.

Köszi
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Ezt találtam: PIC18F1220 / PIC18F1320 gyorsba, nézd meg, hátha kivitelezhető ( némi kavarással !)!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Köszi, meglesem..
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Sajnos ez nem jó, a USART RX / TX lábak nem stimmelnek. Ezzel meg nem nagyon tudok mit kezdeni. Az hogy a PORTA / PORTB lábak nem stimmelnek amik pl ledeket kapcsolgatnak..stb azt ugye át lehet irkálni de a USART lábait csak átkötözgetni lehetne és ez elég gány lenne...Valamint nincs benne a 2 db analóg komparátor sem amit egyébként használok.
Azért köszi.

Kérdés..ha a PAGESEL el átlépek a page1 re, és ezek után még van pl 10 db rutin ami szintén a page1 en van, közben viszont van port át állítás, feltétel kezelés...stb. Akkor is kell ide oda ugrálnom a lapok között minden rutinnál? Vagy maradhatok végig a page1 en egészen addig amíg olyan szakaszhoz nem érek ami már megint page0 án van?

Valamint amikor visszatérek a page0 ra (esetemben PAGESEL start) akkor a start cimkére is ugrik, vagy csak a cimkéhez tartozó lapra lép vissza? Mert ha a cimkére ugrik az nagyon nem jó...
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Amíg azon a lapon vagy, addig nem kell váltogatni ( ugyanúgy, mint a RAM bankok: ha a TRISB-t tudod írni, akkor a TRISA-t is! ): ezzel kapcsolatban csak arra vigyázz, hogy egy BTFSS is ugrással járhat és ott is számít a lap!
A PAGESEL csak a PCLATH-ot állítja, azt már használtad, annak az állítása nem jelenti azt, hogy a következő ugrás a START címkére történne ( a fordító megnézi, hogy a START címke melyik lapon van és a megfelelő lap bitjeit betölti a PCLATH-hoz, amit a PIC a CALL, ill. GOTO utasításoknál használ!

A szimulátor nagyon hasznos jószág ám!

A 18-asnál akkor nem lesz szerencséd, mert a MAPS ezt a 4 féle 18-ast dobta ki 16 IO-ra!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
A szimulátort se nagyon használtam még, inkább áttöltöm a kódot a demo panelba és meglesem működik e. Igaz, így nem látom csak a végeredményt. Működik, nem működik (általában utóbbi...) Hogy közben a program mit művel step by step azt nem, kipróbálom....
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Hidd el, hogy jó és nagyon hasznos !

Így meg tudod nézni, hogy mit csinál az egyes regiszterekkel, hova ugrik és nem találgatsz, hogy mi lehet a gond. Ha fogod használni, akkor minőségi előrelépésed lesz a programozásban és a hibakeresésből megspórolod azt az időt, ami az új PIC-re való átállás miatt lesz !

Írtad, hogy sok új utasítása van a 18-asnak: ez igaz, de a régiek nagy része használható és van egy csomó új, jól használható! A megszakításra majd figyelj, mert bár jobb, de az áttérésnél figyelni kell rá!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Ok, köszönöm. Valóban jó ez a szimulátor, bár a regisztereket nem néztem még, viszont tudom léptetni sorról sorra. Már látom is hogy valamiért elkószál a program az egyik btfsc után...

Azt hiszem ezt a kódot még kiszenvedem a 16F el és ráfekszem a 18F ekre...Aztán majd megint zaklatlak a láma kérdéseimmel...
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
OK, örülök, hogy tetszik!

A view menüpontból tedd ki a Watch-ot és abba húzd bele a megnézni kívánt regisztereket ( drag and drop módszer!) ! Jobb egérgombbal be tudod állítani, hogy milyen formátumban szeretnéd nézegetni!

Steve
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Köszi próbálgatom...
(#) menyus válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Eljutottam oda hogy most már nem kószál el a programom, beesik egy pollingba ahol várakozik egy USART vételi megszakításra, de nem esik be a megszakításba, pedig a jönnek az adatok a USART on. (bray terminalon néztem) Engedélyezve vannak a megszakítás bitek, a folyamatos vétel, a soros port konfigurálva van..stb (ez is működött már...) Mi okozhatja hogy még sincs megszakítás..? Ezt pl nem tudom leszimulálni szimulátorban...
(#) menyus válasza kissi hozzászólására (») Ápr 10, 2012 /
 
Van olyan lehetőség a szimulátorban hogy egy általam kijelölt ponttól tudjam léptetni a programot? Mert így nem tudom azt a részt tesztelni ami a megszakítás lefutása után jönne, mivel a megszakítást nem tudom szimulátorból generálni...
(#) Hp41C válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Van. Keresd meg a kérdéses programsort, amitől indulni szeretnél, jobb klik / Set PC at Cursor. A PC beáll a kérdéses sorra. Vigyázz a PCLATH nem lesz beállítva az utasítás lapjára.
(#) menyus válasza Hp41C hozzászólására (») Ápr 10, 2012 /
 
Köszi, a PCLATH állapotát nem tudom megadni manuálisan a szimuláció előtt?
(#) kormika hozzászólása Ápr 10, 2012 /
 
Sziasztok! Előállt egy olyan helyzet, hogy szükségem lenne egy gép karbantartása miatt egy üzemóraszámlálóra. Meg is építettem már a körülményekhez illeszkedő hardvert, a gép vezérlésében van egy 1Hz-es négyszögjel, azt számolgatja a PIC. Az elvárás a következő: a gép bekapcsolt idejét méri, és ha elérte a 100 órát, akkor bekapcsol egy LED-et. A szoftver számolásos, meg LED-bekapcsolásos részével nincs gondom, viszont írni és olvasni kellene a belső EEPROM-ját a PIC-nek, mivel ha a gép ki van kapcsolva, akkor megszűnik a tápfesz, de a következő bekapcsoláskor onnan kellene folytatni a számlálást, ahol a tápmegyszűnéskor abbahagyta. Az EEPROM írás-olvasás nagyon homályos nekem, olvasgattam a microchip oldalán az erre vonatkozó application note-ot, de abból sem lettem okosabb. Ha valaki el tudná nekem magyarázni érthetően, hogy hogyan tudok egy értéket beírni az EEPROM-ba, utánna meg kiolvasni belőle, azt megköszönném...
Következő: »»   236 / 1210
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