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   71 / 1203
(#) Amjad válasza icserny hozzászólására (») Aug 12, 2010 /
 
Helo
Az első észrevételed volt a bűnös. Nem volt elég, hogy kitöröltem a Timer Interrupt engedélyezését, le is kellett tiltani azt.
Köszönöm a segítséget.
(A sok segítségért cserébe fel tudok ajánlani pár kiló ömlesztett smd alkatrészt
(#) Atielektro válasza Hp41C hozzászólására (») Aug 12, 2010 /
 
Idézet:
„RCIF, TXIF programból így nem törölhető.”

A figyelmetlenség...Mivel nem egyszerre írtam a programot, azt a részt elfelejtettem kitörölni a főprogramból. A megszakításban már nem is erőltettem a flag bit törlését.

Idézet:
„Nem a TXSTA,TRMT bitjét kell vizsgálni, hanem a PIR1,TXIF -et, a karakter beírásakor automatikusan törlődik”

Az miért baj, hogy én a TRMT bitet figyelem? Így nekem akkor megy tovább a program, ha már kiléptette az adatot a lábon, nem csak beíródott az adat a shift-regiszterbe.

Egyenlőre a hibavizsgálatot nem akarom belekeverni, mert csak plusz hibalehetőség. Ha hiba történik, akkor az úgyis meglátszódik a PC-nek küldött adatban, de majd azért utána nézek, hogy hogy is van ez.
Amúgy köszi mindkettőtöknek a észrevételeket, segítséget!
(#) Hp41C válasza El_Pinyo hozzászólására (») Aug 12, 2010 /
 
Szia!

A PIR1,TXIF azt jelzi, hogy az adó buffere üres, megszakítás csak akkor lesz belőle, ha a PIE1,TXIE engedélyezi...
Ha nem kezeljük a kérését, akkor nem kell vizsgálni. Ellenben, ha csak időlegesen nem engedélyezett, akkor azt is kell vizsgálni, hogy most engedélyezve van-e. Az ok jelző bitek (pl. TXIF) aktívak lehetnek, akkor is, ha a hozzájuk tartozó engedélyező bit 0.
(#) icserny válasza Amjad hozzászólására (») Aug 12, 2010 /
 
Idézet:
„Helo Az első észrevételed volt a bűnös. Nem volt elég, hogy kitöröltem a Timer Interrupt engedélyezését, le is kellett tiltani azt.”
Na, igen, mert az AND típusú maszkokat használod, az automatikusan 1-be ír mindent, amit nem definiálsz.

Én a #define USE_OR_MASKS után VAGY kapcsolattal állítom össze a paramétereket, ebben az esetben a 0 lesz a default. Például így:
  1. //-- Timer2 konfigurálás 200 Hz-es (5 ms-os) periódikus megszakításra
  2.         PR2 = 249;              //periódus regiszter beállítása (250 - 1)
  3.         OpenTimer2(TIMER_INT_ON | T2_PS_1_16 | T2_POST_1_15 );


Mindkét megoldásnak van hátránya. Az OR maszkok használatának pl. az, hogy külön definiálni kell a fenti szimbólumot. Orbitális szívás volt, amikor tévedésből lemaradt a végéről az 'S'. (Így írtam: #define USE_OR_MASK). Nem szólt egy szót sem a fordító, csak az AND maszkokat használta, én meg nem értettem, hogy mi a baj (ugyanis "majdnem" jól működött a dolog, csak a frekvencia nem stimmelt...).
Idézet:
„fel tudok ajánlani pár kiló ömlesztett smd alkatrészt”
Köszönöm, de nem élek vele, nem tudnék mit kezdeni velük.
(#) buszkiraly hozzászólása Aug 15, 2010 /
 
Sziasztok! Szeretnék egy kis segítséget kérni. Egy pic24fj64ga002-t szimulálok proteusban és ha a pwm kitöltési tényezőjét maxra állítom a kimenet akkor sem folyamatosan van magas szinten, hanem van egy adott ideig fennálló szünet, tehát a kitöltési tényezőt 0-(max-ez a szünet) tartományban tudom csak változtatni. Mi okozhatja ezt? Köszi előre is!
(#) potyo válasza buszkiraly hozzászólására (») Aug 15, 2010 /
 
Mutasd meg a kódodat, amivel inicializálod. Mekkora ez a szünet százalékban?
(#) buszkiraly hozzászólása Aug 15, 2010 /
 
A szünet kb 10%.
#include

void main(){
int adr1,adr2;
int adr1_,adr2_;
int hatra1=0,hatra2=0;
TRISB=0x8000;
T3CON = 0x8000;
TMR3=0;
PR3 = 511;
_T3IF = 0;
_T3IE = 1;

RPOR0=0x0012;
RPOR1=0x0013;
OC1CON = 0x000E;
OC2CON = 0x000E;

AD1PCFG = 0x0000;
AD1CON1 = 0x00E0;
AD1CSSL = 0;
AD1CON2 = 0x6000;
AD1CON3 = 0x1F04;
AD1CON1bits.ADON = 1;

AD1CHS = 0x0009;

while(1){
AD1CON1bits.SAMP = 1;
while (!AD1CON1bits.DONE);
adr1=ADC1BUF0;
adr2=ADC1BUF0;

if (adr1<511) adr1_=511-adr1;
else adr1_=-(511-adr1);
if (adr2<511) adr2_=511-adr2;
else adr2_=-(511-adr2);

if (adr1<511) hatra1=1;
else hatra1=0;
if (adr2<511) hatra2=1;
else hatra2=0;

if ((hatra1==0) && (hatra2==0)) PORTB=0x0000;
if ((hatra1==1) && (hatra2==0)) PORTB=0x0002;
if ((hatra1==1) && (hatra2==1)) PORTB=0x000A;
if ((hatra1==0) && (hatra2==1)) PORTB=0x0008;

OC1RS=adr1_;
OC2RS=adr2_;


}
}

egy potival állítom a fordulatszámot és egyben az irányt is, úgy, hogy ha a magasabb szinthez van közelebb az a/d lábon levő fesz akkor előre, ha a földhöz van közelebb akkor hátra forog.>>>>
(#) mhatalyak hozzászólása Aug 18, 2010 /
 
Üdv! Még sosem volt dolgom PIC el. Annyit tudok róluk, hogy kell nekik egy égetőt építeni, az menni fog. Kezdésnek EZT a fordulatszámmérőt szeretném megépíteni. Annyi segítséget szeretnék kérni, hogy milyen PIC égetőt építsek(kapcsrajz jólenne), illetve még azt nem tudom, hogy milyen progival kell a hex file-t beleégetni. Honnan tudom letölteni?

Köszönöm a segítséget előre is!
(#) zenetom válasza mhatalyak hozzászólására (») Aug 18, 2010 /
 
A PICKit2 a legjobb, én is azt csináltam meg. Csak vigyázni kell a FET-ekre, mert könnyen kicsinálódnak (sztatikus kisülésre nagyon hamar tönkremennek).
(#) mhatalyak válasza zenetom hozzászólására (») Aug 18, 2010 /
 
Köszi, utána járok!
(#) zenetom válasza mhatalyak hozzászólására (») Aug 18, 2010 /
 
A PICKit2 klón építése topikban sok hasznos infót találsz, az újabb hozászólásokat nézd, igaz elég sokat írtak már oda, de ha van türelmed, átolvasol egy pár oldalt és könyebb lesz, ha adódik valami probléma.
Programnak pedig szerintem a Microchip cég PICkit2 programja tökéletesen megfelel, bár ha valamilyen nyelven programozol, akkor azzal is be tudod égetni a progit (pl. MPLAB).
Vannak egyszerűbb programozók is, LPT, COM portra, de ezek annyira bizonytalanul működnek, és kevesebb PIC-et támogatnak. Viszont a PICkit2-ben is egy felprogramozott PIC van, szóval azt is fel kell valamivel programozni, én ehhez csináltam meg ezt: WLPT Vpp mini v4 PIC programozó , ami nálam nem is akart működni, viszont haveromnál igen. Bár ha ezt megcsinálod, és működik, akkor felmerülhet benned a kérdés, hogy minek építsd meg a PICkit2-t. Amire a válasz az, amit előbb is írtam, hogy a PICkit2 sokkal rugalmasabb.
Apropó, ha ezt a "WLPT Vpp mini v4 PIC programozó"-t csinálod meg, akkor ne felejtsd el a PIC lábánál a Vdd és az MCLR láb közé rakni egy 10k-s ellenállást!
(#) Jason01 hozzászólása Aug 18, 2010 /
 
Üdv!
16f917 es PIC-et szeretnék rendelni, de több fajtája van:E/ML; E/P; I/P; I/PT STB... Ezek mit jelentenek? Előre is kösz!
(#) vilmosd válasza Jason01 hozzászólására (») Aug 18, 2010 /
 
Hali
Tokozas es a homerseklettartomany. Az adatlap mit mond? Abban altalaban minden adat megtalalhato.
Udv Vili
(#) Hp41C válasza Jason01 hozzászólására (») Aug 18, 2010 /
 
Szia!
E - Extended tempereature range,
I - Industrial tempereature range,
P - DIP tok - 20 lábig 300, felette 600 mil távolsággal,
SP - DIP tok - 28 láb 300 távolsággal,
PT - Plastic Thin Quad Flatpack tok.

Egyébként ld. adatlap 21. fejezet...
(#) Jason01 válasza Hp41C hozzászólására (») Aug 18, 2010 /
 
Köszönöm a válaszokat, így már érthető
(#) chaos89 hozzászólása Aug 20, 2010 /
 
Sziazsztok, egy kis segítséget kérnék.

Nem rég kezdtem Pic-el foglalkozni. Nem találom az alábbi programba a hibát. (csatolva ccs c)


PIC 16f628-t használok.
A program 4 rgb ledet fog majd villogtatni, sok effektel. Az effektek között int/rb0 lábra történő interruptal váltok egy nyomógombal. A nyomógomb egy tranzisztoron keresztül van rákötve a lábra, és gombnyomásra magas szintre ugrik.

3 "effekt" van eddig beprogramozva. A dolog érdekessége, hogy az interrupt minden probléma nélkül érvényrejut az első effekt alatt(többször is akár), de amint a következő effekten van már soha.
Mégpedig úgy, hogy egyszerűen a tranzisztor hiába ad 5 v-t, mégis az int láb 0-ra hozza le, holott az bemenet.

A fordító dob egy warningot:
interrupts disabled during call to prevent re-entrancy

Ez ugye azt jelenti, hogy minden függvényhíváskor a interruptokat disable-re állítja.

Köszi a segítséget

rgbledek.c
    
(#) MPi-c válasza chaos89 hozzászólására (») Aug 20, 2010 /
 
A belső felhúzást engedélyezted a B porton - tehát annak bemenetei alapból magasan lesznek -, a megszakítást felfutó élre állítottad és a gombnyomás magas szintet ad. Ezt az ellentmondást oldd fel! Kapcsold ki a belső felhúzást, az int bemenetet pedig egy ellenállással húzd le vagy másik megoldásként a gombnyomás húzza le a bemenetet. Pergésmentesítésről ne feledkezz meg!
(#) chaos89 válasza MPi-c hozzászólására (») Aug 20, 2010 /
 
A felhúzásokat kikapcsolom, és rakok rá lehúzó ellenállást, ugyanakkor, a felhúzás már egy x-edik próbálkozás anélkül sem ment. Elfelejtettem mit jelent, és valahol láttam, azért kapcsoltam be, persze belátom hogy hülyeség. De anélkül sem megy. Illetve az első effektben továbbra is megy a megszíktás.


a kapcsolót innen loptam.

kapcsoló
(#) vicsys válasza chaos89 hozzászólására (») Aug 20, 2010 /
 
Nos, az a tranyó a kapcsolónál nem kell. Nem is értem minek oda... Az RB0-t felhúzza a 10k és a kapcsoló meg le. Tehát a megszakításnál neked H to L kellene és p=!input_a();
A megszakításban pedig nem illik 2mp-es delayt tenni.
(#) chaos89 válasza vicsys hozzászólására (») Aug 20, 2010 /
 
Egy korábbi projectem során csak egy felhúzó ellenállás volt, meg egy kapcsoló földre, de nagyon furán viselkedett, volt amikor nyomogattam és nem reagált, stb, ezért gondoltam hogy egy működő kapcsolásról szedek le valamit.

Bár ennél a szoftvernél még nem használtam, ezért kipróbálom, de nem hiszem hogy ez a baj. Mivel akárhányszor nyomom meg az első effekt alatt a megszakítást, mindig pöcre megy, ahogy mennie kell. Olyan mintha szoftveres lenne a baj, de nem értem hol.

Jah és egy érdekesség. Amikor multiméterrel méricskélek, hogy mi a helyzet, anélkül hogy véletlenül földelném, csak ha a multiméter eggyik dugójával hozzáérek a lábhoz, megszakításba ugrik. Nem azonnal, van hogy hozzá kell érintenem többször is. És amikor eljutok újra az első effekthez, ott gombnyomásra is megy.
Nincs szakadás már órák óta csinálom,kipróbáltam mindent

A delay-t majd törlöm, csak azért van benne, hogy tudjam belépett a megszakításba. Talán nem ez a baj.
(#) MPi-c válasza chaos89 hozzászólására (») Aug 20, 2010 /
 
Nos, a tápszűréssel is gondok lesznek. Ha a linkelt kapcsolást másoltad, akkor valószínűleg ezt pótolnod kell. Tegyél a PIC táplábai közé egy 100n-os kondit!
(#) chaos89 válasza MPi-c hozzászólására (») Aug 20, 2010 /
 
A kapcsolásom nem teljesen ez azért. Csak ebből indultam ki.A tápfeszem stabil szűrt 5 volt. Egyébként módosítottam a 2. effektet, hasonlóra mint az első, és megy, a harmadikat meg erre változtattam:

  1. enable_interrupts(INT_EXT);
  2. enable_interrupts(GLOBAL);
  3. output_b(0);
  4. output_a(0xff);
  5. delay_ms(100);
  6. output_a(0x00);
  7. delay_ms(100);
  8. output_b(0xff);
  9. delay_ms(100);
  10. output_b(0x00);
  11. delay_ms(100);


A különbség az eredetivel, itt foglalkozom a b portal is(ahogy a másik 2 effektben is) és érdekes módon az interrupt a 3. effektnél is működik már. Tehát az hogy nem működik valahogy a b port-írás olvasásával függ össze. Pedig ez nem élvezérelt megszakítás, hanem int0, szóval nem értem.


Jah egy kérdés. Sajnálattal tapasztaltam hogy az RA4 es portom nem akar működni. Pontosabban harmad-negyed annyi feszültséget mérek rajta(1 V) (PWM, és max 2/3 ig megy a kitöltöttsége a jelnek, szóval a 3v az a normális, többin ennyit mérek) De az ra4 nem. Tönkrement, vagy van valami amit tenni lehet?
(#) MPi-c válasza chaos89 hozzászólására (») Aug 20, 2010 /
 
Jó lenne látni egy kapcsolási rajzot is, mert én továbbra is azt sejtem, hogy nincs 100 n-os kondi a táplábak között - te sem írtad, hogy van-e - és az adatlapot sem nézted meg jól az RA4-gyel kapcsolatban!
(#) chaos89 hozzászólása Aug 20, 2010 /
 
Nincs rajz, mert eléggé egyszerű:

Notebooktöltő 18,9 V -> 1N4007 dióda -> 78l05

feszültségszabályzó előtt 100uF, 2 x 330 nF, utána 100nF 47uF

RA6,RA7 lábon 16 mHz kvarc, lábai 2x 22pf-al földelve.

RB0 megszakításra kötve van az alábbi kapcsoló (csatolt kép)

4 RGB led, egyenlőre mind plusz erősítés nélkül, (lehet hogy ez a baj???) de úgy gondolom a lábaknak 1-1 ledet el kéne bírni. és mindegyik lábra 270 ohm


RA0,RA1, RA2 --1. led

RA3, RA4, RB7 --2. led

RB1,RB2,RB3 -- 3. led

RB4, RB5, RB6 -- 4. led

kapcsolo.jpg
    
(#) MPi-c válasza chaos89 hozzászólására (») Aug 20, 2010 /
 
Harmadszor írom, hogy tegyél egy 100nF-os kondit a PIC táplábaihoz közvetlenül. Ez a hidegítő kondi oda kell! Visszatérő, kezdő hiba, hogy ezt elfelejtik. A másik szintén visszatérő hiba, hogy nem olvassák az adatlapot. Nézd meg mit ír a RA4-es lábról, ha kimenet!

Ui: vicsys javasolta, hogy azt a tranzisztort hagyd el, egyszerűen köss egy kapcsolót az RB0-ra úgy, hogy megnyomáskor húzza le az RB0-át...
(#) chaos89 válasza MPi-c hozzászólására (») Aug 20, 2010 /
 
Az RA4-t most vettem észre. Olvasgatom az adatlapot, de átsiklott az opendrain kimenet felett a tekintetem. Elnézést kérek emiatt, de ez valszeg az álmosságnak tudható be.


Bocsi, hogy belém kell verned a kondit, de mivel a 78l05 után van kondi föld és az 5V közt, és utána csak 1-1 vezeték megy a vdd-re, vss-re nem gondoltam, hogy kéne a pic táplábaira is elvégre elméletben ugyan az. Ezek szerint zaj, meg feszültségesés miatt a vezetéken, -gondolom-, és hát erre nem gondoltam eddig, ezért nem értettem mit mondasz.

Nagyon köszönöma válaszodat, és a türelmedet.
(#) MPi-c válasza chaos89 hozzászólására (») Aug 20, 2010 /
 
OK!
Először az áramköröd tedd rendbe, utána jöhet a program.
Szerintem szervezd át a kimeneteket, gondolkozz el azon, kell-e a kvarc vagy elég a belső oszcillátor!
Még egy dolog. Kapcsolót pergésmentesíteni!
Na meg, olvasni, olvasni!
Jó munkát! Üdv!
(#) icserny válasza chaos89 hozzászólására (») Aug 21, 2010 /
 
Digitális elektronikában elég elemi dolog, hogy MINDEN IC-re, amelyben logikai kapuk vannak, tenni kell egy-egy (~100 nF) kondit. Nem a tápegységet szűri, hanem a saját maga által keltett negatív tüskéket hidalja át.
(#) El_Pinyo válasza icserny hozzászólására (») Aug 21, 2010 /
 
Ez az egyik ok, a másik pedig az, hogy a CMOS technológiával gyártott eszközöknek van egy hátrányos tulajdonsága, mely a gyártástechnológiából adódik. Az eszközben a táplábak között a gyártás során bekerül egy parazita négyrétegű félvezető is (Triac), mely a nagy dU/dt értékre (gyors felfutású táp) hajlamos begyújtani, így gyakorlatilag rövidre zárja a tápot, és az IC-t tönkreteszi. Ezt a dU/dt értéket csökkenti a táplábak közötti kondenzátor. Azt nem tudom, hogy ez manapság mennyire számottevő, de korábban az volt. Előfordulhat, hogy ezt a gyártási technológia fejlődése során már sikerült kiküszöbölni, erről sajnos nincs információm.
(#) LGS94 hozzászólása Aug 23, 2010 /
 
Sziasztok! El szeretnék kezdeni PIC-elni egyrészt azért mert érdekel ez az egész PICelés mert ez már egy komolyabb dolog nem csak annyi, hogy megípíted nyákrajz alapján meg kapcsolás hanem ezeket programozni kell! Másrészt azért mert van pár PIC-es cuccom és többet akarok belöllük csináli ezeket felprogramozva panellal alkatrészekkel együtt vettem! De hallottam olyat, hogy ezeket a PIC-eket le szokták zárni és nem lehet kiolvasni belölle és aztán egy új PIC-re feltölteni ez igaz és ha le van zárva akkor esetleg valahogy fel lehet törni vagy képtelenség? Valaki tudna adni linket amiben benne van az alapoktól kezdve minden a PIC-el kapcsolatban, mert ami az oldal elején van azt már nem lehet megnyitni?!Köszi!
Következő: »»   71 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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