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   344 / 1216
(#) icserny válasza supra hozzászólására (») Dec 23, 2012 /
 
Máshol is olvastam már olyan panaszokat, hoyg az adatlapban megadott információ önellentmondásos. A PIC-kwik projektemben az alábbi beállítással (FRC-ből 40 MHz FCY) az UART átvitel működni szokott (lib/common/pic24_clockfreq.c részlet).
  1. void configClockFRCPLL_FCY40MHz(void) {
  2.   _TUN = -19;  // Correct setting assuming the RC oscillator is exactly 7.37MHz.
  3.   _PLLPRE = 6; // Prescale = PLLPRE + 2
  4.   // Fvco after multiply must be between 100 and 200 MHz.
  5.   // Pick 160 MHz, so multiply by 187.
  6.   _PLLDIV = 185; // Multiply = PLLDIV + 2
  7.   // Final desired Fosc = 80 MHz for an Fcy = 40 MHz.
  8.   // (See 7.7 of the FRM rev B). Pick 80 MHz, so postscale by 2.
  9.   _PLLPOST = 0; // Postscale = 2 * (PLLPOST + 1)
  10.   switchClock(GET_OSC_SEL_BITS(FNOSC_FRCPLL));
  11. }
(#) szabi95 válasza (») Dec 24, 2012 /
 
másik ic-vel nemlehetne helyetesíteni a pic16f676-ot?
(#) djadji válasza smoky hozzászólására (») Dec 24, 2012 /
 
Hogy a fenébe lehet rájönni egy kondiról, hogy nem akkora, mint ami rá van írva? Soha nem vennék észre egy ilyen hibát, azért kérdezem.
(#) supra válasza icserny hozzászólására (») Dec 24, 2012 /
 
Köszönöm!

Akkor megnyugodtam, hogy nem bennem van a hiba...

Sajnos elkövettem fél évvel azt a bődületes hülyeséget, hogy nem a Microchip, hanem a Mikroelektronika cuccain kezdtem fejleszteni - életem egyik legrosszabb döntése volt... De az értékeknek ott is jónak kell lenniük.
(#) Balagemann2031 hozzászólása Dec 24, 2012 /
 
Sziasztok! Egy olyan kérdésem lenne, hogy a belső oszcik általában mennyire megbízhetóak? Egy tanítható távirányító projekten dolgozom, és szeretném a külső alkatrészek számát csökkenteni. A prototípust, egy 16F627A-val építem meg, miután eldöntöttem használok-e külső oszcit... Konkrétan az érdekelne, hogy ha időzítéseket használok, akkor pl a külső hőfok hatására, mennyire torzul? Előre is köszi a segítséget! (Boldog Karit Mindenkinek!)
(#) pajti2 válasza Balagemann2031 hozzászólására (») Dec 24, 2012 / 1
 
Pont ennek a pic-nek van belsőleg precíziós 4mhz-es oszcillátora, de az is az adatlapja szerint 1%-ot simán mászkál hőmérsékletre is, tápfeszre is. Ha ezrelék alatti hibára akarsz valamit időzíteni, ugyan úgy megette a fene.

Ami meg a pic-eket illeti úgy általában, a belső oszcit csak arra szokás használni, hogy ha teljesen mindegy, milyen frekin fut, mert 1mhz-től 10mhz-ig bármi megteszi (buta állapot gép, ahol a program a külső jelek állapotának megfelelően ütemezve fut, ergo a belső sebesség teljesen lényegtelen), arra jó. Meg a belső 32khz-es oszci low power módokra minden külső forrást teljesen lekapcsolni energiatakarékossági okokból - valami ketyegő a pic-nek akkor is csak kell. És ennyi. Bármi precíziós dologhoz külső kvarc kell.

Boldog Karácsonyt
(#) Balagemann2031 válasza pajti2 hozzászólására (») Dec 24, 2012 /
 
Köszönöm a gyors választ! Akkor inkább beépítem a kvarcot!
(#) nagzso hozzászólása Dec 25, 2012 /
 
Sziasztok!
PIC-ről szeretnék frekvenciaváltót üzemeltetni, PIC18F2550-ről. Ehhez ugye folyamatos jel kell, viszont, ha meghívok egy megszakítást, ez megszűnne. Arra gondoltam, hogy valami IC-t, tárolót vagy nem is tudom mit lehetne használni, legjobb az lenne, ha digitális jellel tudnám szabályozni pl.: egy IC-t, aminek nem kell folytonos jel, viszont az IC pedig hajtja folyamatosan a freki. váltót. Egyelőre nem nagyon vagyok otthon áramkörök felépítésében, így nem tudom, hogy mit kéne használnom. Bármilyen ötletet szívesen fogod.
Köszönöm előre is.
(#) kissi válasza nagzso hozzászólására (») Dec 25, 2012 /
 
Szia!
Először is jó lenne tisztán látni: milyen jel kell a frekiváltónak ( analóg vagy digitális ) és Te melyikkel akarod működtetni?! Ezután nézd meg a működéshez szükséges protokollt!
Így az lenne az ötletem, hogy olvass egy kis adatlapot és gondolkozz el a működésen! Steve
(#) nagzso válasza kissi hozzászólására (») Dec 25, 2012 /
 
Hát vezérelnem analóggal kell a freki. váltót. Tudom a 18F2550-ennek nincs DC to AC convertere, és azt is tudom, hogy amit a PIC kiad az digitális Ezért kérdeztem, hogy van-e valami megoldás. Amit én akarok: digitális jelet küldök "valaminek" (nem folyamatosan, tehát csak akkor küldök a "valami"-nek jelet, ha módosítani kell a kimenetet, ami analóg jel), ami tartja az állandó fesz.-t a freki. váltón. Szólj, ha valami nem érthető, mert megeshet, hogy belegabalyodtam. Milyen adatlapot olvassak? Mert a PIC-emét forgatom elég rendesen(azt hiszem), a működésen való gondolkodás meg menne, de azt se tudom, hogy meg lehet-e csinálni, amit én akarok(programozást tanulok már 8 éve, a műszerészkedést meg eddig csak hobbi szinten csinálgattam). Szóval nem azt kell megmondani, hogy hogy csináljam meg, hanem elég csak valami útmutatás(vagy szimplán az, hogy béna vagyok ).
(#) kissi válasza nagzso hozzászólására (») Dec 26, 2012 /
 
Szia!
Ha analóg jel kell, akkor csinálj DA átalakítót pl. egyszerű létrahálózattal! Ha csinálsz egy 8 bitest, akkor 256 lépcsőben állíthatod a feszültséget 1 port segítségével 0-5V-ig durván 20 mV-os felbontással! Tudomásom szerint a frekiváltó analóg jelként a 0-10V-ot ( vagy a 4-20 mA-t ) tudja, ez is megvalósítható pl. egy Au=2-es erősítésű műveleti erősítővel. A portra kiadott jel nem fog megváltozni a megszakítás miatt a PIC-ben, csak ha Te "birizgálod" újra a portot! Ha másra kell a láb, akkor használj PWM-et ( van a 2550-esben ilyen modul ), azt is csak fel kell programozni és nyomja a megfelelő jelet a következő változtatásig ( azután RC aluláteresztő szűrő és műveleti erősítő és kész is a 0 - 10 V-os jel! ) !
Steve
(#) nagzso válasza kissi hozzászólására (») Dec 26, 2012 /
 
Köszönöm szépen, ez új dolog volt, hogy nem változik a fesz. a lábon megszakításkor, de jobban belegondolva, miért is változna. PWM-en is gondolkodtam, de a problémát az jelentette számomra, hogy hogy biztosítom az állandó jelet. De így minden szuper, most hogy tudom, hogy nem változik a megszakításkor a lábon a jel.
Köszi szépen még egyszer
(#) vicsys válasza nagzso hozzászólására (») Dec 26, 2012 /
 
Ha belőtted a PWM-et és engedélyezted az megy folyamatosan mint a vízfolyás. Menet közben meg tudod a paramétereket állítani.
(#) pajti2 válasza nagzso hozzászólására (») Dec 26, 2012 /
 
Szintén egy lehetőség, hogy PIC18F2550 helyett PIC18F25K50 -est használni. A part selector szerint abban van DAC, még ha csak 5 bites is. A 16 bites pic-ekben már jellemzően 10 bites DAC-okat találsz. Mire PWM jelet rendesen megszűröd, vagy ellenállás létrát felépíted mellé erősítővel, vagy kevés az 5 bit, mert pontosabb jel kellene, szóval tok szám és nyák felület úgyis elmegy, mire pöpec lesz a cucc, és ahhoz képest már olcsóbb egy 16 bites pic. Ha válogatnál, itt egy link a part selector-ra:

http://www.microchip.com/maps/microcontroller.aspx
(#) nagzso válasza (Felhasználó 15355) hozzászólására (») Dec 26, 2012 /
 
Kevesebb, mint 3 hónapja kezdtem el PIC-ekkel foglalkozni, és szeretném megtanulni, mit hogyan használjak bennük.
(#) nagzso válasza vicsys hozzászólására (») Dec 26, 2012 /
 
Mi szerint válasszam meg a számomra ideális PWM frekvenciát? Olvastam, hogy 20kHz fölé, máshol, hogy 10kHz és 25kHz közé válasszam(bár ezeket motorokhoz). Van valami általánosítás, attól függően, hogy mit szeretnék vezéreltetni(esetembe, ugye a freki. váltó)?
(#) vicsys válasza nagzso hozzászólására (») Dec 26, 2012 /
 
Ezt nem tudom megmondani, mert nem látom, hogy mit és hogyan szeretnél vezérelni.
(#) nagzso válasza vicsys hozzászólására (») Dec 26, 2012 /
 
Egy frekvenciaváltót szeretnék szabályozni vele. Szóval a frekvenciaváltó bemenetére 0-10V közötti értéket küldeni, függően attól, mekkora fordulatszámon kell a motornak működnie.
A hozzászólás módosítva: Dec 26, 2012
(#) pajti2 válasza (Felhasználó 15355) hozzászólására (») Dec 26, 2012 /
 
Mondjuk az a 700 huf olyan nagyon azért mégsem olcsó egy pic-hez képest, és akkor még nem is 1 tokot használtál, hanem már 2-t. És persze kell hozzá az SPI busz is.
(#) pajti2 válasza nagzso hozzászólására (») Dec 26, 2012 /
 
A megadott információ kevés. A PWM jelnek az a hátránya, hogy hullámos lesz. Meg lehet szűrni, de egyre erősebb szűréssel egyre több lesz a jelkésleltetés is, gyengébb szűréssel meg a hullámosság nő. Attól függően, hogy a motorvezérlő hogyan mintavételez, esetleg nagyon más fog történni, mint amit valójában elérni szerettél volna. Ugyan csak 1 kimeneti láb kell hozzá, de nem is szuperfegyver.
(#) nagzso válasza pajti2 hozzászólására (») Dec 26, 2012 /
 
Én is az SPI-n akadtam meg, egyelőre azt se tudom, hogy eszik-e vagy isszák. Majd egyszer eljutok talán addig.
(#) glaci hozzászólása Dec 26, 2012 /
 
Megszakítást szeretnék eszközölni, hogy programfutás közben, tudjak adatot bevinni és azt eeproban tárolni, hogy majd a megszakítás végeztével a program azt fel tudja használni. Fordításkor hibaüzenetet kapok
Idézet:
„25 365 Reentrancy is not allowed: function 'EEPROM_Write' called from two threads __Lib_EEPROM_256.mpas”

mi lehet a probléma?
Mikropascal-ban írom a programot.
(#) potyo válasza glaci hozzászólására (») Dec 26, 2012 /
 
Az a probléma, amit az üzenetben ír, vagyis megszakításból és megszakításon kívülről is akarsz eepromba írni.
(#) glaci válasza potyo hozzászólására (») Dec 26, 2012 /
 
És akkor ezt hogy lehet megkerülni? Mert hogy, amikor elindul a program, akkor kiírja az lcd-re a működéshez szükséges adatokat. Az adatokat az eepromból veszi elő, mert azok változhatnak és a változásokat tárolni kell. Az induló adatokat a program állítja elő és írja az eepromba, amit én ha kell, meg szeretnék változtatni. Azt meg szeretném promt változtatni.
(#) potyo válasza glaci hozzászólására (») Dec 26, 2012 /
 
Át kell gondolni a programot, és az EEPROM írását vagy csak a megszakításban csinálni (bár ez igazából nem jó ötlet, mert sokáig tart), vagy a főprogramból. Mi módon végzed a változtatást? Mert ha nyomógombokkal állítod be, akkor semmi szükség arra, hogy megszakításból csináld.
(#) glaci válasza potyo hozzászólására (») Dec 26, 2012 /
 
Nyomógombbal gondoltam, de ez is érdekel
Idézet:
„Mert ha nyomógombokkal állítod be, akkor semmi szükség arra, hogy megszakításból csináld.”
, ha megoldható.
(#) pajti2 válasza nagzso hozzászólására (») Dec 27, 2012 /
 
Azt hiszem, jó kezdés lenne számodra letölteni az egyik pic adatlapját (az általad választott PIC18F2550 is teljesen megfelel erre a célra), és elolvasni a legelejétől a legvégéig, hogy képben legyél az alapvető dolgokról. Egy pár100 oldalas olvasmány. Elleszel vele egy ideig. Viszont utána legalább a legalapvetőbb dolgokon nem fogsz fent akadni. Ha tényleg pic-ekkel akarsz foglalkozni, ezt igazából nem úszod meg. Ez a legjobb módja a tanulásnak. Ha kezdésnek hiányát látod az elektronikai gyakorlatnak, venni valami Microchipes teszt-boardot, mondjuk egy pickit express csomagot (abban van pic égető is), bőven elég segítség lesz. Valamennyi zsetont el fog vinni, azt rá kell áldozni. Én ezeket tenném a helyedben (én is jártam a te cipődben és én ezeket tettem - nekem bevált).
(#) nagzso válasza pajti2 hozzászólására (») Dec 27, 2012 /
 
Az adatlap meg van, forgatom is. Nem azt mondom, hogy elejétől végéig elolvastam, hanem azokat a részeket, amikre éppen szükségem van. Például, 1 hete az ADC-t nyálaztam folyamatosan és a hozzá kötődő oldalakat, ma a CCP/PWM-es részt bújtam de nagyon, volt amikor az interruptokat/timereket, legelőször meg a láb kiosztásról és, hogy hogyan kell azokat beállítani. Azért nem esek neki, csak úgy mert tudom magamról, hogy sajnos az, hogy elolvasok valamit, az nálam semmit sem jelent, csak ha komolyan elkezdek vele foglalkozni, akkor ragad meg. Szóval nem akarok én kihagyni semmit sem(sőt... nagyon is tetszik ez a PIC-es dolog, és csinálom szinte megállás nélkül) hanem fokozatosan felépíteni, megtanulni a dolgokat. A legnagyobb gond, hogy az elektronikai részből vagyok nagyon satu A PWM-es vezérlés meg sikerült is volna ma, csak az XC8 kicseszett velem rendesen, valami nem jó a tömb kezeléssel(de lehet, hogy csak én vagyok a hülye megint).
(#) pajti2 válasza nagzso hozzászólására (») Dec 27, 2012 /
 
Programozással akkor tudunk neked segíteni, ha kész forráskódot lepucolva illesztesz be. Hogy mit is jelent a "lepucolás"..

Válaszd le teljesen azt a részt, amivel szerinted baj van, pucolj ki belőle minden olyat, ami nem tartozik közvetlenül bele, és kód lefutásra betenni egy függvényt, ami a pic egyik lábát az ellenkezőjére húzza, oda meg rákötni egy ledet. Meg egy másik lábra is másik színnel. A függvényed elején felvillantod a piros ledet, amit csak akkor oltasz ki, ha a függvény (akarhány szinten egymásba ágyazva egy full folyamat) rendben futott végig, és akkor a zöld ledet kapcsolod fel helyette. Letöltöd a programot a pic-be, és futtatod. Átlag sejteni lehet, hogy X idő alatt végig kell futnia, és kivillannia a zöld lednek. Ha nem az történik, akkor valami nem okés. Ha elég tagoltan állítod össze a kódot, és nem egy drótozott kaotikus kutyulás az egész (ezért is kell rendesen tagolva függvényekbe rakni dolgokat), akkor darabonként egyesével is végig tudod nézni, hogy szimulált bemenetre az elvárt kimenet érkezik-e meg (csinálsz rá külön programokat, amiket mind külön-külön lefuttatsz). Ha a darabok rendben vannak, kipróbálod az egészet is. Igazából csak idő kérdése, mert el lehet szöszölni vele, de egészen biztosan el lehet kapni ilyen módszerrel még azt is, hogy egy fordító ténylegesen rossz kódot fordít, vagy valami hardver nem úgy működik, ahogy annak működnie kellene az adatlapja szerint, és legapróbb elemi problémaként külön lehet választani minden mástól. Bármiről is legyen szó.

Ami részletet végleg nem értesz, és már letisztított, csak egyetlen egy dolgot érintő valamiről van szó, azt bekoppantod ide, és kapsz rá magyarázatot valakitől.
(#) nagzso válasza pajti2 hozzászólására (») Dec 27, 2012 /
 
Megoldódott a problémám, csak egy restart kellett.Bővebben: Link
Így szoktam csinálni... ha valami rossz abba amit írtam, akkor minden jó dolgot kikommentezek, és aztán lehet próbálkozni, hogy mit is írtam el.
Következő: »»   344 / 1216
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