Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   181 / 1320
(#) SzaboZE hozzászólása Ápr 2, 2008 /
 
Sziasztok!

Építgetek egy áramkört, ami a tervek szerint időt és hőmérsékletet jelezne ki. Egyelőre a kijelzés van készen, illetve az óra IC-vel való kommunikáció, de van egy számomra megfoghatatlan hibajelenségem. Az áramkör egy 16F887-en alapul, amihez egy Ricoh 5c372-es óra IC-t kötöttem I2C-n (PIC PORTC 3-as és 4-es láb). A két kommunikációra használt lábat 5K-val felhúztam VDD-re. Működik az áramkör, de véletlenszerűen egyszerűen lefagy. Megáll az óra és csak resetre indul újra el (persze 00:00 értékről). Nem jellemző se az hogy mikor fagy le (10mp-től 2 óráig bármennyi idő lehet). Egyszerűen nem tudom felfogni hol lehet a gond. Mivel minimális alkatrész van benne, csupán arra tudok gondolni, hogy valami megzavarhatja a kommunikációt. Mivel nem volt itthon 4.7K ellenállás, ezért az 5K két 10K-s ellenállásból alakult ki. Van ötletetek, mi okozhatja ezt? Az alkatrészek jók kell hogy legyenek, mert direkt megépítettem két példányban is a kapcsolást, ráadásul két különböző tipusú és méretű LCD-vel is. Mind a két áramkör ugyanazt a hibát produkálja. Előre is köszönöm az ötleteket. Szoftverre azért nem gyanakszom egyelőre, mert azon gondolkozom, hogy ha többezerszer lefut egy ciklus jól, akkor mitől állhatna le.
(#) bbalazs_ válasza djereg hozzászólására (») Ápr 2, 2008 /
 
Es tobb modulra nem lehet bontani? Akar emeletesre is meg lehet csinalni. Olyankor mindig csak egy-egy kisebb NYAK kell, ha modositas szukseges.
De vazz, 50 euroert en is megcsinalom neked akarhanyszor...
(#) potyo válasza SzaboZE hozzászólására (») Ápr 2, 2008 /
 
Miben van írva a programja? Ha asm-ben, akkor a megszakítási rutinban a regiszterek mentése úgy van megcsinálva, ahogy az adatlap írja? 14.4 fejezetben van a jó mentés leírva.
(#) bbalazs_ válasza SzaboZE hozzászólására (») Ápr 2, 2008 /
 
Szerintem a kulcs a hiba szakaszolasa.
Magyarul: ki a hunyo?

pl. az oraIC-t teljesen levalasztani a pic-rol es veletlenszeruen, de ritkan olvastatni. Igy lefagy-e?
Ha fokozod az olvasasi frekit, akkor rosszabb lesz? A foldek rendben vannak? Tap elegge stabil?

Az oraIC dokumentaciojaban mit irnak a resetelesrol?
(#) Fixer_SH hozzászólása Ápr 2, 2008 /
 
Hello Sracok!

Csak szeretnem jelezni, hogy jelenleg jol mukodik a PICkit2-m Bekapcsoltam azt a konfig bitet, ami letiltja a 18f2550-ben hogy futas kozben irni allitani lehessen a konfig biteket. Igy, lehet hogy probalkozik a FW allitgatni a BOR biteket (es ezaltal a VREGEN-t is... "veletlenul"), de nem tudja.

Ez az allapot mar kb. 1 hete van igy, tehat azota nem volt problemam a PICkit2-mel.

Köszi a segítséget!
(#) SzaboZE válasza potyo hozzászólására (») Ápr 2, 2008 /
 
ASM program, elvileg adatlap szerint van, mintának használtam egy chipcad-es óramodul programját. Azért végigmazsolázom még egyszer.
(#) SzaboZE válasza bbalazs_ hozzászólására (») Ápr 2, 2008 /
 
A tápot is kizártam, 3 féle táppal ugyanez, most már kondit is tettem a táprészre, hátha az. PicKit2-vel programozom, most éppen arról kap tápot, de külső tápokkal is ez volt a helyzet. Ez jó ötlet, lehet hogy rápróbálok erre a ritkábban olvasásra. Alapban 0.5 sec-enként volt a program beállítva olvasásra, de úgy a másodperc kijelzés nem volt folyamatos. Most kb 10-20-szor olvasom másodpercenként az óra IC-t. Azonban 0.5 sec beállításon is ugyanúgy fagyott az áramkör. De lehet hogy beállítom jóval hosszabbra az intervallumot hátha az óraIC áll meg valamitől. Azt észrevettem, hogy az óraIC elég jól kiküszöböli a zavarokat, mert ha a kristállyal elveszti a kapcsolatot egy pillanatra, nem fordul magába, hanem folytatja ott ahol abbahagyta. (pl kézzel megfogom a kristályt, akkor megáll egy pillanatra, de ha elengedem továbbmegy. A kristályt közvetlenül az óraic lábaira forrasztottam egyelőre. Sajnos szkópom nincs, amivel tudnám ellenőrizni az órajelet, de gyanítom azzal nem lehet gond, mert mindkét áramkör ugyanezt teszi két különböző gyártmányú kristállyal.
(#) SzaboZE hozzászólása Ápr 2, 2008 /
 
Itt van az óraic olvasás, hátha esetleg ti találtok benne valamit. A 100us késleltetés csak tesztként volt benne, anélkül is ez a helyzet. És itt a wait rutin is:

Wait btfss PIR1,SSPIF ; SSPIF megszakitas flagre var
goto Wait
bcf PIR1,SSPIF ; SSPIF flag torlese
return

ora.txt
    
(#) SzaboZE válasza SzaboZE hozzászólására (») Ápr 2, 2008 /
 
Még annyit hozzátennék, hogy gyanítom a PIC áll meg, mert a nyomógombot sem olvassa onnantól, hogy lefagyott. A ciklusban van egy óraIC olvasás utána egy LCD kiírás, utána egy gomb állapotvizsgálat.
(#) potyo válasza SzaboZE hozzászólására (») Ápr 2, 2008 /
 
Vagy megáll, vagy vár valamire, ami nem történik meg sohasem.

Hogy érted azt, hogy tettél kondenzátort a táprészre? Eddig nem volt? Ha nincs az óra ic táplábain közvetlenül, a 16F877 mindkét oldalán a táplábakon közvetlenül és az LCD táplábainál is egy-egy 100nF kerámiakondenzátor, akkor bármi megtörténhet.

A kvarcoknak nem kellene annyira érzékenynek lenniük, hogy hozzáérsz és leáll. A megfelelő kondenzátorok ott vannak a kvarcok mellett?
(#) SzaboZE válasza potyo hozzászólására (») Ápr 2, 2008 /
 
A kristály mellé a pdf sehol nem említ kondit. Lehet hogy itt van elszúrva a dolog? A pickitről kapja a tápot az áramkör, amit a chipcad-es demopanelen építettem. Ezen ha jól tudom a szükséges kondik megvannak, az LCD-nek nem adtam külön kondit, ezt akkor ezekszerint pótolni kell. Most annyit csináltam, hogy a wait ciklust kiváltottam egy sima 100us késleltetéssel (PDF szerint minimum 52us kell), mert korábban tettem a programba sorokat, amik az lcd-re ezt-azt kiírtak a programfutás helyéről. Amikor leállt a PIC, akkor az óra olvasás elején beszúrt infót írta ki utoljára (start bit), tehát ott akadt el valahol.
(#) szilva válasza menyus hozzászólására (») Ápr 2, 2008 /
 
Ez a sokszorozó benne van az LCD vezérlő IC-ben, és meglehetősen jó hatékonysággal dolgozik. Gondolom, hogy valamilyen FET-es kapcsolókkal csinálja, valószínűleg többfázisú vezérlőjellel, így az átkapcsolásoknál sincs veszteség. Az vezérlőáramkör teljes áramfelvétele 3.3V-on, aktív állapotban max. 160uA, ha minden második pixel "világít" az LCD-n - ha hinni lehet az adatlapnak, de miért ne lehetne. Ehhez képest a LED-es háttérvilágítás 60mA-e borzalmasan nagy.
(#) pepe hozzászólása Ápr 2, 2008 /
 
Nemrég kezdtem PIC-el foglalkozni és tudna nekem valaki segíteni, hogy mit jelen az, hogy "GOTO $-1" magát a goto parancsot tudom de mi a $-1?
Ezzel mit lehet beállítani: movlw 0x00 köv. sor movwf ADCON1 ha növelem az értékét akkor mi történik, mi alapján lehet számolni? És még 1 utolsó kérdés: movlw 0x41 köv. sor movwf ADCON0
ez a 2 sor mit csinál és milyen értékek közt lehet változtatni ADCON0 értékét és ha megváltoztatom mi történik? Előre is köszi a segítséget és bocs hogy ilyen alapvető dolgokat kérdezek.
:help:
(#) potyo válasza SzaboZE hozzászólására (») Ápr 2, 2008 /
 
Tényleg nem ír, hogy szükség lenne az óra ic-nél külső kondenzátorra, azt viszont írja, hogy a belső kapacitás az oszcillátor lábakon 8pF körüli, és ha a kvarc nem ekkora terheléshez van, akkor nem biztos, hogy jól működik. Tegyél még a kvarc lábaira 1-1 10pF-os kondenzátort, a nagyobb kondenzátor stabilabbá szokta tenni az oszcillátort.

Ha a demopanelen van, akkor nem szóltam a kondenzátorokkal kapcsolatban. Bár azért nem árt megnézni, hogy vannak-e, mert az hogy gyári, manapság már nem garantál semmit.

De ez nekem nagyon szoftverhibának tűnik. Valami olyasminek, ami csak véletlen egybeeséskor jön elő.
(#) potyo válasza pepe hozzászólására (») Ápr 2, 2008 /
 
Azt hiszem, neked sem ártana elolvasni először a picekkel foglalkozó témákat, és csak azután állni neki bárminek is. Ezt nem rosszból mondom, hanem tapasztalatból.

Link
Link
Link
Link
(#) SzaboZE válasza potyo hozzászólására (») Ápr 3, 2008 /
 
Köszi hogy ránéztél, ezt is meg fogom tenni! Gondolom a föld felé a kristály két lábára. De gyanítom inkább a PIC körül lesz a gond, mert egyszer elindítottam kristály nélkül véletlenül az áramkört és a nyomógomb visszajelzése működött, csak az óraIC-ből nem jöttek adatok. Tehát ha nincs kvarc vagy gond van vele, attól még a kommunikáció miatt nem áll le a PIC. Most még több pontot beletettem a szoftverbe, kiváncsi vagyok mit fog jelezni, hol áll le.
(#) pepe hozzászólása Ápr 3, 2008 /
 
Pls. AKi tudja a válasz az írja le nagyon megköszönném fontos lenne és ne linket küldjön azért kérdeztem ebben a témában mert reméltem hogy sokan értenek hozzá és gyors választ kapok. ----->>>> Nemrég kezdtem PIC-el foglalkozni és tudna nekem valaki segíteni, hogy mit jelen az, hogy "GOTO $-1" magát a goto parancsot tudom de mi a $-1?
Ezzel mit lehet beállítani: movlw 0x00 köv. sor movwf ADCON1 ha növelem az értékét akkor mi történik, mi alapján lehet számolni? És még 1 utolsó kérdés: movlw 0x41 köv. sor movwf ADCON0
ez a 2 sor mit csinál és milyen értékek közt lehet változtatni ADCON0 értékét és ha megváltoztatom mi történik? Előre is köszi a segítséget és bocs hogy ilyen alapvető dolgokat kérdezek.
(#) potyo válasza pepe hozzászólására (») Ápr 3, 2008 /
 
Nem véletlenül nem kapsz egymondatos választ, és ha kapnál is, azzal se mennél semmire. Azzal jobb, lesz, hogy azt mondom, hogy a $-1 az azt jelenti, hogy oda a GOTO előtti utasítás programmemóriabeli címét helyezi be a fordító a fordításkor? Ráadásul ez még az egyes pic altipusoknál nemis mindig pontosan ugyanezt jelenti.

A movlw 0x00 movwf ADCON1 sorok nullát írnak be az ADCON1 regiszterbe. De hogy ez pontosan mit jelent, mire szolgál, az már csak az adott kontroller adatlapjából derül ki. Ugyanígy az ADCON0-nál is.
(#) bbalazs_ válasza pepe hozzászólására (») Ápr 3, 2008 /
 
Az elozo utasitasra ugrik. A $ az eppen aktualis memoriacim, igy nem kell tudnod, hogy fizikailag hol vagy.

Az ADCON0 kivalasztja az AD csatornajat, valamint engedelyezi az AD modult es inditja a konverziot. A 00H a 0. csatornat valasztja ki anelkul, hogy engedelyezne vagy inditana a konverziot.
Ha megvaltoztatod, akkor 4-es lepesekben masik csatornat valasztasz ki, 2-es lepesekben inditod/tiltod a konverziot, 1-es lepesekben pedig engedelyezed/tiltod az AD modult.

az ADCON1 -es megmondja, hogy mely labak legyenek analog bemenetek es melyek maradjanak digitalisak valamint a referenciafeszultsegek beallitasara szolgal.
a 41H ertek valamennyi ANx labat analogkent definialja, mikozben a fold es a tapfesz a ket referenciafesz.
Pontos ertekek es tablazatok a megfelelo PIC adatlapjaban talalhatok.

Ha most kezdesz a PIC-el, eloszor irj led villogtato rutinokat, utana kezdj el foglalkozni a beepitett modulokkal. Szerintem.
(#) watt válasza pepe hozzászólására (») Ápr 3, 2008 /
 
pepe!
Már most mondom, hogy ez így nem fog menni! Ismerd meg a kiválasztott PIC-ed adatlapját, és alkalmazd! Ugye nem gondolod komolyan, hogy a 2-300 oldalas adatlap azért íródott, hogy majd itt egy fórumon válaszolgatunk minden egyes regiszter mikéntjére, mert Te így parancsolod? Olvass! Tanulj! Utána kérdezz! (Ha lehet kímélj meg minket attól, hogy kifejted, szerinted mire való egy fórum! Tudjuk, ezen élünk "10" éve!)
(#) trudnai válasza pepe hozzászólására (») Ápr 3, 2008 /
 
pepe,

Az odaig rendben van, hogy valamit nem tudsz es megkerded, de a kerdeseidbol arra lehet kovetkeztetni semmit sem tudsz a PIC mukodeserol es programozasarol. Most vagy meg szeretned tanulni es akkor abba nyilvan energiat kell fektetned, olvasnod, kattintgatnod a linkekre, vagy kerj meg valakit hogy csinalja meg helyetted a projectet - namost ha ez suli feladat akkor inkabb tanuldd meg. Senki sem szeretne ha diplomadat "ingyen" kapnad, ha erted mire gondolok. Ha hobbi dologrol van szo biztosan talalsz olyat aki megcsinalja neked haversagbol / sor-adagert, ha pedig fizetos munka akkor vannak alvallalkozok is.

Most 3 kerdesed volt, amire gyors valaszt akarsz, aztan jon ezer masik harmasaval?
(#) PLaci hozzászólása Ápr 3, 2008 /
 
Sziasztok!
Hobby szinten használtam a PIC progik debuggolásához az MPLab 6.1 softwares szimulátorát
(tehát nem ICD2). A simuláció közben eg SFR regiszter valamelyik bitjét át akartam írni, akkor jobb gomb a regiszterre, a kinyíló ablakban valami fill parancs, és ott beírhattam a regiszter címét, és az új értéket. Ezután gond nélkül lehetett lépkedni tovább a szimulátorban.
Most egy olyan PIC el hozott össze a balsorsom, amit már nem ismert az MPLab 6.1. Felinstalláltam helyette a 8.0 verziót. Sajnos az említet simulátorban már nincs fill menűpont
Hogyan tudom ennek ellenére átírogatni a biteket?
Egy konkrét példa, hogy érthető legyek:

nem_kesz: btfss PIR,ADIF
goto nem_kesz
.
.

Nyilván itt fogok ugrálni az örökkévalóságig, ha nem írom át a simulátorban az ADF bitet 1-re?
Fél napja nézem és nem jövök rá
Valaki please....
(#) potyo válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Kettőt kattintasz az értékre, és át birod írni.
(#) PLaci válasza potyo hozzászólására (») Ápr 3, 2008 /
 
Nem, tudom, nekem nem írt át
Mindjárt megpróbáéom újra, de most linux alatt vagyok
Azért köszi, megírom mire jutottam
(#) potyo válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Pedig működik, most próbáltam a File Registers, a Watch és a Program Memory ablakoknál is.
(#) PLaci válasza potyo hozzászólására (») Ápr 3, 2008 /
 
Szia!
Köszi a segítséget! Összetettebb a dolog mint gondoltam. pl a PORTA regiszter felső 4 bitje kimenet, az alsó 4 bemenet (TRISA 0b00001111)
A felső 4 bitet tudom írni az általad említett módon, az alsót, pont (ami kellene) nem
Mot egy kapcsolót figyelnék a a PORTA.3 biten, de a simulátorban továbbra sem tudok 0b00001000-t írni ilyet tudok csak 0bxxxx0000
(gondolom neked tiszta, hogy nálam az x tetszőleges biáris szám)
Köszi, ha még van tipped. Azért akadtam ki, mert a régiben ez nem volt probléma.
Lehet valami összefüggés a LATA regiszterrel?

(#) potyo válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Én az ilyet úgy szoktam, hogy a TRISA3 bitet átírom a Watch ablakban, hogy az a láb kimenet legyen, és akkor amire átírom a PORTA3 bitet, azt olvassa be a szimuláció folyamán.

Bonyolultabb szimulációhoz van a Stimulus. Ott be lehet állítani mindenféle jeleket a lábakra. Nemsok alkalommal használtam, de működik.

A LATx regiszterek remélem tudod, mire valók.
(#) trudnai válasza potyo hozzászólására (») Ápr 3, 2008 /
 
Idézet:
„Bonyolultabb szimulációhoz van a Stimulus. Ott be lehet állítani mindenféle jeleket a lábakra. Nemsok alkalommal használtam, de működik.”


Nem is kell bonyolultsag ehhez, egyszeruen megnyitod a stimulus controllert es kivalasztod a labat, megmondod mit csinaljon (action), pl toggle es akkor minden alkalommal mikor a bal oldalon a gombjara kattint az ember invertalja a jelet... Kis akarassal konnyeden megtanulhato ez, vannak MPSIM-hez pdf file-ok is ott valahol a konyvtar szerkezetben, vagy az F1 gombocska
(#) pepe válasza bbalazs_ hozzászólására (») Ápr 3, 2008 /
 
Nagyon szépen köszönöm!! A többieknek meg S.M.D. Remélem tudod minek az angol rövidítése?
(#) watt válasza PLaci hozzászólására (») Ápr 3, 2008 /
 
Gondolj bele, ez egy tök normális működés. Egy bemenetet a valóságos PIC-en sem tudsz "átírni". A megoldásokat már leírták, én csak ezt szerettem volna hozzátenni...
Következő: »»   181 / 1320
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