Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok, lenne egy problémám.
Megépitettem a lancos féle égetőt , az a problémám, hogy nem irja a PIC-et. Próbáltam már sokféle progival, szerintetek milyen beállitások kellenek ennek a programozónak. A Winpic-ben állitva a vezetékeket a pic-en megvannak a feszültségek. Vagyis kapcsolhatóak a megfelelő lábakon. Van valamilyen tippetek?
Az utasítás-végrehajtás sebességével futnak a belső időzítők is, ez (lsd. adatlap) a meghajtó frekvencia negyede, 4 MHz-es kristállyal 1 MHz, vagyis ha nem volna előosztód, 1 us-onként történne egy számlálás. 32-es osztóval értelemszerűen 32 us az időtag.
Adatlap! (órajel/4/előosztó/számláló/utóosztó, ha van!)
Köszi. Megnézném én adatlapon, csak tudnám hogy hogy keressem .
Köszi
Amikor Timerrel kapcsolatosan nem értesz valamit, akkor azt logikusan a Timerrel foglalkozó résznél. Ott pedig van(nak) blokkséma('k), azokon kövesd végig.
A kérdésedből nekem úgy tűnik, hogy magát az adatlapot nem találod?
Egy linket betehettél volna, mert nem sok kedvem van keresgélni...
A Ponyprog-ról van szó az ott található soros programozóról.Bővebben: poniprog
Ez egy JDM klón. Ne haragudj, de sajnos nem tudok segíteni, kiráz a hidek a JDM-től.
Köszi nem baj megoldódott, pedig nem csináltam semmit .
Közben kipróbáltam magam is szimulátoron a táblázatkezelést. A db direktíva után álló első érték kerül a páros programmemóriacímre,a második érték pedig a páratlan memóriacímre,és erre voltam kíváncsi. Potyo,Trudnai,Szilva,mégegyszer köszi a segítséget. üdv Máté
Még sok bosszúságot okozhat. Csak jót akarok neked!
Olvasd el az oldalamon írottakat a JDM-ről, ha van kedved!
Sziasztok!
Egy kis segítséget szeretnék kérni. Elég kezdővagyok a témában, de szorgalmasan tanulok . Találtam a weben egy kis programot, amit szeretnék használni egy 16F690-es en.
Azt írták, hogy, ha RA0-ra +5V adok, akkor megjelenik a feszültség a RC1-en. Sajnos nekem valamiért nem működik. Előre is köszönöm az építő jellegű segítséget. Üdv: Mitch
Eloszori is milyen MCU-rol van szo? Ettol fugg ugyanis hogyan kell a portokat inicializalni.
Masodszor konfiguracios bitektol is fugg hogy viselkedik a processzor, no meg a kapcsolast itt nem latni, hogy hardver ugyileg mukodik-e a kontroller... Harmadszor C-ben nem "igy" szokas programozni, a vegtelen ciklus az "while(1)" vagy "for(;", az "if(RA0==1)" az egyszerubben is leirhato "if(RA0)" formaban.
Tudom, olvastam az oldaladat, csak valami megoldást keresek mert elszált a progi a Pickit2-ből, és nem jutok el vele pestre ujra iratni bele a progit.
Először is tisztázzuk, hogy milyen C fordítóval próbálkoztál, s hogy hogy néz ki a program eleje!
A konkrét C fordító ismeretében tudjuk megmondani, hogy a bitek kezelése hogyan történik. Az RC1=1 értékadás pl. feltételezi, hogy az adott C nyelv támogatja az egybites változók kezelését. Van, ahol a bitek különálló kezelése külön függvényhívást igényel (pl. output_low(), output_high() ) Az is gyanús a programoodban, hogy csak egybe állítod a kimenetet, nullába soha. Szerintem az
típusú kezelés logikusabbnak tűnik. Csak ne nekem kelljen kitalálni, hogy mit is akartál csinálni a programban. Kód beidézésénél használd a {code=c} .... {/code} jelőlést, természetesen szögletes zárójellel helyettesítve a fenti kapcsos zárójeleket! Amúgy a hardver az a Low Pin Count demókártya, vagy valami más?
Köszönöm szépen a gyors reagálást. Idő közben az egyik kollégám megoldotta, a feladatot, és azt ígérte, hogy majd részletesebben elmeséli.
Mégegyszer köszönöm
Sziasztok!
Sehogy sem akar működni az áramkör és a program amit csináltam 18f4550-hez. Nem csinál semmit, pedig csak egy gombnyomásra kellene világítania a PORTB LED-jeinek. De meg sem mukkan. Belső oscillátort használok, MCLR láb jól van bekötve. Nem értem. A haverom által küldött progi sem működik Segítséget kérnék! Köszönöm!
1. Hasznald a config definiciokat amik az include file-ban vannak - ezek a bitezesek alag csunyacskak
2. Nezd meg az adatlapban hogyan inicializaljak a portokat 3. ha mukodik akkor iszonyat gyorsan fog a portod porogni - scoppal nezed? Ha LED-ek vannak raaggatva, akkor debuggerrel csinald igy idozites nelkul es akkor latsz is valamit, de ha egyaltalan nem eg a LED annak a 2. pont utan majd menni fog...
De nem értem, a haveromnak ment ez így.
Én így tanultam a port inicializáslást, a Kandón. Bár ott nem próbáltuk ki hogy működik-e. Megnézem az adatlapot. Amit már bogarásztam kicsit. Köszi!
Az asm-ben 18F4320-as include file-t használsz, holott 4550-ről írtál. Ez sem mindegy. Az sem mindegy, hogy esetleg a 4550-ben milyen extra funkciók vannak bizonyos portlábakon, amit lehet, hogy ki kell kapcsolni, mielőtt használni akarod digitális IO-ra a portot. Továbbá az asm-ben mindkét gombállapotra várakozó ciklusban BTFSS van, szerintem az egyiknek BTFSC-nek illene lennie.
Azt csak halkan jegyzem meg, hogy a változóknak sem illik direkt címet adni, hanem inkább valami komfortosabb megoldással, generált címekkel (cblock, udata, és hasonlók).
Helló!
Igen jogos. MPLAB-ban átirtam 4550-re És az alsó az BTFSC Beirtam az ADCON1 regisztert is, de most sem jó. Meg se nyikkan.
Az a gyanúm, hogy azokat a configurációs adatokat egy másik, pontosabban a 18F4320-tól másoltad ide a programba. A 4550-nek teljesen más konfigurációja van, mert az egy USB-s PIC, és más az oszcija(pl. van neki _CONFIG1L-is!)! Mondhatni az egyik legbonyolultabb oszcija van! Ez így a haverodnak sem mehet!
Vedd elő az adatlapot és böngészd át a konfigurációs részt, és annak megfelelően próbáld beállítani a biteket! Trudnai írta, hogy nem szép ez a bites megadási mód, én ezzel nem értek egyet, jó lenne ez így, nekem pl. sokkal áttekinthetőbb, csak a jó értékeket kéne oda beírnod, nem ilyen zöldségeket.
Idézet: „Beirtam az ADCON1 regisztert is” Megtudhatjuk, hogy mit írtál bele? 0x0f-et,vagy valami mást?
Ha az adatlapokban (illetve, egészen pontosan az inc fileokban) használt megnevezéseit használod a config lehetőségeknek, akkor sokkal fájdalommentesebb egy processzorcsere a program alatt. Sokszor ugyanaz a szimbolikus beállítás egészen más biteket jelent, ilyenkor ezt az inc file kicserélésével automatikusan követi.
Helló jó a gyanu, mert nem találtam sehol sem 18f4550-hez példát.
De most megtaláltam az adatlapjában végre, és talán jól be is állítottam őket. Ez eddig jó így? Ez lenne életem első PIC őprogramja, amit működésre is kellene birni. Suliban csak elméletet nyomták, konfig bit-eket nem használtunk, meg semmi inicializálást. Valkai papa nagyon nem arra ment hogy megtanuljunk progizni.
Ez lehet, viszont én nem látom át a neveket, mert nem adja magát, hogy mennyit kell használnod. A bitek megkövetelik, hogy mindegyikkel pontosan foglalkozz.
De nem akarok ez ügyben eldönteni semmit, én is használom a másik módszert C-ben, mert kénytelen vagyok. Az, hogy nekem jobban bejön a bites módszer, az se sokat számít. Ezért elfogadom, hogy igazad lehet.
Rengeteg hiányosság van ott még. Ennyi idő alatt senki nem képes áttekinteni a konfigurációt. Szánj rá több időt. Nézd meg az oszcillátor felépítését, az sokat segít. Aztán van ott még sok beállítás, ami eltér a sima 18F-ekétől. Mindegyik konfigbájtot nézd át, ne csak az oszcillátorokét!
Holnap átnézem. Addig is köszi!
A konfig bitek programozási oldaláról adok egy tippet: ha előveszed az inc file-t, esetünkben a p18f4550.inc-et. Ennek a legvégén a bitenkénti config lehetőségek vannak definiálva, előtte kikommentezve van egy rész, ami emberi fogyasztásra sokkal alkalmasabb. Így kezdődik:
;=========================================== ; ; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been ; superseded by the CONFIG directive. The following settings ; are available for this device. ; ; PLL Prescaler Selection bits: ; PLLDIV = 1 No prescale (4 MHz oscillator input drives PLL directly) ; PLLDIV = 2 Divide by 2 (8 MHz oscillator input) ; PLLDIV = 3 Divide by 3 (12 MHz oscillator input) ; PLLDIV = 4 Divide by 4 (16 MHz oscillator input) ; PLLDIV = 5 Divide by 5 (20 MHz oscillator input) ; PLLDIV = 6 Divide by 6 (24 MHz oscillator input) ; PLLDIV = 10 Divide by 10 (40 MHz oscillator input) ; PLLDIV = 12 Divide by 12 (48 MHz oscillator input) ; ; CPU System Clock Postscaler: ; CPUDIV = OSC1_PLL2 [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] ; CPUDIV = OSC2_PLL3 [OSC1/OSC2 Src: /2][96 MHz PLL Src: /3] Én ezt az egészet ki szoktam másolni a forráskódom elejére, aztán végigmegyek rajta, és minden konfiglehetőségből egyetlen sort kiemelek, és abból csinálok egy config sort, pl. így: config PLLDIV = 5 Ezzel a módszerrel minden létező konfigopcióra adok valami nekem tetsző előírást, nem marad semmi ki. |
Bejelentkezés
Hirdetés |