Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Számolod a timer megszakításokat, kompenzálod az esetleges hibákat...
De az nem hardveres megszakítás lesz hanem szoftveres. De még az se nagyon, mert a feltétel vizsgálat az időt visz el. Nekem hardveres kell
Nekem megy 20deka 20ezres...
Esetleg ha valaki tudna egy világegyenletet megoldó rutint adni, megköszönném! ASM-ban kéne! ![]()
Hali
A TMR1 IT beutesekor novelek egy szamlalot (vagy csokkentek). Amennyiben be lovod, hogy a TMR1 500 mS IT-t adjon, ezt ketszer veszed, es ott a 1 sec. Persze elooszto hasznalat, TMR1 load. A mellekel program 50 mS IT-t general, es a "it_cnt" szamlalo 20-ig szamol, tehet a szamlalo 1 sec utan fut nullara. Ezt fel lehet hasznalni mint idoalapot. Persze nem pontossaga fugg a kvarc pontossagatol.
Az most nekem nem kell. Jó akkor másképpen teszem fel a kérdést. Egy kvarc alkalmazásával tudok 1 másodperces hardveres megszakításokat generálni, úgy hogy nem KHz nagyságú kvarcot használok?
Igen, tudsz. Pontosan ezt írta watt a 893894-es hozzászólásban, hogy hogyan...
Arra Írtam, hogy az szoftveres. Nekem akor van szükségem az 1 másodperces megszkításra amikor a timer megszakítást generál. Ami mindig időben 1 másodperckor van.
Vagyis két megszakítás között a számláló számolgat addig amíg egymásodpercnyi idő eltellik és ha éppen annyi akkor megszakít.
Hali
Ez a program 4 MHz kvarcnal 524 mS megszakitast general, 2 MHz nel a duplajat. Mar csak a TMR1 load erteket kell kiszamolni. Itt a teljes hosszt szamolja, azaz 65535.
De az ha nekem még vizsgálnom kell, hogy elérte e az értéket. Jön a megszakítás, növelek egy számlálót és megvizsgálom. Az idő tellik. Tehát valódi kvarc frekvenciához hozzáadódik a műveletvégzés ideje. Ezzel csúszik. Ha azonban a kvarc alapján leszámolt impulzusok periódus ideje megszámolva éppen 1 másodperc akkor jön a megszakítás akkor az valódi hardveres. Ekor kell indulni a folyamatnak. Annek végrehajtásáig éppen pontosan egy másodperc idő van. Amit megszakit a hardveres negszakítás ha nem birom befejezni.
Azt tudod, hogy a feltétel kiértékelési ideje mindig ugyanannyi, és két ilymódon indított folyamat között pontosan egy másodperc telik el?
Igen így van. Vilmos a timert miért 15542 vel tölti fel? Nem 15625 kellene? Mert 4MHz/256 =15625
Mivel az IT lekezelese es a TMR1 toltese idobe telik, igy ez az ertek adja ki a pontos 50 ms IT erteket. Egyszeru: forditsd le, es merd meg a futasi idot.
Köszi mindeninek a segítséget, most visszavonulok..
Tiszteletem!
Már jó ideje próbálkozok LCD vezérléssel, de sajnos nem tudok rájönni mi lehet a probléma, már átolvastam minden, itt is, külföldi lapokat is böngésztem, de valahogy nem tudok rájönni mi lehet a baj, biztos bennem van a gond, mert egyszer kétszer sikerült bekapcsolni a kurzort, de azt is csak nehezen és az is csak össze vissza sikerült. Amiket használok PIC16F887 + BC1602B LCD modul A pic lábkiosztása: enable pin -> rc3 rs pin -> rc1 rw pin -> rc2 data4 -> rc4 data5 -> rc5 data6 ->rc6 data7 ->rc7 egyéb lábkiosztás: kontraszt -> ra6 led -> ra7 data1 -> ra0 data2 -> ra1 data3 -> ra2 data4 -> ra3 Még ami fontos lehet lehet, hogy ccs c -t használok. A data1-4-ig, azért van bekötve, mert 8 bites módban is kísérleteztem, mondhatni 0 sikerrel. Lehet, hogy az elméletet nem értettem meg, nem tudom mi lehet a baj, nem tudom még csak bekapcsolni se a kurzort. Egyszer-kétszer sikerült, van egy olyan gyanúm, hogy az időzítéssel lehetett a gond. Amiket próbáltam eddig: 8 bites módban, rw->0, rs->0, data 1-4 -> 1, data 5-8 ->0, enable 0, majd enable 1 és utána vissza enable 0, eredmény semmi. Enable 1 és Enable 0 között késleltetéseket is próbáltam... Próbáltam úgy is hogy enable 1 és utána állítottam be a data1-4-g és utána enable 0 + késleltetéseket itt is próbáltam. Próbáltam volna a ccs c beépített függvényével, 4 bites módban hajtani, úgy se történt semmi. Kezdő pic-es vagyok, nem tudom mi lehet a baj, csatolom a 4 bites próbálkozást. Az LCD-vel kapcsolatosan nem lehet gond, mert kettő is van, addig mindig eljutok, hogy a kontrasztot és a háttérvilágítást be tudom kapcsolni, de csak ennyi. Ha valaki tud kérem segítsen, itt is olvasgattam a fórumot, meg külföldieket is néztem, de nem megy egyszerűen. ![]() Tisztelettel, smith
A CCS PIC Compiler topikban több segítséget remélhetsz. Például az ebben a hozzászólásban található flex_lcd.c egy kipróbált program-modul az LCD kezeléséhez.
Idézet: Csak .HEX-ben van meg, de esetleg tudok adni egy DISASM.EXE-t. „Esetleg ha valaki tudna egy világegyenletet megoldó rutint adni, megköszönném! ASM-ban kéne!” ![]()
Mekkora az a .hex? Felfér az 1T-s winyómra?
![]()
PIC-kwik hibaigazítás: most látom, hogy a common/pic24_uart.c állományban bennmaradt egy korábbi módosításom, ami hibás adatátvitel (frame error) miatti reset-et okoz, ha túl gyorsan jönnek egymás után a beérkező karakterek. A "Cserny" kulcsszóra keresve könnyen megtalálható a módosított sor. Cseréljük vissza az eredetire:
Elnézést kérek a kellemetlenségekért! (A büntetést már megkaptam érte, két estém ráment a hiba megtalálására ![]() Egyébként régóta csorgott a nyálam a TTL-232R-3V3 FTDI kábelért, amit aranyáron mérnek. Most vettem helyette egy ilyen USB-UART átalakítót, ami kellően kompakt, és a soros vonalakon kívül 3,3 V, ill. 5 V tápfeszültséget is ad. Ideális a dugaszolós próbapanelon megépített PIC24 kísérleti áramkörhöz, ráadásul igen baráti áron. CP2102 chip van benne.
Üdvözlet.
Most kóstolgatom a piceket ezért napokban beszerzek egy pickit-ez csak az a kérdés hogy 2 vagy 3 legyen? Mivel tud többet egyik vagy másik vagy melyik éri meg?
A 2 éri meg jobban. Ha rákeresel keresővel és szánsz rá kis időt az olvasásra, láthatod, nagyon sokan kérdezték már pont ugyanezt és nagyon sokszor meg is lett válaszolva.
![]()
Hali!
Nem direktbe van kötve a led. Tranzisztorral van, és a kontraszt előtt is van előtét ellenállás... Bocsi, kimaradt a leírásból.
Idézet: Ennek mi értelme van? Egy 0,5 - 0,6 V közötti potenciál kell neki, vagy szimpla megoldásként egy ~500 ohmos ellenállással földre kell kötni. „a kontraszt előtt is van előtét ellenállás”
Sziasztok! Milyen programban lehetne megnezni hogy mit fog csinalni a PIC-re megirt program? Ha lehet egyaltalan ilyet
![]() Vannak itt .HEX, .COD, .ERR, .A16, .INC és .asm fájlok...
Kipróbáltam a flexes program modult, de így se megy sajna. Mellékelem az átírt programomat.
Üdv.
A leírásod szerint bekötötted az az LCD_RW lábat is!
enable pin -> rc3 rs pin -> rc1 rw pin -> rc2 #define LCD_RW PIN_C2 #define LCD_E PIN_C3 #define LCD_RS PIN_C1 A rutin amit felhasználtál már módosítva volt RW nélküli fix bekötéshez. Az eredeti rutinban még benne volt ez: // If you only want a 6-pin interface to your LCD, then // connect the R/W pin on the LCD to ground, and comment // out the following line. //#define USE_LCD_RW 1 Tehát neked kell még az elejére a #define USE_LCD_RW 1 Hogy az #ifdef USE_LCD_RW ágba be tudjon lépni. |
Bejelentkezés
Hirdetés |