Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
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.
Ő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...
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.
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).)
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
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. Idézet: Akkor ANSELB 0. bitjét miért nem 0-ba állítod? „De, az RB0-n jön ki a CCP4.”
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?
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.
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.
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.
Idézet: 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. „Arra már rájöttem hogy a pwm-nél a duty beállító regiszter 10bites”
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" .....
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.
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.
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.
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: az egyém „C:\Program Files\Microchip\C30\support\PIC24H\inc” Idézet: ben van, mintha az első a C nyelvű programozáshoz kellene. „C:\Program Files\Microchip\MPLAB ASM30 Suite\Support\inc” 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? Idézet: 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. „Ha igen, minden projekt létrehozása után újra be kell állítani?” Idézet: 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.„Mellesleg van eltérés a te és az én feltételezett jó útvonalam között.” Idézet: A nevet és a kierjesztést neked kell megadnod. Az MPLAB honnan is tudná?„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.” Idézet: Már többször megtárgyaltuk: .s kiterjesztés kell ahhoz, hogy le lehessen fordítani. „nem tudom, mert nincs kiterjesztése”
Többször használtam már F2550 helyett LF2550-et a klónban, semmi gond nincs vele.
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.
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!
Í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!!!
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.
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.
Idézet: „de inkább akkor ne tanácsolj legközelebb semmit,” Idézet: Ilyet nem olvastam...„akkor pedig azt hogy ne foglalkozzak vele.” 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".
É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.
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!”
PIC24FJ32GA002 PIC-nél melyik lábak az SPI lábak? Adatlapban nem találom.
Elvileg 2 is van benne. Idézet: 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. „PIC24FJ32GA002 PIC-nél melyik lábak az SPI lábak?”
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? |
Bejelentkezés
Hirdetés |