Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   774 / 1320
(#) Attila86 válasza potyo hozzászólására (») Júl 14, 2010 /
 
Még nem.
(#) potyo válasza Attila86 hozzászólására (») Júl 14, 2010 / 1
 
Amikor magas prioritású megszakítás jelenik meg, akkor a hardver automatikusan menti a W, STATUS és BSR regiszterek tartalmát, a RETFIE FAST hatására pedig ezeket visszaállítja a rutin végén. Ha viszont csak RETFIE-t írsz, akkor a W, STATUS és BSR tartalma az lesz a főprogramba visszatéréskor, amin a megszakítási rutin végén hagytad, tehát a főprogram számára el lesznek rontva, mert nem az lesz bennük, mint ami a megszakítás bebillenése előtt volt. Ha csak RETFIE-t használsz, akkor neked kell gondoskodnod ezen regiszterek mentéséről a megszakítási rutin elején és a visszaállításukról a RETFIE előtt.
(#) Attila86 válasza potyo hozzászólására (») Júl 14, 2010 /
 
Ezt nem is tudtam! Eddig ezt szoftveresen csináltam...
(#) potyo válasza Attila86 hozzászólására (») Júl 14, 2010 /
 
De csak magas prioritásnál működik a dolog, arra figyelj! Alacsony prioritásnál kézi mentés, visszaállítás és RETFIE.
(#) vikipapa hozzászólása Júl 14, 2010 /
 
Helló minden digitális-áramkörökben jártas fórumtársnak. Én, mint analóg ember, be szeretnék égetni egyetlen egy PIC-et. Erről a volna szó. Esetleg egy egyszerűbb égetővel próbálkozzak vagy inkább próbáljak valakit megkérni arra hogy beégesse? (kifizetném) De "nehezítő tényezőként" majd még később szeretnék foglalkozni PIC-ekkel. Valakinek valamilyen ötlete? Előre is köszönöm.
(#) potyo válasza vikipapa hozzászólására (») Júl 14, 2010 /
 
Ha később akarsz kontrollerekkel foglalkozni, de egyelőre csak egy chipet akarsz beégetni, akkor talán ez lenne a legjobb választás: Link Ez később jó lesz majd égetni a gyakoribb chipeket, vagy ha komolyabban akarsz foglalkozni vele, akkor akár egy Pickit2 építésénél vagy javításánál is jól fog jönni. De ha mégsem akarsz pic-el foglalkozni, akkor is egy elég egyszerű égető, filléres alkatrészekből. Persze ha van a közelben valaki, aki beégeti, akkor az jó, de kb. ugyanannyiba kerül egy ilyet összerakni, mint az égetni való chipet oda-vissza postázni...
(#) vikipapa válasza potyo hozzászólására (») Júl 14, 2010 /
 
Helló. Köszönöm szépen. Tényleg nem annyira vészes, és úgy látom hogy tényleg sok procit támogat. Hát egy "személyes" ismerősöm sem foglalkozik PIC-el, úgyhogy megépítem az égetőt. Majd ha eljutok a tényleges megvalósításhoz, akkor még zavarok a szerencsétlenkedéseimmel. Még egyszer köszönöm a segítséget.
(#) Hp41C válasza Attila86 hozzászólására (») Júl 15, 2010 /
 
Szia!

Pedig az előző projectednél volt róla szó: Ha jól emlékszem azzal kapcsolatban, hogy nem kell előtte az INTCON GIE (GIEH) vagy PEIE (GIEL) bitjeit beállítani...
(#) Hp41C válasza cape-t hozzászólására (») Júl 15, 2010 /
 
Szia!

- Az LCD memóriájába akarakterek ASCII kódjait kell beírni. A számok esetében az ASCII kód a számjegy bináris kódja + 0x30. Nem kell külön kiírató rutin minden számjegyhez.
- A számolás mehet BCD -ben is, ekkor egy vagy két decimális számjegy lehet egy byte-on eltárolva. A swapf utasítás a két 4 bites számjegyet cseréli fel.
- A bináris számolás 16 bitre a legegyszerűbb, de ekkor egy Bináris - BCD átalakító rutin kell még.

Már többször ajánlottam ezt a kincses bányát.....
(#) cape-t válasza Hp41C hozzászólására (») Júl 15, 2010 /
 
Szia Hp41c!

Közben véletlenül sikeresen töröltem a hsz-emet.
Agyaltam még egy kicsit és egész jól le tudtam egyszerűsíteni a vizsgálatot. Viszont a link amit ajánlottál, igen hasznos lesz a későbbiekben!
Köszönöm!
(#) cape-t hozzászólása Júl 15, 2010 /
 
Sziasztok!

Kis programom firkálása során az alábbi üzenetet dobta az MPLAB:

Message[306] E:\SAJAT\PIC_ALAPOK\PROJECT\64X128JATEK.ASM 3189 : Crossing page boundary -- ensure page bits are set.

A program lefordul, beégetve és visszaolvasva OK a tartalom, mése fut a progi.
Milyen biteket és hol kell beállítani?!
kb. 1,5 hónapja foglalkozok PIC-el és eddig ezzel az üzenettel nem találkoztam.

PIC16F877-et használok.

Kérlek segítsetek egy lelkes amatőrnek!
(#) El_Pinyo válasza cape-t hozzászólására (») Júl 15, 2010 /
 
Szia!
Ha belekukkantasz az MPASM assembler doksijába és kikeresed a 306- os üzenetet (hibák szekciónál keresd), akkor láthatod, hogy ez az üzenet azért született, mert a programodban van olyan részlet, amely nem a nullás lapon van a programmemóriában. Ebben az esetben a programmemóriát lapozni kell, pl. a pagesel makró segítségével. Az assembler doksija tartalmazza ennek használatát, mintapéldákkal illusztrálva. Ebben a topikban is bizonyosan volt már róla szó.
(#) Hp41C válasza cape-t hozzászólására (») Júl 15, 2010 /
 
Szia!

Ez nem hiba, hanem tulajdonság.

- A 16F családba tartozó kontrollerek program memóriája 2K szavas lapokra van felosztva. Ha egy lapról a másikra szeretnél ugrani, vagy egy másik lapon levő szubrutint kell hívni, akkor nem elég a goto ill. a call utasíás. Ezek az utasítások a cím felső két bitjét a PCLATH regiszterből veszik. Tehát a másik lapra történő hivatkozás előtt a PCLATH regiszter 4. és 3. bitjeit be kell állítani.
- Az eljárás hívás utáni visszatérésnél a return vagy retlw utasítás az egész címet a stack -ből kiszedi, de a következő ugrás vagy call előtt a PCLATH -t újra be kell állítani.
- A megszakítási rutinban a PCLATH értékét is menteni és visszaállítani kell, ahogy azt a W és a STATUS regiszterekkel csináljuk. Azonban a megszakítási rutin első ugrása elött a PCLATH -t a 0 lapnak megfelelően kell beállítani, hogy a kiszolgáló rutin ugrásai is jó helyre történjenek.
(#) cape-t válasza El_Pinyo hozzászólására (») Júl 15, 2010 /
 
Megnéztem, átírtam.
Most már jó!

Köszönöm!
(#) mate_x hozzászólása Júl 16, 2010 /
 
Üdv!

Az AN589-es programozómmal lehet rájöttem mi a probléma.
Az előfordulhat, hogy a párhuzamos portom kevés feszültséget ad ki magából? Ugyanis, amikor a hardver tesztelésénél mindent bepipálok, akkor megvan az mclr- en a 13,5 V, megvan a +5V tápfeszültség, az órajel lábon pedig csak 3,6 V és az adatlábon pedig még ennél is kevesebb 2,6 V jelenik meg. Lehetséges, hogy ez a probléma? Ha ez a gond, akkor úgy meg szabad oldani, hogy az rb7 és rb6 lábra egy tranzisztoron keresztül jutnak el a jelek?
A választ előre is köszönöm.

Üdv.: mate_x
(#) Hp41C válasza mate_x hozzászólására (») Júl 16, 2010 /
 
Szia!

A kapcsolásban a D2, D0 és a data (PGD) vonal között egy 74LS244 van, ami az 1.4V -nál magasabb feszültséget magas logikai szintnek tekint. Ugyanez a helyzet a D5, D1 és a CLOCK (PGC) vonal között is. Ha az U2 valóban 74LS244 vagy 74HCT244 akkor működnie kellene. Ha erre a helyre 74HC244, 74C244 került, akkor a magas logikai szint kb a fél tápfeszültség, akkor előfordulhat, hogy a port nem ad ki elég magas szintet. A tranzisztoros megoldás túl lassú lesz.
Az U2 -nél van 100nF kerámia kondenzátor a táp és a fölt lába között?

Ez a leírás 1997-ben készült, a maiaknál lényegesen lassabb gépek korszakában. Akkori operációs rendszerek nem kerestek nyomtatót a párhuzamos porton. Érdemes lenne egy max. Pentium I @ 75Mhz gépen DOS alatt kipóbálni....
(#) MaTe193 hozzászólása Júl 16, 2010 /
 
Üdv!

Van egy ilyen programozóm.Ez 18 lábú PIC-hez van tervezve.Én használni szeretném PIC12F629-hez.Ezt egy adapterrel szeretném megoldani,mivel ugye a 12F629-nél:VDD:1.láb;VPP(MCLR):4.láb;VSS:8.láb;Data(RB7):7.láb;Clock(RB6):6.Láb. Ha valamit elrontottam,kérlek javítsatok ki!

Máté.
(#) Hp41C válasza MaTe193 hozzászólására (») Júl 16, 2010 /
 
Szia!

A programozási leírás első lapján is ez a bekötés szerepel. Az adapternél gondolj arra is, hogy használható lesz még más 8, 14, és 20 lábú kontrollerekhez is. Érdemes ezért egy 20 lábú foglalatot felhasználni. A rövidebb kontrollereket úgy kell beletenni, hogy az 1. lábuk a forlalat 1. lábához kerüljön....
(#) vilmosd válasza MaTe193 hozzászólására (») Júl 16, 2010 /
 
Hali
Itt egy ilyen bovites. En PK2-hoz hasznalom, de ertelemszeruen mas programozohoz is hozza lehet gyogyitani. Hasznalhato az altalanos DIP tokos PIC-ekhez. 10Fxxx kivetel.
Udv Vili
(#) mate_x válasza Hp41C hozzászólására (») Júl 16, 2010 /
 
Szia!

Köszi a választ.
A 100nF-ád tényleg nem volt benn , most betettem, de ugyanaz van mint az előbb. D0-on van 2,6 V, D2-n van 0,1 V, így RB7-en lesz 2,6 V.
RB6-nál szintén ugyanez a helyzet, csak a feszültségek kis mértékben eltérnek.
Az ic pedig SN74LS244N. Ezek szerint rossz az IC-m?
Vagy hogyan tudnám letesztelni az IC-t, hogy működik-e? (Nem értek annyira ezekhez a buszmeghajtó áramkörökhöz, esetleg egy magyar nyelvű leírás?)
A választ előre is köszönöm.

Üdv.:
mate_x
(#) potyo válasza mate_x hozzászólására (») Júl 16, 2010 /
 
Nekem az a 2,6V az RB7-en nagyon furcsa. Pic nélkül próbálod? Nincs ott valami, ami terheli azt a lábat? Mivan, ha az ACK-t lekötöd? Mert ha a D2 1V alatt van, a D0 pedig 2V felett, akkor az RB7-en kb. 3,5V-nak kellene lennie, mint ahogy az RB6-on is van.
(#) mate_x válasza potyo hozzászólására (») Júl 16, 2010 /
 
Szia!

Pic nélkül próbáltam, ACK nélkül 3,7 V !
(#) potyo válasza mate_x hozzászólására (») Júl 16, 2010 /
 
A 3,7V az már jó, de nem értem, hogy az ACK miért terhel, amikor az bemenet. Tegyél egy-egy 1k felhúzót az RB6 és RB7 lábakra a táp felé és nézd meg úgy is bekötött ACK lábbal.
(#) mate_x válasza potyo hozzászólására (») Júl 16, 2010 /
 
Felhúzó ellenállással és ACK-kal 2,36 V
(#) Collector hozzászólása Júl 16, 2010 /
 
Azt meg tudná mondani valaki, hogy a timer1 modulhoz be lehet-e kötni kvarcon kívül máshogy léptető órajelet? Gondolok itt egy sima multivibrátorra, mivel 10kHz kéne, olyan kvarcot pedig nem találtam.
(#) potyo válasza Collector hozzászólására (») Júl 16, 2010 /
 
Be. A T1CKI lábra vezeted az órajeledet, a T1CKO lábat meg szabadon hagyod. De olyat is lehet csinálni, hogy a 32768Hz-es kvarcot használod, és kezdőértékkel töltöd fel a Timer1-et, és mondjuk minden negyedik megszakításnál csinálsz valamit. Ez akkor ugyanaz, mintha 10kHz-el hajtanád. Meg ha külső multivibrátor belefér, akkor már futhat a pic főoszcillátora folyamatosan, és akkor onnan is ki lehet kezdőértékkel hajtani a Timer1-et, hogy neked megfelelő idő után csorduljon túl. Szóval nekem kicsit furcsa amit akarsz csinálni...
(#) Collector válasza potyo hozzászólására (») Júl 16, 2010 /
 
Az a lényeg, hogy a timer1 100us-onként számoljon egyet. A kezdőértékes megoldás azért nem kedvező itt, mert jóval többet kéne programozni, mivel egy A/D értékkel lenne összehasonlítva (10 bit) CCP komparátorral, és minden egyes A/D értékhez másmilyen értékkel kéne feltölteni kezdetkor a timer1-et, és az a vége általában, hogy bizonyos értéken felül/tatományban elcsúszik a két érték, és néhány helyen nagyobb lesz a hiba.
Az egész pedig arra kell, hogy egy potival állítható késleltetőt készítsek, aminek az értékét egy LCD-n jelzem ki.
(#) potyo válasza Collector hozzászólására (») Júl 16, 2010 /
 
Mekkora késleltetésről van szó, amit a potméterrel kellene állítani? Ilyen tól-ig értékre gondolok, hogy 100us-1ms között, vagy mondjuk 1s-10s között?
(#) Collector válasza potyo hozzászólására (») Júl 17, 2010 /
 
Egyelőre 100us-100ms. De lehetséges, hogy jól jön, ha van egy lehetőség a tartományok közti váltásra.
(#) potyo válasza Collector hozzászólására (») Júl 17, 2010 /
 
Akkor Timert beállítod 100us-os túlcsordulásra, egyesével növeled egy változó értékét minden megszakításkor, és amikor a változó elérte az ADC eredményét, akkor telt le a potméterrel beállított késleltetés. Tartományok közötti váltásnál meg újraszámolod a Timer kezdőértékét és kész. Nem értem, minek bonyolítani ezt CCP-vel, komparátorral meg multivibrátorral...
Következő: »»   774 / 1320
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