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   243 / 1210
(#) kissi válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Szia!

32 MHz esetén a CLK/4 periódusideje 125 ns ( 1/8 MHz), ebből minden 256-ik lépteti a számlálót --> 32 us ( 256*125 ns ) és ebből minden 256-ik okoz megszakítást --> 256*32 us = 8,192 ms, ami kb. 122 Hz-nek felel meg !

Steve
(#) MPi-c válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Én csak arra hívom fel a figyelmedet, ha már XC8-at használsz, hogy a htc.h helyett xc.h kellene írni. Tudom, hogy fordító - gyökereire tekintettel - simán fordítja az előbbivel is. Ezt a "define" sort a legelsőnek, minden más előtt illik megadni.
Arra figyelj, hogy a megszakításkezelő rutinod, most bármilyen megszakításnál ugyanazt hajtja végre, mert a megszakítás forrását nem vizsgálod - gondolom ez most szándékos(?)
(#) gyengus válasza MPi-c hozzászólására (») Ápr 22, 2012 /
 
Szia!

Köszönöm az észrevételeket!

A Hi-Tech könyvtárában talált példa alapján deklaráltam a függvényt: void interrupt timer0_isr(void)
Gondoltam, csak a timer0 mnegszakításakor hajtódik végre. Egyelőre nincs más megszakítás, de beteszem az ellenőrzést.
(#) gyengus válasza kissi hozzászólására (») Ápr 22, 2012 /
 
Szia!

Köszönöm szépen!

Kifelejtettem a képletből a TMR0-t...
(#) gyengus hozzászólása Ápr 22, 2012 /
 
Tovább kellett gyorsítani a megszakítások frekvenciáját, mert vibráltak a ledek. Attól függően, milyen színt állítottam be hol gyorsabban, hol lassabban.

Az előosztót kikapcsoltam és feltöltöttem előre a TMR0-t 128-al. Így most folyamatosnak látom a ledek világítását.

Azért szeretném megérteni. Ennyire gyors lenne a szemünk?

Az elején úgy gondoltam, hogy 50Hz-re teszem a frissítést úgy, hogy egy periódust további 255 részre osztok. Így egy kis rész frekvenciája 12 750 Hz lett volna. A színeket ezáltal megadhatom RGB kódban. A megszakításban látszik is, hogy számolom a kis részeket és amíg adott szín kódja magasabb, mint a számáló értéke, addig világít a szín.
Az algoritmust meghagytam, elég volt gyorsítani.

Most, hogy a színkeverés működik, szeretném a fényerősséget is szabályozni.
Ehhez a ledek közös anódját kell PWM-el vezérelni?

main.c
    
(#) Hp41C válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Szia!
Miért a timer0 -t használod? A timer2/4/6 -t rugalmasabban lehet beállítani. (Fosc / 4, prescaler: /1/4/16/64, 8 bites regiszter, postscaler: /1../16)
(#) gyengus válasza Hp41C hozzászólására (») Ápr 22, 2012 /
 
Szia!

Ennek nincs különösebb oka: ez volt előbb az adatlapban

Meg fogom nézni a Timer2/4/6-ot is, hátha egyszerűbb.
(#) kissi válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Idézet:
„Az elején úgy gondoltam, hogy 50Hz-re teszem a frissítést úgy, hogy egy periódust további 255 részre osztok. Így egy kis rész frekvenciája 12 750 Hz lett volna.”
Nem ez számít, hanem a kép frissítési frekvencia, az meg marad 50 Hz ! Ha nagyon leveszed a kitöltést, akkor ez érzékelhetővé válhat!

Steve
(#) gyengus válasza kissi hozzászólására (») Ápr 22, 2012 /
 
Az az 50 az előosztó miatt 60 valamennyire jött ki.

Ha jól számoltam, a gyorsítások után kb 245 Hz lett az 50-ből. Ezt látom vibrálás nélkül folyamatosnak.

Ezért se értem. Vagy ennyire gyors a szemem, vagy nagyon elszámolom valahol.
(#) potyo válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
50-60Hz az még simán vibrál kb. mindenkinek. Ha a hálózati feszültségre kötött izzóval sorbakötsz egy diódát, akkor az is bőven vibrál, pedig annak még hőtehetetlensége is van. 100Hz-el is vibrál az izzó, csak azt már a hőtehetetlenség annyira kisimítja, hogy a szemünk nem érzékeli, de műszerrel mérve továbbra is mérhető vibrálása van. Fénycsőnek is van 100Hz-es vibrálása, az is észlelhető, hiába van ott is fénypor, ami szintén visz tehetetlenséget a rendszerbe. Ha máshogy nem, kifárad a szem tőle hosszabb időn át. Egy lednek több nagyságrenddel kisebb a tehetetlensége, ezért az 50Hz az bőven vibrál. Nemis értem, honnan jön ez, hogy 50Hz elég arra, hogy ne vibráljon. Ezekkel a mai kontrollerekkel meg lehet küldeni akár kHz nagyságrendű frekvenciával is a kijelzőket, nem kell nagyon colozni a frissítési frekvenciát.
(#) gyengus válasza potyo hozzászólására (») Ápr 22, 2012 /
 
Úgy tudom, hogy a videót 25fps-től látjuk mozgónak. Ezért gondoltam, hogy megduplázom és 50Hz elég lesz a ledeknek.

Így már értem, köszönöm szépen a magyarázatot!
(#) vilmosd válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Csak ugy halkan megkerdem, hogyha ilyen eromuvet hasznalsz (16F1938) amiben van 5 PWM csatorna, akkor miert kell kinlodni SW PWM megirasaval? Akar 5 szinu ledet is vezerelhetsz PWM segitsegevel, es nagyon egyszeruve valik a program.
(#) gyengus válasza vilmosd hozzászólására (») Ápr 22, 2012 /
 
Igen, azzal is vezérelhetném a ledeket.
Lehet, hardveresen fogom. Első körben egyszerűbbnek tűnt szoftveresen megoldani, mert így egy az egyben használhatom az RGB kódokat és nem kell duty cicle-ket számolgatni.
Más feladata úgyse nagyon lesz a PICnek.
(#) vilmosd válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Mar bocs, de igyis-ugyis szamolni kell a dutyt. Viszont egyszerusitheted a dolgot, hogy berugsz 3 csatornat, majd idonkent betoltod a megfelelo regiszterekbe a Duty-t (pl TMRx IT hatasara). Viszont elony, hogy a PWM freki akar 31,2kHz is lehet 10 bites felbontas mellett. Itt mar nem fogod latni a LEDek villogasat.
(#) gyengus válasza vilmosd hozzászólására (») Ápr 22, 2012 /
 
Most nem kell számolni a dutyt, mert egyezik a szín RGB kódjával. Ezért osztottam 255 részre egy kört.
Tehát, ha a szín kódja: R: 45 G: 150 B: 255, akkor ezek az értékek a megfelelő csatornák dutyjai.
(#) potyo válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
A mozgónak érzékelés és a vibrálás nem egészen ugyanaz.
(#) vilmosd válasza gyengus hozzászólására (») Ápr 22, 2012 /
 
Nem tudom mit kell szamolni. Ugyebar a PWM duty felso 8 bit a CCPRxL regiszterbe toltodik, ami ugye 8 bites. Ez ugye 0-255. Mas dolgod mar nincs is. Beallitod a PWM csatornakat a TMR2 regiszterhez, Beallitod a TMR2 IT-t, es mikor beut az IT feltoltod a 3 CCPRxL csatornat. El is lehet felejteni az egeszet, mar csak az egyes csatornak ertekeit kell valami modon eloallitani, de ez masik kerdes.
(#) gyengus válasza potyo hozzászólására (») Ápr 22, 2012 /
 
Most már tudom...
(#) gyengus válasza vilmosd hozzászólására (») Ápr 22, 2012 /
 
Köszi!

Igazság szerint ebbe még nem mélyedtem bele, de meg fogom nézni.
(#) Pepebá hozzászólása Ápr 22, 2012 /
 
Üdv.
Két esetleg lámának tűnő kérdésem van:
-milyen eszköz létezik I2C LCD használatra?
-milyen szintaktikával lehet a "printf" és " putc" utasításokkal (C18) numerikus változó értékeket kiiratni?
Piccolo projecben outdec() nem használható erre a feladatra ha jól értelmezem, csak USB kapcsolat esetében.
(#) potyo válasza Pepebá hozzászólására (») Ápr 22, 2012 /
 
1. hogy érted az I2C LCD-t?

2. google segít, ezek szabványos C függvények.
(#) Pepebá válasza potyo hozzászólására (») Ápr 22, 2012 /
 
Köszi, közben megtaláltam a függvények használatát.
Az I2C LCD úgy értem hogy a buszon vezérelni az LCD-t, valahol olvastam vannak ilyen eszközök.
(#) svandras0404 hozzászólása Ápr 22, 2012 /
 
Üdv!
Egy kis segitséget szeretnék kérni.
Első alkalommal probáltam 16f1503-at programozni.
Nem jött össze a gond a progi elején a config beállításokkal van.
Sajna kezdőként képtelen vagyok kihámozni a leírásból, hogy mit hogy kell beállítani.
Ha be tudnátok linkelni bármilyen példa progit hozzá, akár csak a config-részt nagyon meg köszönném.
Assembly-ben kellene.
Ha lenne tippetek a 16f1507-hez az is jól jönne.
Előre is köszi.
(#) szaffo555 válasza kissi hozzászólására (») Ápr 22, 2012 /
 
Addig rendben van, hogy az udata_acs, res direktívák használatával csak rellokálható módban lehet a programot fordítani, de ezt honnan lehet tudni, tekintve, hogy sehol nem olvastam ere való utalást? (Vagy csak az én figyelmemet kerülte el...?)

A rellokálható/absolut fordítási mód közti különbséget valaki el tudná magyarázni?
Mikor hasznos az egyik, mikor a másik? Esetleg egy példát is tudna mutatni?
(#) trudnai válasza szaffo555 hozzászólására (») Ápr 22, 2012 /
 
MPLAB Helpjeben benne van ez, az egy nagyon hasznos olvasmany, sokat lehet onnan tanulni.

Roviden:

Az un abszolute modnal kozvetlen adod meg a valtozoid memoria cimet, es emiatt teljesen rad van bizva, hogy melyik valtozot hova teszed.

Relokalhato modban csak azt hatarozod meg mekkora teruletre van szukseged es majd a linker eldonti hova lehet azt elhelyezni. Ennek koszonhetoen ha pl modularis felepitesu programot csinalsz, ahol kulon object file-ok vagy library-kat (konyvtarakat) adsz a projectedhez, akkor a valtozok amiket a modulokban, objectekben, konyvtarakban hasznalnak nem fogjak meg csak veletlenul sem ugyanazt a teruletet hasznalni es ezzel sok fejtorestol kimel meg ez a modszer. De mas elonyei is vannak, pl figyelmeztet ha nem fersz bele a memoriaba. De akar olyat is tud, hogy a kulonbozo fuggvenyek amelyek egy idoben nem kerulnek meghivasra automatikusan ugyanazt a memoria teruletet hasznalhassak anelkul, hogy ez problemat okozna neked, hogy ezzel csokkenthesd a teljes memoria szuksegleted.
(#) szaffo555 válasza trudnai hozzászólására (») Ápr 22, 2012 /
 
Lényegében értem a választ, de az alábbi dolog még nem tiszta:
Ha a
Idézet:
„Relokalhato modban csak azt hatarozod meg mekkora teruletre van szukseged es majd a linker eldonti hova lehet azt elhelyezni”
figyelembe veszem, miért fogadja el a fordító a következő sort?
  1. grup1  udata_acs   0x20

Itt én adtam meg, hogy a Access RAM -ban hol legyen a kezdőcím és nem a linker.
(#) trudnai válasza szaffo555 hozzászólására (») Ápr 22, 2012 /
 
Megadhatod a terulet kezdo cimet (bar felesleges, csak speci esetekben van erre szukseg). Azonban a valtozok cimet tovabbra sem te adod meg. Ez csupan azt a teruletet fogja definialni ahova az ezutan letrehozott valtozoidat fogod elhelyezni. Ezeket is amugy celszerubb az un. linker szkriptben definialni es nem a forras kodban.
(#) szaffo555 válasza trudnai hozzászólására (») Ápr 23, 2012 /
 
Azt hiszem így értem. Tehát pl. 0x20 tól lesz a váltózóim kezdőcíme megadva, de az sem biztos, hogy már elsőt pont ide fogja tenni. Gondolom ha csak 1 object file van, akkor 0x20 -ra kerül.
(#) steve69 hozzászólása Ápr 23, 2012 /
 
Üdv mindenkinek!
Segítségeteket szeretném kérni az IC-prog beállításához
Windows 7 rendszeren az alábbi fájl mellékleten látható
égetőhöz mert igencsak kezdő vagyok.
Köszönettel : István
(#) Hp41C válasza steve69 hozzászólására (») Ápr 23, 2012 /
 
Szia!

A 7405 vagy 74LS05 áramkört vedd ki belőle - alkalmatlan a feladatra. Tegyél a helyére 7406 vagy 74LS06 -ot. Az R6 és R7 a kapcsolt Vcc -re (T2 kollektora) menjen.
Következő: »»   243 / 1210
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