Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszönöm a türelmeteket és a tanácsokat!
Átírtam a programot! Most indul elsőre az elemmel is! Az RBIE megszakítást töröltem egyellőre! Beírtam a megszakítás programrészbe a Status mentését és a végére a visszaállítását úgy ahogy az adtlapban van. Szerinted így jó lesz? Mégis valami miatt lefagy amikor meghívódik a megszakítás. A hardverről annyit hogy az RB0 lábon egy hall jeladó van és amikor odaér a mágnes a hall elé akkor ad egy logikai 1-est. Az RB1 lábra tettem a napi km nullázó gombját amit ha megnyomok akkor az RB1 re logikai nulla kerül. Az RBIF flag csak akkor áll be ha RB7-RB4 en van szintváltozás? Az RB1-re nem? A megszakításba beírtam egy olyat is hogy figyelje honnan jött a kérelem. Szerinted ez így jó lesz?
Mekkora marha vagyok hát elírtam az egyik regiszter nevét a mentésnél PCLATH_TEMP helyett PCLATH ot írtam.
Mostmár működik, indul elsőre méri a távolságot és ha benne lenne az órakvarc akkor a sebességet is mérné valószínűleg! Már csak ezt a nullázó gombot kell megoldanom! Maradhat az RB1 lábon vagy át kell kötnöm az RB7-RB4 közül valamelyikre? Vagy ha csinálok egy olyat hogy az elején letiltom az RBIE megszakítást aztán az INIC ek végén vizsaengedélyezem akkor működhet akár az RB1 en is?
Az RBIE csak az RB4-RB7 bemenetek változása esetén váltódik ki, ha engedélyezve van. Ha a gombot megszakításosan akarod kezelni, és az RB1-re van kötve, akkor át kellene kötni RB4-RB7 közül valamelyikre.
A megszakításban a kiváltó okot jelző bitek szerint szét kell ágazni, jobban mondva azt a programrészt, ami a nem aktív megszakítást kiváltó állapotbithez tartozik, azt át kell ugrani. Minden típusú megszakítást a saját módján kell lekezelni (adatlap). A megszakításban nem kell állítgatni a GIE bitet!
Sziasztok!
Mi a véleményetek arról, hogy ki lehet-e égetni egy PIC16F628A-t egy olyan programmal, ami egészlépéses léptetőmotorhoz van írva, miközben a motor viszont csak féllépéses üzemmódban hajlandó elindulni, egészlépésben csak áll és a PIC kezd el izzadni! A programozó tuti megy (igaz, hogy egy 60cm-es Iomega ZIP drive kábelhez csatlakozik az Oshon féle égetőm, az égetőhöz meg 2m-es árnyékolt riasztókábelen keresztül csatlakozik a céláramkör, de kíválóan megy)! A PIC 2MHz-es kristállyal van hajtva 2x22pF kondival GND-re húzva, és 10Kohm-on át +5V VCC-re kötött MCLR-rel üzemel(vagy nem)!
Nekem nem is igazán tiszta amit írsz! Milyen léptető az ami nem indul el egész lépésben? Ilyenről még nem hallottam. Mit jelenet az, hogy kiégetni? Ha egy PIC kiég, akkor sanszos, hogy a lakás is! Nem inkább beégetni? Mellesleg mi az, hogy a PIC izzad? Ugye nem közvetlen a PIC lábairól hajtod a motort? Milyen motor? Kicsit többet mondj!
Ja látom a pic lábairól közvetlen! Ezt felejtsd el, vagy legalább védődiódát használj! Nagyon hamar meg fog feküdni az a pic!
Most értem ide... A megszakításokban már jól mentesz, ez rendben. Valahogy a megszakítás forrását is azonosítod, csak kicsit kusza. Tudom, hogy első körben a működés a fontos, de próbáld meg megfésülni az egészet, hogy jobban áttekinthető legyen számodra is. Érdemes a forrásokhoz külön részeket elkülöníteni és megjegyzésekkel jelölni a kezdeteket. Az ellenőrzés(BTFSS intreg,xxF) a rutin elején legyen, és ha nem az a forrás szakított meg, akkor goto a következő ellenőrzésre, és így tovább láncolva. Ha több megszakítás is bejöhet egyszerre, akkor azt kell előrébb tenni a láncban, amelyik fontosabb.
Nem muszály a nullázót megszakításban lekezelni, de ott is lehet, csak akkor át kell kösd. Szilva a többit megválaszolta.
Nem közvetlenül hajtom természetesen , van beiktatva egy L702B unipolár meghajtó védődiódákkal összekötve!
A programban vannak defelve a páratlan számú lépések, ha azokkal küldöm a mocit pillanatra megmoccan, a tekercse gerjesztve marad úgy, hogy nem is lehet megtekerni és ekkor kezd el a PIC melegíteni! A páros számú definíciókkal viszont szuperul megy! Ez egy nyomtató, vagy szkenner fejmozgató motorja volt egyébként. 48 pozíciós.
Sziasztok!
PIC18F4520-on szeretném, ha TMR1 túlcsorduláskor megszakítás keletkezne. TMR1 külső kristályt használ (32.768kHz) 27pF kondival. A megszakítás nem jön létre, tehát a program nem lép be a megszakítás ciklusba. Érdekes, hogy TMR0-val nem volt ilyen gondom. Kihagytam valamit az inicializálásból? movlw b'01111111' movwf OSCCON movlw b'10000000' movwf INTCON movlw b'00000001' movwf PIE1 movlw b'00001111' movwf T1CON
Mégegyszer nézd meg az INTCON regiszter bitjeit!
Szerintem az INTCON 6. bitjét is egybe kell rakni.
Gyakorlatilag nincs engedélyezve a PEIE. Mekkora egy ökör vagyok! Köszönöm a segítséget! Így már tényleg jó!
Igaz, most megcsináltam polingos módszerrel a nullázót és tökéletes. A nyák miatt nem lett volna szép átkötni az RB4-RB7 közül valamelyikre!
Működik a mentés is, már csak a hőfokmérőt kell kalibrálnom és szereznem egy órakvarcot hogy beindítsam a sebességmérést! Köszönöm a segítségeteket és a türelmet!
Örülök, hogy végül sikerült!
Az órakristály miért kell a sebesség méréshez? Nem jó a 4MHz-es FOSC freki?
Sziasztok. Egy olyan kérdésem lenne, hogy egy PIC18F1320-E/P -et be-e lehet égetni egy olyan égetővel, amivel eddig PIC16F84-et égettem? Soros portos, JDM égető. Úgy néztem, hogy működnie kéne, de nem szeretnék csalódni. Tud valaki segiteni?
A 4MHz-es frekivel 12km/h alatt nem mérne, mert folyton túlcsordulna a számláló és ezt 1:8 as előosztás után számoltam ki!
A 32.768kHz már egész baráti sebességgel számláltat!
12km/h alatt válts üzemmódot, és mérd a két bejövő jel között eltelő időt. Azért van a kontroller, hogy alkalmazkodjon a helyzethez
Használd a CCP modult. Ha túlcsordul, számold hányszor, add hozzá a maradékhoz és kész is vagy.
Most kipróbáltam a saját 4MHZ es órajeléről de még vannak gondok!
Egy kérdés: A TMR1IF akkor is beáll 1 be ha nincs engedélyezve a TMR1 túlcsordulása által generált megszakítás?
Igen, beáll. Nézd meg az adatlapban a logikai hálózatot a megszakításokról!
Beáll?
Ezesetben nemértem miért nem nullázódik a sebesség kijelzés, pedig én megnézem a PIR1 be hogy túlcsordult e és ha igen akkor nullázom a sebesség kijelzés bitjeit. HFOK címke után nézem meg a főprogramba.
Áttettem a sebesség számítás után a kiíratás elé a PIR1 nulladik bitjének vizsgálatát és ennek megfelelően a nullázást de nem működik!
Az adatlapban nem találtam utalást arrra hogy a TMR1 IF bit mikor áll be.
Sziasztok! PIC18F1320-E/P vezérlőnek nem kell rezgőkvarc, ami órajelet előállit? Csak mert csinálok épp egy kapcsolást és nem tartalmazza. De ahogy néztem, vannak más kapcsolások, amikben szintén nincs. Ezek szerint már tartalmaz alapból?
Szia ! Nézd meg az adatlapján a 11. oldalt
(2.1 Oscillator Types) ott találod meg a választ
Az IF akkor áll be, amikor túlcsordul a TMR1 számláló.
Igen, de annak túl kéne csordulnia 2másodpercenként és amikor túlcsordul akkor nullázni a kijelzésnél a sebességértéket.
Most nem ez történik, csak annyi, hogy mikor mozgatom a mágnest a hall jeladó előtt magyarul hívogatom a megszakításokat csak összevissza mutat értékeket és mikor elveszem a mágnest akkor sem nullázza le hanem benne marad a legutóbbi kijelzett érték!
Atvaltod a bankot a PIR1,TMRIF1 vizsgalatahoz es utana a BCD torlese elott elfelejted vissza allitani...
Amugy nem ertem miert nem teszel be 2 db magnest 180 fokkal egymastol es maris 6km/h lesz az also meresi hatar... Akar betehetsz 3-at is ...
Már van órakvarcom azzal nincs gond!
Átváltom a bankot? A PIR1 a nulladik bankban van és a BCD1, BCD2, BCD3 is itt van. Vagy nem? |
Bejelentkezés
Hirdetés |