Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   834 / 1319
(#) helektro hozzászólása Nov 12, 2010 /
 
Egy kis segítségre lenne szükségem aPIC-es szakiktól.
Alany: 18F23K22; kérdésese modul PWM.
Ebben az IC-ben van 3ECCP (CCP1,CCP2,CCP3) és 2CCP (CCP4,CCP5) modul.
A sima CCP modullal van bajom. Beállítottam, hogy a TMR2-vel működjön, de a kimenten nem jön ki jel. A TMR2 modul szépen működik, amikor kell resetelődik, megszakítás is jön. Ha a CCP kiemenetet BSF parancsal magasba állítom, akkor a rákötött LED világít, így hw-el, és az inicializálással nem lehet gond (bár vmi nem kóser). Már eltököltem vele 3 órát és nem tudok rájönni, miért nem jön ki a lábon a PWM jel. Egyéb IC-nél (18F4220, 4520) konfiguráltam már ilyet, de ez megfogott. ASM-ben a következő dolgokat állítom be (ennél több, de a modullal kapcsolatosan ezeket):
;Clk
MOVLW B'01100111' ; Clock beállítása (8MHz)
MOVWF OSCCON

;Ports
MOVLB 0xF
CLRF PORTA
MOVLW B'10011111'
MOVWF ANSELA
MOVLW B'01100011' ; PORTA konfig, A0,A1,A5,A6 input, A2,A3,A4,A7 output
MOVWF TRISA

CLRF PORTB
MOVLW B'11000001'
MOVWF ANSELB
MOVLW B'00111110' ; PORTB konfig, B1..B4 input, B0,B6,B7 output
MOVWF TRISB

;Timer
MOVLW 0x63 ; PWM periódus, ~20kHz
MOVWF PR2
MOVLW B'00000100' ; TMR2, on, prescaler 1:1; postscaler 1:1
MOVWF T2CON

;PWM, CCP
MOVLW B'00001100'
MOVWF CCP4CON ; CCP4 enable, single PWM mode
MOVLW B'00001100'
MOVWF CCP5CON ; CCP5 enable, single PWM mode

MOVLW B'00000000'
MOVWF CCPTMRS1 ; TMR2 hozzárendelése a CCP(4,5) modulokhoz

MOVLW 0x60
MOVWF CCPR4L
MOVLW 0x60
MOVWF CCPR5L

Én már nem látom a fától az erdőt. Az adatlapot többször átnéztem, de valamit biztos, hogy nem vettem észre. Ha vkinek van vmi használható ötlete, azt szvesen veszem.
(#) icserny válasza helektro hozzászólására (») Nov 12, 2010 /
 
Őszintén szólva nem értem, hogy miért így állítottad az ANSELx regisztereket. A CCP4 nem RB0-án jön ki? S miért erőlködsz azon, hogy '1'-et írj ANSELB nem implementált 6. és 7. bitjébe?

Valószínűleg más probléma is lehet még, de nem találtam meg...
(#) cassis válasza icserny hozzászólására (») Nov 12, 2010 /
 
Watt dorgálása után már nem is merek kérdezni.... Azhiszem szellemi képességeim határán járok.... Egyszerűen nem tudom a p24 minta kódomat hiba nélkül lefordítani. (Eddig nem használtam sohasem projectet még a 18F hez sem, viszont p24 esetében a korábban bevált Quickjbuild ról lebeszéltek. Ráadásul .asm kiterjesztés helyett .s típusú filéket kell létrehozni, vagy azt hoz létre az MPLAB amiről még ezidáig nem is hallottam)

Icserny részletesen leírta a project létrehozásának mikéntjét lépésről lépésre, amit köszönök, de ténylegesen nem ez jelentette az igazi nehézséget korábban sem. A project létrehozása után az Add new file to project -et indítom, /nevet adok stb./ majd a megjelenő ablakba bírom a példa kódot, mentek, de nem fordul le. Próbáltam a View / projectbe a forrás filet megnézni, de ha berakom akkor sem fordul.
A gondom az, hogy az általatok javasolt anyagokban sem olvastam konkrétumokat arról arról, hogy a project létrehozása után miként is indítsuk a fordítót és még mit kell beállítani.
Kell -e linker file stb. Most aztán csak raktatok múlik elmagyarázzátok -e, mert ezzel és a dokumentumokkal felvértezve sem bírtam megoldani ezt a problémát.
(#) watt válasza cassis hozzászólására (») Nov 12, 2010 /
 
Készíts egy képet a project ablakról, és csatold ide nekünk, hogy lássuk, van-e project fájlod, amit le lehet fordítani! (Project file hozzáadása az egér jobb gombjával történik a source files könyvtárra kattintás után feljövő gyorsmenüben(Add Files).)
(#) icserny válasza cassis hozzászólására (») Nov 12, 2010 /
 
Ebben a hozzászólásban már megírtam, hogy be kell állítani a hozzáférési útvonalakat!

Tartósan a Projects/Set Language Toolsuites menüben (ez minden új projektre is érvényesülő beállítás). Vagy csak az adott projektre vonatkozóan a
Project/Build Options/Project/Directories menüpontban/lapon.

Hogy nálad mi, hová van telepítve azt rajtad kívül senki sem tudja. Nálam ezek vannak beállítva:
Assembler Include Search Path = C:\Program Files\Microchip\C30\support\PIC24H\inc

Library Search Path: C:\Program Files\Microchip\C30\support\PIC24H\gld
(#) helektro válasza icserny hozzászólására (») Nov 12, 2010 /
 
De, az RB0-n jön ki a CCP4. Pontosabban nem jön ki.
Az ANSELT-t a B portra a 139 oldalon lévő10-5 táblázat alapján állítom. Egyáltalán nem erőlködés a 6. és 7. bitbe egyet írni , és a kérdés szempontjából irreveláns is. De igazad van, majd átírom 0-ra.
(#) icserny válasza helektro hozzászólására (») Nov 12, 2010 /
 
Idézet:
„De, az RB0-n jön ki a CCP4.”
Akkor ANSELB 0. bitjét miért nem 0-ba állítod?
(#) messer hozzászólása Nov 12, 2010 /
 
Sziasztok! A microchip AN906-os minta példájában van egy cos tábla amit a pwm duty Cycle beállításhoz használ végig követtem a forrásban (megtalálható a microchip oldalán) ki is veszi az értékeket a táblázatból, de valamiért megkutyulja nem bírok rájönni, hogy miért. Arra már rájöttem hogy a pwm-nél a duty beállító regiszter 10bites de valamiért soha nem a táblázatban megadott értéket használja. Meg tudná ezt nézni nekem valaki?[quote]call DutyCycleLookup ; look up duty cycle value and move
movwf CounterL ; into CCP1CON and CCPR1L
swapf CounterL,w
andlw 0x30
iorlw 0x8D ; keep integrity of CCP1CON, half bridge mode
movwf CCP1CON ; P1A active high, P1B active low
rrf CounterL,w
movwf CounterH
rrf CounterH,w
andlw 0x30
movwf CCPR1L ; are we at the beginning of the duty cycle lookup table?
(#) helektro válasza icserny hozzászólására (») Nov 12, 2010 /
 
Korábban 0 volt, de az előzőleg belinkelt táblázat alapján írtam át 1-re. Amúgy nekem is úgy logikus, hogy 0 legyen, de a doksi nem ezt írja.
Most megint átírtam 0-ra, de továbbra sem jó.
Már nem látom, hogy mit cseszek el. És sem a CCP4, sem a CCP5 nem megy.
(#) helektro válasza helektro hozzászólására (») Nov 12, 2010 /
 
Na nem hiszem el. Megvan a probléma.
A konfigurciós regiszterek beállítása elé ez az utasítás kellett:
MOVLB 0XF

Még életben nem használtam ezt az utasítást.
Azt is egyelőre sejtem, hogy mire való, ennek utána kell néznem.
(#) icserny válasza helektro hozzászólására (») Nov 12, 2010 /
 
Bankváltó utasítás (Move Literal to BSR). A mikrovezérlődnek túl sok perifériája van, ezért a Speciális Funkciójú Regiszterek közül jónéhány kiszorult az Access Bank-ból (abba csak a 0xF60-0xFFF címtartomány fér bele). Többek között Timer4, Timer5, Timer6, CCP3, CCP4, CCP5 lóg ki a sorból.
(#) icserny válasza messer hozzászólására (») Nov 12, 2010 /
 
Idézet:
„Arra már rájöttem hogy a pwm-nél a duty beállító regiszter 10bites”
Arra is rájöhettél volna, hogy az MCU pedig csupán 8 bites. Két bitet tehát máshová kell pakolni és össze kell kombinálni az adott regiszter többi bitjével. Ebből adódik a beidézett programrészletben látható bitzsonglőrködés.
(#) messer válasza icserny hozzászólására (») Nov 12, 2010 /
 
Ne haragudj mielőtt kioktatsz talán vedd a fáradságot és töltsd le az asm-et majd nézd meg te is hogy a kizsonglőrködött 10bites szám nem egyezik a táblázatból kivett számmal. Ez lehet hogy így van jól csak én nem jövök rá hogy miért. Azt is elárulhatnád, hogy miért kell ilyen lekezelően kioktatni "arra is rájöhettél volna" .....
(#) messer válasza icserny hozzászólására (») Nov 12, 2010 /
 
Pontosan az zavar, hogy ami a leg elején a "CounterL"-ben van az nem egyezik meg a végén a CCPR1L és a CCP1CON (5:4) ban létrejött 10bites számmal. Elmélketileg pedig meg kéne. De az is könnyen lehet hogy valamit nem jól értelmezek az egészben. Ehez kérnék segítséget.
(#) icserny válasza messer hozzászólására (») Nov 12, 2010 / 1
 
A táblázatból 8 bites adatot vesz elő a program, ennek alsó két bitjét feldolgozza, a maradékot meg jobbra forgatja. Hogy miért maszkolja ki az alsóbb biteket az andlw 0x30 utasítással, az ebből a programrészletből nem derül ki.
(#) messer válasza icserny hozzászólására (») Nov 12, 2010 /
 
Privátban átküldöm neked az asm-et, ha megtennéd, hogy megnézed mert nekem is ez a gondom hogy nem jövök rá a dolog lényegére.Köszönöm , hogy foglalkozol a kérdéssel.
(#) cassis válasza icserny hozzászólására (») Nov 12, 2010 /
 
Ha jól látom nekem nincs beállítva hozzáférési útvonal sehol az adott projektre vonatkozóan! (lásd melléklet)
Itt kellene lennie ezen a directories lapon? Ha igen, minden projekt létrehozása után újra be kell állítani?
Mellesleg van eltérés a te és az én feltételezett jó útvonalam között. Nevezetesen pl. a tiéd
Idézet:
„C:\Program Files\Microchip\C30\support\PIC24H\inc”
az egyém
Idézet:
„C:\Program Files\Microchip\MPLAB ASM30 Suite\Support\inc”
ben van, mintha az első a C nyelvű programozáshoz kellene.
A projekt wizard lefut rendesen, a select language toolsuite állapotáról képet is küldök.
Aztán Add New file to project ben megadom a nevet, majd írható lesz a kód a megjelenő ablakban. Ezután file/save, de a filének nem látom, hogy az MPLAB adna
kiterjesztését. Aztán, ha megnézem a view/project ben, hogy miként is állunk, csodálkozva tapasztalom, hogy az other files közé sorolódott a proba_ file. (lásd kép) . Ha kiveszem onnan filet, és a source files ek közé be akarnám rakni a proba_ filet nem tudom, mert nincs kiterjesztése, így nem is tudom kiválasztani. Ha meg adok neki, akkor kiválasztható, aztán ugyan a project/Built All elkezdi fordítani, de még hibára sem méltat, egyszerűen kiakad.
Ilyen bonyorult lenne projectet létrehozni és fordítani?
(#) icserny válasza cassis hozzászólására (») Nov 13, 2010 /
 
Idézet:
„Ha igen, minden projekt létrehozása után újra be kell állítani?”
Tegnap már megírtam: A Project/Set Language Toolsuites menüpontban beállított útvonalak az összes új projektre érvényesek. Amit a Project/Build options/Project menüben a Directories lapon állítasz be, az pedig csak az aktuális projektre vonatkozik.

Idézet:
„Mellesleg van eltérés a te és az én feltételezett jó útvonalam között.”
Természetesen. Ha megfigyeled, a Microchip C fordítói telepítenek egy újabb Assembly fejlesztői környezetet, s ha valaki vegyesen használ a projektben assembly és C forráskódot, akkor ezt célszerű használni. Ha csak assembly kódot írsz, akkor tökéletesen jó a másik (MPLAB ASM30) környezet is.

Idézet:
„Aztán Add New file to project ben megadom a nevet, majd írható lesz a kód a megjelenő ablakban. Ezután file/save, de a filének nem látom, hogy az MPLAB adna kiterjesztését.”
A nevet és a kierjesztést neked kell megadnod. Az MPLAB honnan is tudná?
Idézet:
„nem tudom, mert nincs kiterjesztése”
Már többször megtárgyaltuk: .s kiterjesztés kell ahhoz, hogy le lehessen fordítani.
(#) szilva válasza Hp41C hozzászólására (») Nov 13, 2010 /
 
Többször használtam már F2550 helyett LF2550-et a klónban, semmi gond nincs vele.
(#) icserny válasza messer hozzászólására (») Nov 13, 2010 /
 
Fölösleges volt átküldeni, hiszen nekem is megvan (ha még emlékszel: én ajánlottam a figyelmedbe). Viszont jelenleg sem időm, sem kedvem nincs tengerikígyóméretű PIC16F assembly-t böngészni, s találgatni, hogy mit miért csinál, s vajon jól csinálja-e egyáltalán. Ha téged ennyire zavar a dolog, írj az andlw 0x30 helyett andlw 0x3F-et!

Én értelmesebb dolognak tartanám a lényeg megértését a leírás és az adatlapok alapján, és ebből kiindulva egy saját program fejlesztését (eredetileg valami dspic-et emlegettél), amiben tudod, hogy mit miért csinálsz.
(#) watt válasza cassis hozzászólására (») Nov 13, 2010 /
 
Adj neki kiterjesztést(nevezd át)... Ez az egész kb. fél órás történet kéne legyen, ha valaki elsőre áll neki és van némi számítástechnikai ismerete. Ezek után azt gondolom, hogy te ezzel sem rendelkezel. Ez itt nem az "óvoda", itt minimum "középiskola" van, néha "egyetem". Nem sértés akar lenni, csak a kérdéseid színvonalát próbáltam érzékeltetni, hogy mennyire nem idevaló színtűek, amit nem itt kéne bepótolni!
Van PIC kezdőknek topic, van egy csomó számítástechnikai irodalom magyarul is(pl. fájlkezelés, elérési útvonalak, MPLAB toolsheet stb.). Itt csak égeted magad, már bocsáss meg, de ez a helyzet, elnézést kérek!
(#) messer válasza icserny hozzászólására (») Nov 13, 2010 /
 
Így is van tényleg te tanácsodra teszem, próbálom a lényeget megérteni , csak a megértés közben elakadtam, hogy mi is történik a példa programban. Én nagyra értékelem, hogy segítesz de inkább akkor ne tanácsolj legközelebb semmit, ha a következő mondandódban meg pont az előző tanácsod ellen beszélsz. Ez egy kicsit felületes nem? Ezt nehogy sértésnek vagy bármi másnak vedd hiszen le a kalappal, hogy segítesz szabadidődben ingyen másoknak, ez dicséretes!!!
(#) watt válasza messer hozzászólására (») Nov 13, 2010 /
 
Ne tanácsoljon semmit? Csak ő állt veled szóba, és tartott ki, szerintem eddig... Kaptál egy jó tippet, nem érted és még ő a hibás? Derítse fel az egész programot úgy, hogy te megértsd? Igen fura ez a mai nap! Szerintem írd meg az egészet az elejéről, akkor érteni fogod.
(#) messer válasza watt hozzászólására (») Nov 13, 2010 /
 
Ha figyelmesen elolvasod amit írtam benne van, hogy nem bántani akartam , csak annyit jegyeztem meg, hogy egyszer azt tanácsolta, hogy nézzem meg a példa programot, mikor elakadtam akkor pedig azt hogy ne foglalkozzak vele. Nem vártam el, hogy az egészet nézze át csak az a pwm-es rész lett volna a lényeg. Azt sem mondtam, hogy ne tanácsoljon semmit csak annyit mertem megjegyezni alázattal, hogy jó-e az a tanács amit megfogadunk majd elakadunk mikor a tanácsolót megkérdezzük azt mondja ne foglalkozzunk vele...Akkor lehet hogy ugyan ott vagyok mint a tanács előtt. Mi a bajod a mai nappal.? Még egyszer hangsúlyozom, hogy nem szeretném megsérteni sőt felnézek Icserny-re és rád is mert mikor jövök kérdezek ti bármikor segítetek és nagyon jó a munkásságotok mert sok embernek rengeteg időt spóroltok meg.
(#) watt válasza messer hozzászólására (») Nov 13, 2010 /
 
Idézet:
„de inkább akkor ne tanácsolj legközelebb semmit,”

Idézet:
„akkor pedig azt hogy ne foglalkozzak vele.”
Ilyet nem olvastam...
Az a baj, hogy káoszt okoztok, és mi sokszor nem tudjuk kibogozni. Igyekszünk, de ha azt látjuk, hogy nem haladtok, belefáradunk, mert egy idő után nincs ötlet, pontosabban túl sokat kéne mondani(könyvnyit!). Az pedig nem várható el, hogy komplett projectet áttekintsünk, megértsünk, megoldjunk, helyettetek. Egy programrész megértéséhez az egész programot meg kell érteni, ezért olyan kérés, hogy csak "azt a részt" nézze meg valaki, átgondolatlan, illetve azt jelzi, hogy a kérdező nincs tisztában az összefüggésekkel. Egy ilyen következtetés után az ember nem tud új ötlettel előállni, ami segít, inkább "menekül".
(#) icserny válasza messer hozzászólására (») Nov 13, 2010 /
 
Én azt mondtam, hogy a leírásból (gyk.: a PDF-ből) az ELVÉT próbáld megérteni. A programlista elején ott áll nagy betűvel, hogy semmiféle felelősséget nem vállalnak azért, hogy a közzétett kód működik, vagy bármire használható. De ha történetesen működik, akkor sem abból kell megérteni.
(#) messer válasza watt hozzászólására (») Nov 13, 2010 /
 
Ezt még fokozhatnánk, de nem fogom mert tisztában vagyok vele, hogy igazatok van. És be kell látnom, hogy nem kellett volna így vissza támadnom Icserny-re hiszen ő csak segíteni próbált. Nekem meg elfogyott a türelmem. Amúgy szerintem meg van a titok nyitja azért variálja a pwm-et mert ezzel szabályozza a motor áramát a programban a programozó egyszerűen csak betett egy cos táblát az áram és egyéb okok miatt pedig az értékeket módosítja.Icserny ne haragudj hogyha megbántottalak nem ez volt a szándékom. Amúgy sokat segített ez az adatlap mert a bipoláris léptetőmotor vezérlését ebből lehetett jól megérteni. Még az is vigasztal, hogy nem én vagyok ma reggel legjobban lehurrogva Szegény cassis jól megkapta
Idézet:
„dj neki kiterjesztést(nevezd át)... Ez az egész kb. fél órás történet kéne legyen, ha valaki elsőre áll neki és van némi számítástechnikai ismerete. Ezek után azt gondolom, hogy te ezzel sem rendelkezel. Ez itt nem az "óvoda", itt minimum "középiskola" van, néha "egyetem". Nem sértés akar lenni, csak a kérdéseid színvonalát próbáltam érzékeltetni, hogy mennyire nem idevaló színtűek, amit nem itt kéne bepótolni!
Van PIC kezdőknek topic, van egy csomó számítástechnikai irodalom magyarul is(pl. fájlkezelés, elérési útvonalak, MPLAB toolsheet stb.). Itt csak égeted magad, már bocsáss meg, de ez a helyzet, elnézést kérek!”
(#) Amarton hozzászólása Nov 13, 2010 /
 
PIC24FJ32GA002 PIC-nél melyik lábak az SPI lábak? Adatlapban nem találom.
Elvileg 2 is van benne.
(#) icserny válasza Amarton hozzászólására (») Nov 13, 2010 /
 
Idézet:
„PIC24FJ32GA002 PIC-nél melyik lábak az SPI lábak?”
Amelyekhez hozzárendeled. Az adatlap elején (3 oldal alja) nézd meg a táblázatot! A két SPI is "remappable" perifériaként van feltüntetve.
(#) kkrisz75 hozzászólása Nov 13, 2010 /
 
Van egy nagyon amatőr kérdésem.
Most raktam össze az első Pic el vezérelt ledsort.
oda vissza futó fény.
A 20 autóm után ez az első elektormos berendezés ami nem +12 és test , egyéb izzók, ledek bekötése.

A kérdésem az lenne:
Ha én akarom léptetni és nem belső órajel szerint futtatni, akkor kell használnom egy bemenetet valamilyen kapcsolóval.

DE milyen bemenetet kapcsolhatok rá?
Pl a táp 5.2V-ja is lehet bemenet?
Következő: »»   834 / 1319
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