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   114 / 1207
(#) Balagemann2031 hozzászólása Júl 10, 2011 /
 
Sziasztok!

Valakinek nincs valami ötlete arra hogy hogyan írjak számláló progit (0-99), nem jövök rá, hogy hogyan lehetne megoldani, azt hogy multiplex vezérelten váltogassam a számokat (13-14 stb) Magát a mulit vezérlést tudom kezelni...pl ki írtam hogy 13. de nem jutok tovább neten sok megoldást láttam, de túl bonyolultnak tűntek Ha valakinek van tanácsa, annak köszönet!
(#) watt válasza Balagemann2031 hozzászólására (») Júl 10, 2011 /
 
Azt írod a 13-at kiírtad már, akkor 13-at kell növelned és azt kiírnod. Valami hatására növekednie kell, pl. gomb, vagy időzítés. Kicsit részletesebben leírhatnád melyik résznél akadtál el! A nyelvet is írd meg, amiben próbálkozol!
(#) Balagemann2031 válasza watt hozzászólására (») Júl 10, 2011 /
 
Üdv!

Mellékeltem, az általam írt progit, mint látható asm.
Ez egy nagyon kezdetleges megoldás, és szerintem így ahogy van zsákutca A cél az lenne hogy pl másodparcenként léptesse a számokat)

dfh.png
    
(#) watt válasza Balagemann2031 hozzászólására (») Júl 11, 2011 /
 
Idézet:
„Magát a mulit vezérlést tudom kezelni...”
Ez multiplexelt kijelzés?
A rajzot is tedd fel, nélküle nem értelmezhető a program, nem tudunk kiindulni.
(#) bbalazs_ válasza Balagemann2031 hozzászólására (») Júl 11, 2011 / 1
 
Valoban zsakutca, de mivel ez a pic kezdoknek, megis van megoldas.
Ahogy latom, a portb-n vannak a kijelzo szegmensei.
Ahogy te is latod, te egy fix erteket irsz bele.
Ehelyett hasznalj egy valtozot, amit a legelejen, a cikluson kivul feltoltesz, majd menet kozben, valamekkora sebesseggel noveled.
Ez a multiplex ciklus vegen lehetne, ahol mondjuk egy 16 bites szamlalot hajtasz, minden ciklusban csokkented az erteket es ha lenullazodott, akkor ujbol feltoltod eredeti ertekre es lepteted a valtozod erteket.
Mivel a valtozod maga a szam lesz hexakodban, azt majd at kell alakitanod, erre jo lenne egy tablazat. Mivel itt 16F-rol van szo, csak a retlw johet szoba, de mivel osszesen 16 elemu a listad, ezert nem lesz nehez. Csak a rutint az elejere tedd.
Mivel a multiplex idoerzekeny, ezert csak valtaskor erdemes az egesz tablazatos cecot megcsinalni.

Vagyis igy nez ki majd a progi:
- valtozo inicializalas
- szamlalo mondjuk 43000-re
- valtozok tablazatbol a kijelzendo szam1 es szam2 ertekre
FOCIKLUS:
- szam1 kiirasa
- valtas
- szam2 kiirasa
- valtas
- 16 bites szamlalo csokkentese, ha nem 0, akkor goto FOCIKLUS
- szamlalo ujra 43000-re
- a valtozo novelese,
- valtozok tablazatbol a kijelzendo szam1 es szam2 ertekre
- goto FOCIKLUS


Egyebkent interruptban kellene csinalni. Kezdokent is jo lenne, ha hamar megismerkednel az interrupt fogalmaval.
(#) Balagemann2031 válasza bbalazs_ hozzászólására (») Júl 11, 2011 /
 
Szia!

Köszi, a részletes leírást! Kipróbálom így...És megtanulom az interruptot... Egyébként a megszakítás rutinba (org 4-hez) kell írni a digit váltásokat?
(#) bbalazs_ válasza Balagemann2031 hozzászólására (») Júl 11, 2011 / 1
 
Tulajdonkeppen kicsit eloreszaladtal, de majd igen.
Ugy fog tortenni, hogy egy belso szamlalot (timer) felprogramozol a foprogramban, hogy megszakitast okozzon minden x. milliszekundumban (pontosaban y db orajel utan). Ilyenkor a foprogram felbehagyja a mukodest es elugrik a megszakitasvektor altal jelzett helyre.

Maga a megszakitas ugy fog kinezni, hogy eloszor is azonositod, hogy a timer okozta-e a megszakitast, ha nem, siman visszatersz.
Ha o okozta, akkor ujra felprogramozod es inditod megint.
Utana megnezed, hogy eleg ideig volt-e kint az egyik digit, ha igen, valtasz a kovetkezore, ha az utolso volt, akkor ujra az elejere. Tehat ezt a fajta interruptot ugy kell felfogni, hogy ez veletlenszeruen megszakitja a foprogram mukodeset, elvegzi a dolgat, aztan visszater a foprogramhoz. Mindezt a te foprogramod latszolag eszre sem veszi, ha nem toltesz el tul sok idot interruptban. pl. az interruptban a sima keslelteto ciklus szigoruan tilos, helyette erdemes egy masodlagos szamlalo valtozot hasznalni, szamolod, hogy eddig hanyszor ugrott ide es ha ez meghalad egy erteket, akkor valtasz mondjuk egy ledet.
Meg persze nullazod a szamlalot. En mindig beteszek egy ilyen kis ledvillogtatast valamelyik timerre, hogy lassam, fut-e meg a megszakitas. Megnyugtato
(#) zsoltee0001 hozzászólása Júl 12, 2011 /
 
Sziasztok

Kristály oszci (4Mhz) hibával találkozott már valaki?
Alapból megy szépen a PIC, de nagy melegbe behülyül, leáll.
Cseréjével megoldódott a probléma.
Mi tud ezen tönkremenni?
Üdv
(#) Hp41C válasza zsoltee0001 hozzászólására (») Júl 12, 2011 /
 
Szia!

A 4MHz egyes típusoknál a HS és az XT oszcillátor módok határára esik. Ki kellene próbálni mind a két móddal.
(#) zsoltee0001 válasza Hp41C hozzászólására (») Júl 12, 2011 /
 
Szia

A program nem átírható sajnos.
Az oszci cseréjével megoldódott a probléma.
Üdv
(#) trudnai válasza zsoltee0001 hozzászólására (») Júl 12, 2011 /
 
Kondik valtoztatasaval probalkoztal mar? Soros ellenallassal esetleg? Mindegyik kristaly mas es gyartotol is fugg, hogy milyen kondikkal es ellenallassal jo az illesztes az oszci fele.
(#) zsoltee0001 válasza trudnai hozzászólására (») Júl 13, 2011 /
 
Szia
Ez egy gyári áramkör, nagy melegbe voltak vele gondok, ha hőlégfúvóval közelítek a kristályhoz leáll a PIC, majd kihűlés után újraindul, egy ugyanolyan tipusú kristály cseréjével megoldódott.
A kérdésem csak annyi, mitől tud tönkremenni ilyen értelembe egy kristály?
Találkozott-e valaki ilyen jellegű hibával?

Üdv
(#) bbalazs_ válasza zsoltee0001 hozzászólására (») Júl 13, 2011 /
 
Valoszinuleg nem a kristaly ment tonkre, hanem a hozzavezetes. Ha meleg van, bimetallkent eltartja magat onnan. HIdegben ujbol erintkezik.
(#) kormika hozzászólása Júl 17, 2011 /
 
Sziasztok! Eléggé kezdő vagyok még a PIC-ek terén, éppen egy körszámlálón dolgozom a modellautómhoz, odáig minden stimmel, hogy figyeli a pic az egyik bemenetet, és egy változóhoz mindig hozzáad egyet, de ez ugye binárisan megy, az is ok, hogy kirakom a bináris számot a portra, de én ezt a számot szeretném hétszegmenses kijelzőkre kiíratni, de itt megakadtam, hogyan tudom ezt elérni? Segítsetel PLS
(#) vicsys válasza kormika hozzászólására (») Júl 17, 2011 /
 
Tegyél a portra egy BCD/7 szegmenses dekoder IC-t és kész.
(#) kormika válasza vicsys hozzászólására (») Júl 17, 2011 /
 
Igen, ez kézenfekvő lenne, de mivel az áramkör másik célja a tanulás, szeretném ezt a dekódolást szoftweresen megoldani.
(#) vicsys válasza kormika hozzászólására (») Júl 17, 2011 /
 
Na akkor nagy vonalakban a mátrix:
Kiteszed a szám 7 szegmensre átalakított kódját a portra. Ezután rögtön bekapcsolod az adott digit meghajtó tranyóját. Ekkor világít a kijelződ. Ezt 2...10ms-ig hagyod majd lekapcsolod a digit meghajtást. Kiteszed a következő számjegy kódját a portra és bekapcsolod a következő digitet, és így tovább...
Nálam a 7 szegmens kódja egy tömbben van letárolva és onnan hívogatom.
(#) kormika válasza vicsys hozzászólására (») Júl 17, 2011 /
 
A mátrixolás részse is tiszta a dolognak, ha nagyvonalakban felvázolnád ezeknek a tömböknek a lényegét, és mikéntjét azt nagyon megköszönném, mert a pic programozásnak ezen a terén még láma vagyok.
(#) kormika válasza kormika hozzászólására (») Júl 17, 2011 /
 
Keresgéltem neten, és a tömbök már tiszták, abban viszont, még kellene egy kis segítség, hogy miként tudom azt eldönteni, hogy mikor melyiket kell meghívnom, magyarul: hogyan tudom "megnézni", hogy mennyi a változó értéke, hogy éppen melyik tömböt kell meghívnom? Ha nagyon hülye vagyok akkor sorry, de nekem ez a része most tényleg nem tiszta.
(#) MPi-c válasza kormika hozzászólására (») Júl 17, 2011 /
 
Annyi jó cikk van a HE-n, amit idejüket nem kímélve írtak lelkes fórum tagok. Te se sajnáld az időt és először ezek között keresgélj! Érdemes. Bővebben: Link
(#) kissi válasza janikukac hozzászólására (») Júl 18, 2011 /
 
Az AD átalakítóval be kell olvasnod a poti értékét és ennek az értéknek a függvényében kell állítanod a késleltetést!
De ne kapkodj: először LED villogtatás, késleltetés megértése, AD átalakítás próbálása és utána a kettő "összegyúrása" --> így fogod megérteni, hogy mi mit csinál és hogyan tudod befolyásolni a működést!

Steve
(#) janikukac válasza kissi hozzászólására (») Júl 18, 2011 /
 
A késleltetést értem, csak a parancsokat nem igazán vágom még..
(#) kissi válasza janikukac hozzászólására (») Júl 18, 2011 /
 
Ezért írtam, hogy ne kapkodj! Hidd el mindenkinek nagyon sok órájába telik, mire (meg)tanul programozni, Te még csak most kezdted és szépen haladsz, van benned elszántság, csak az alaposság és a türelem is nagyon fontos programozói tulajdonság, így erre is "gyúrjál" !

De lassan már "offolunk", így csak ha van kérdésed, akkor beszélgessünk!
Steve
(#) janikukac válasza kissi hozzászólására (») Júl 18, 2011 /
 
Okés, jön a kérdés! Na, tehát, honnan tudom megszerezni a parancsot amit kell használnom, meg stb. ami kell most?
(#) janikukac hozzászólása Júl 18, 2011 /
 
Sziasztok ! Vanegy kérdésem: Hogyan oldható meg, hogy a stroboszkópomba beépítsek egy potit, amivel a villogás sebességét le tudom szabályozni?! A forrás:
Idézet:

„ #include "C:\PIC programozasaim\stroboszkop\strobika.h"


void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_4MHZ);

while(1)
{
Output_high (PIN_A5); //A portA 5-ös kimenete legyen H szintű
Delay_ms(40); //Várakozz most 40ms-ot és nincs feladat
Output_low (PIN_A5); //A portA 5-ös kimenete legyen L szintű
Delay_ms(40); //Várakozz most 40ms-ot és nincs feladat
}
}



Na, tehát, honnan tudom megszerezni a parancsot amit kell használnom, meg stb. ami kell most?
(#) vicsys válasza janikukac hozzászólására (») Júl 18, 2011 /
 
A delay -nél az értéket egy változóban tárold. Ha az már megy, jöhet az A/D feldolgozás. Szólj ha jutottál valamire.
(használd a kód gombot vagy tedd be csatolt fáljba a C forráskódot)
(#) janikukac válasza vicsys hozzászólására (») Júl 18, 2011 /
 
A változók előtt mindig a % jel áll, akkor hogyan írjam ki?!
Idézet:


int a=40
%a

Valami ilyet olvastam..



[OFF] Ui: levelem megkaptad?
(#) vicsys válasza janikukac hozzászólására (») Júl 18, 2011 /
 
Megkaptam.
Azt a magyar nyelvű C könyvet nem akarod elolvasni, amit linkeltek? Abban feketén fehéren le van írva a változók használata. (% jel az osztás tört részét adja vissza)
(#) janikukac válasza vicsys hozzászólására (») Júl 18, 2011 /
 
Akkor majd segítesz priviben ha lesz időd?

De, elakarom, de olyan hosszú , mint a kutya farka.
(#) kissi válasza janikukac hozzászólására (») Júl 18, 2011 /
 
Idézet:
„De, elakarom, de olyan hosszú , mint a kutya farka.”
És ez még csak a bemelegítés... írtam, hogy sok munkát jelent!

Steve
Következő: »»   114 / 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