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   983 / 1207
(#) Hp41C válasza Elektro.on hozzászólására (») Okt 4, 2017 /
 
Nos akkor el kell felejteni a PWMx_Set_Duty() függvényt és írni kell helyette másikat vagy közvetlenül kell kezelni a CCCRxH és CCCRxL regisztereket.
(#) usane válasza Hp41C hozzászólására (») Okt 4, 2017 /
 
Nyilván velem van a baj, de nem egészen értem a problémád. Miért kellene használni azt a 2 bitet is amikor a PR2 értéke sem nagyobb 200-nál. Ugyanakkorára állítja a CCPRxL-t is. Nekem sosem volt bajon 18F-eken ha egyforma volt a period meg a duty regiszter. Mindig kijött az egyenes vonal belőle, nem kellett magasabbra állítanom a duty-t, de mondom, nyilván félre értek valamit.
(#) Elektro.on válasza Hp41C hozzászólására (») Okt 4, 2017 /
 
Én használtam ezt a függvényt, és nem volt vele se mi gondom.
(#) pajti2 válasza Firefighter1 hozzászólására (») Okt 4, 2017 /
 
Azt a "kanóc nélkül" dolgot nem értem. Én arra asszociálnék belőle, hogy wifiznél. Rosszul értettem?
(#) kriszrap hozzászólása Okt 4, 2017 /
 
Idézet:
„Próbáld meg nagyobb számmal elérni, hogy a CCPRxL -be 199 -nél nagyobb szám kerüljön.”

Ha CCPRxL = 199 és egyell nagyobb értéket attam meg akkor mindig 0 ra váltott a CCPRxL.
És sajnos igy nem tudtam ezt beállítani.
Ebbe a helyezetbe mit lehet még tenni??
(#) Hp41C válasza usane hozzászólására (») Okt 4, 2017 /
 
Nekem nincs vele gondom, legfőképen azért, mert nem használom.... Csak segíteni próbálok....
Lehet, Nektek jobban menne, hoszen legalább használtátok már.
(#) sonajkniz válasza usane hozzászólására (») Okt 4, 2017 /
 
Nem tudom, C-ben hogy megy ez, de ha PR2-őt 200-ra állítod, a teljes számolás 201 lesz.
Tehát a megszakítatlan magas jelhez CCPRxL 201 kell legyen. Hacsak nem növeli meg a C fordító automatikusan 1-el, CCPRxL értékét, nem jön ki a megszakítatlan magas jel.
(#) kriszrap hozzászólása Okt 4, 2017 /
 
Nálam az a probléma akkor hogy a CCPRxL nem megy fel 200 és igy nem lesz teljes kitöltésem???

Órajel hiba nem lehet ?? Pic18f46k22 használom 16mhz 4xPLL el.
(#) sonajkniz válasza kriszrap hozzászólására (») Okt 4, 2017 /
 
Akkor állítsd le a pwm-et, amikor max kitöltést akarsz, és egyszerűen kapcsold be a kimenetet!
Assemblyben gond nélkül feljebb írható a CCPRxL mint a PR2.
Ahogy Hp41C korábban megjegyezte, nem látunk bele a C függvények belsejébe, így nem tudni, mitől van agytengely kottyanása.
Amúgy űrhalyót vezérelsz, hogy ekkora órajelre van szükséged?
A hozzászólás módosítva: Okt 4, 2017
(#) nagym6 válasza Hp41C hozzászólására (») Okt 4, 2017 / 1
 
Idézet:
„vagy közvetlenül kell kezelni a CCCRxH és CCCRxL regisztereket.”
Ez a megoldás. Én basicben írogatok, de a regisztereket közvetlenül írom. Nem használom a beépített függvényeket pld.: PWM-nél, és még sok esetben sem, a proc perifériák programozásánál. Nincs is gondom ezekkel.
(#) Hp41C válasza kriszrap hozzászólására (») Okt 4, 2017 /
 
Összefoglalva:
- A Micro C PWM könyvtárában levő
  1. void PWM1_Set_Duty(unsigned short duty_ratio);

eljárás 8 bites értéket vesz át és 0 jelenti a 0% -ot és 255 jelenti a 100% -ot. Ez az eljárás nem kezeli a CCPRxH 5. és 4. bitjét sem. Továbbá a 255 -ös érték megadásakor a PR2 -vel megegyező értéket teszi a CCPRxL -be. Nem vagyok meggyőzve a legutóbbi állításról, de ezt támasztja alá a két példád.
- Mivel az átadható legnagyobb érték a 255, így nincs lehetőség a függvénnyel a PR2 értékénél nagyobb értékre állítani a CCPRxL -et.

- Miért is kellene nekem egy regiszter értékének megváltoztatásához egy paramétert átadni (FSR2 indirekten a software stack -en), eljárást hívni, a stack -ről felvenni, számolni vele, beírni a SFR -re majd visszatérni és (minden hívás után ismételten) lepucolni a paramétert a stackról? Ezenkívül jól elfedni a lényeget...
A CCPRxL = 255; utasítás csak egyetlen gépi utasítás setf CCPRxL (esetleg egy bank beállítás, de az az eljárásban is benne van).
(#) Firefighter1 válasza pajti2 hozzászólására (») Okt 4, 2017 /
 
Igen.... Az lenne a cél hogy modulok ne kábelesen legyenek összekötve hanem valamilyen rádiokommunikációval, csak nem tudom milyen frekin, és milyen kommunikációs protokollal lehetne ezt megvalósitani.
(#) kriszrap hozzászólása Okt 4, 2017 /
 
Sikerült igy:
  1. CCPR2H=0;
  2.     CCPR2L=200
  3.    
  4.     CCPR3H=0;
  5.     CCPR3L=200;
  6.    
  7.     CCPR4H=0;
  8.     CCPR4L=200;

Rendesen müködik igy idömultiplexelés nélkül.
Amugy ezeket a regisztereket honnan tudjátok melyik melyikés melyik mit használ??
(#) Hp41C válasza kriszrap hozzászólására (») Okt 5, 2017 /
 
Idézet:
„Amúgy ezeket a regisztereket honnan tudjátok melyik melyik és melyik mit használ?”

Az adatlapjából.
A hozzászólás módosítva: Okt 5, 2017
(#) usane válasza Hp41C hozzászólására (») Okt 5, 2017 /
 
Elnézést, nem kötekedésképpen írtam, de tényleg nem értettem miért kell a 10 bit. A 8 bites PWM is PWM. Aztán közben rájöttem, hogy akkor igazad van, ha 255-nél 255-t írt volna a MikroC a regiszterbe, akkor a 256-hoz már kellene plusz egy bit, de láttuk, hogy csak 199-et ezért nem értettem.

Az viszont még mindig relytély, miért kell egyel magasabb, az adatlap ellenére.
Hozzáteszem jó ideje már főleg 32bit-ezek, és azoknál az egyenlő is elég, és nem emlékeztem, hogy a 18-asoknál ez így működött volna, de majd frissítem az emlékeim, ha lesz időm.
(#) Hp41C válasza usane hozzászólására (») Okt 5, 2017 / 1
 
10 bites PWM -nél, ahol a PR2 = 255, az 1023/1024 * 100% kitöltéshez (4 * 255 + 3) = 1023 -at kell a CCPRx regiszterekbe írni. Hogy ez a CCPRxL 7,6,5,4,3,2,1,0 és CCPRxH 5,4 sorrendben történik az egy részletkérdés. Ha a CCPRxH 5,4 bitjei 0 -ák, csak a CCPRxL bitjei 1 -ek, akkor a kitöltés 4 * 255 = 1020, azaz a kitöltés 1020/1024 * 100% = 99.6 %. Így mindig lesz a kimeneten egy kis ideig alacsony szint.
(#) pajti2 válasza Firefighter1 hozzászólására (») Okt 5, 2017 /
 
Mit szólnál mondjuk ethernethez? Bővebben: Link
(#) pajti2 válasza kriszrap hozzászólására (») Okt 7, 2017 /
 
Kicsit off kérdés. Annak a 74hc595-nek nem tudsz véletlenül ellenpárját?

Olyasmi kellene, hogy párhuzamosan enable jellel belatchelni a 8 digitális bitet, áttölteni shift regiszterbe, és órajel vezérléssel 1 vonalon leolvasni. Belepottyantam egy olyan szituba, amikor nagyon sok párhuzamos bitet kellene beolvasnom pár lábon
(#) sonajkniz válasza pajti2 hozzászólására (») Okt 7, 2017 / 1
 
Mennyi az a nagyon sok?
Mert lehet, hogy egy megfelelő lábszámú olcsóbb PIC-el jobban jönnél ki, és még áramkörileg is egyszerűbb lenne.
(#) gyoran válasza pajti2 hozzászólására (») Okt 8, 2017 / 1
 
Mondjuk 74HC(T)166?
(#) Bakman válasza pajti2 hozzászólására (») Okt 8, 2017 / 1
 
74166 parallel-in/ serial-out 8-bit shift register, synchronous load
74165 parallel-in/ serial-out 8-bit shift register, asynchronous load
CD4014 parallel-in/ serial-out 8-bit shift register, synchronous load
74647 parallel-in/ serial-out 16-bit shift register, synchronous load
(#) kriszrap hozzászólása Okt 8, 2017 /
 
Idézet:
„Kicsit off kérdés. Annak a 74hc595-nek nem tudsz véletlenül ellenpárját?

Olyasmi kellene, hogy párhuzamosan enable jellel belatchelni a 8 digitális bitet, áttölteni shift regiszterbe, és órajel vezérléssel 1 vonalon leolvasni. Belepottyantam egy olyan szituba, amikor nagyon sok párhuzamos bitet kellene beolvasnom pár lábon”


Vannak olyan shiftregiszterek ahol a lábak állapotát belehet olvastattni???
(#) Bakman válasza kriszrap hozzászólására (») Okt 8, 2017 / 1
 
Írtam négy egyszerű példát vagy marad a portbővítő használata, pl. MCP23S17.
A hozzászólás módosítva: Okt 8, 2017
(#) pajti2 hozzászólása Okt 8, 2017 / 1
 
@sonajkniz, @gyoran, @Bakman köszönöm a tippeket, megnyugtató lehetőségekkel vagyok ellátva a problémát illetően.
A hozzászólás módosítva: Okt 8, 2017
(#) Hp41C válasza kriszrap hozzászólására (») Okt 8, 2017 / 1
 
74HC597, 74HC589
(#) Attilawap hozzászólása Okt 8, 2017 /
 
Sziasztok!
Olyan dolgot szeretnék megvalósítani egy PIC 12F683-el, hogy a kimenetén 21khz-től 24khz-ig sziréna szerűen változzon a frekvencia. Jelenleg most ismerkedem a PIC-ek programozásával. Két programom van jelenleg: Proteus_Professional_7.5_SP3 és Proton Compiller 3.5.4.7. Extraként az is szóba jöhetne, hogy az IC bemeneteire potmétert tenni és akkor lehetne állítgatni a minimum meg maximum frekvenciát. Segítsetek, hogy hogyan induljak el a program megírásában.
(#) pajti2 válasza Attilawap hozzászólására (») Okt 9, 2017 /
 
Szia,

Feltettél egy általános kérdést. Ha teljesen általános checklist kell:

1. Angol megy-e? Anélkül moccanni sem tudsz.

2. Analóg és digitális elektronikai alapok megvannak-e? Tranzisztor / fet, műveleti erősítő, logikai kapuk (legalább nand), d-flop / vagy legalább az NE555 - ezekkel jó lenne építési tapasztalat. Ha nem mersz megfogni egy tranzisztort sem kimeneti teljesítmény illesztőnek, vagy azt sem érted, miért kell az, vagy nem tudsz kézzel rajzolni egy kapcsolási rajzot / nem érted meg, ha rajzolnak neked, úgy megint csak moccanni sem tudsz.

3. Pic adatlapját letöltötted? Elolvastad? Amit meg kellett értened belőle, az az oszcillátor config, pin config, adc, pwm. Ha bármelyiket nem érted, az probléma.

4. Pic programozód megvan (mit használsz?) / nincs meg? (Fejlesztői környezetre jobb lenne elsőként az MC alapot használni.)

Amíg a fentiek nem mind zöld pipa, addig még ne indulj el a program megírásában

(És hogy nem mind zöld pipa, azt abból gondolom, hogy az adatlapban még példakódok is vannak, és ahhoz képest nem részletre kérdeztél rá, hanem egészében nem tudsz elindulni.)

(Szerk.)
A hozzászólás módosítva: Okt 9, 2017
(#) usane válasza Hp41C hozzászólására (») Okt 9, 2017 /
 
Aha. Így már értem, hogy mit akartál mondani. Ezzel sosem volt problémám ugyanis midig N-FET-et használok LED meghajtásra, illetve P-csatornásat is, de nem PWM módban csak ki be kapcsra. Az 595-t sem használtam így. Viszont akkor had javítsak egy kicsit azon amit mondtál. Nem neked, mert te nyilván tisztában vagy vele, csak elírtad. Egyel többet kellene a CCPR regiszterekbe írni, vagyis csak az segít ha a PR2 regisztert egyel csökenti. De mint látom megoldotta a regiszterek közvetlen írásával, a 200 nagyobb mint a 199. Viszont PR2=255-nél nem lehet 100% kitöltést megvalósítani. Valamint, az a 2 LSB bit is lényegtelen CCPCON(4:5) . A teljes kitöltéshez úgysem számít a köztesben meg elhanyagolható és észrevehetetlen. Fölösleges használni.
(#) kriszrap hozzászólása Okt 9, 2017 /
 
Sziasztok van 5*8 RGB ledem és úgy idömultiplexelem hogy egy led kivilágitattok 250 us enként és utánna offolom aztán a következö és igy tovább mig el nem érem a 40 ik ledet.
Ha jól számolom a lefutási idöm 100ms és erősen vibrál a kép miért lehet??
(#) Attilawap válasza pajti2 hozzászólására (») Okt 9, 2017 /
 
Az Angol elég jól megy. Analóg áramkörök is mennek, már több nyák-ot és kapcsolást készítettem.
Na a 3. Ponttal már gondok vannak. PIC adatlapját letöltöttem, de az általad írt fogalmakat még nem értem. Ha tudsz tananyagot küldeni ezekről, azt megköszönném.
PIC égetőm az van, de előre megírt programok égetésén kívül még nem csináltam vele semmit.
Következő: »»   983 / 1207
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