Fórum témák
» Több friss téma |
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
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!
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. Idézet: Na, igen, mert az AND típusú maszkokat használod, az automatikusan 1-be ír mindent, amit nem definiálsz.„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.” É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:
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: Köszönöm, de nem élek vele, nem tudnék mit kezdeni velük. „fel tudok ajánlani pár kiló ömlesztett smd alkatrészt”
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!
Mutasd meg a kódodat, amivel inicializálod. Mekkora ez a szünet százalékban?
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.>>>>
Ü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!
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).
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!
Ü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!
Hali
Tokozas es a homerseklettartomany. Az adatlap mit mond? Abban altalaban minden adat megtalalhato. Udv Vili
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...
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
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!
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ó
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.
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.
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!
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:
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?
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!
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
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...
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.
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!
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.
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.
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!
|
Bejelentkezés
Hirdetés |