Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Kezdem kapisgálni, hogy a fő oszci, meg a külső forrás az amiben értelmezési gond van.
Én azt hittem, hogy a külső forrás, amit én gyártok neki egy quartzal meg a két kondival, és a belsőt az valami belül ketyegő oszcinak gondoltam. De most már értem ám, hogy a belső az amit én gyártok neki az quartzal, a külső meg a T0CKI lábon jön, és gondolom szinkronizálásnál fontos, ha több chip akar ugyan azon a mazzagon beszélgetni. Ki fogom próbálni, köszi az helpet.
Javaslom az adatlap elolvasását, mert még mindig nem érted mi az a T0CKI!
És azt miből gondolod, hogy ilyen tempónál, amit a megszakításban beállítottál, mindig rá fog futni a megszakításon kívüli lekezelő rutinodra a programszál(simán elidőzhet máshol a program, és közben meg jönnek a megszakítások, csak senki nem veszi észre!)? Mást nem fogsz csinálni, csak időzítgetni? Most mondom, nem fog működni, ezt másképp kell megoldani, és pont a megszakításban! Kint csak az idő meglétét jelző flag-eket kell akkor figyelni, de még az sem lesz tökéletesen pontos, attól függően, hogy a megszakításba honnan ugrott ki a program, és ott még mi van hátra a visszatérés után. Nem tudom mit akarsz időzíteni, de nem jól közelíted a kérdést ez kétségtelen! A másik amire megkérnélek, hogy ne jelents ki addig semmit, amíg nem vagy biztos benne! Nem jól jön ki és elég nehéz nagyokat nyelni!
Ez egy delay rutin, mit csinálna még a program delay-ben?
Azért nem multitaszking oprendszert írok rá. Egy előző hozzászólásban pont azt írták, hogy a megszakítás legyen minél rövidebb, ott is egy flag lett beállítva. Egyébként meg miért is nem futna rá? Tök mindegy hogy mennyivel hajtom 2 órajel ciklus alatt dolgozza fel az utasításokat (jó tudom a 18-as az már csak egy, meg itt is lehet kötözködni, de most a nagyságrendekről van szó) Ha 255-ös osztót használok, és egy bytos időzítőt akkor két tick közé igazán sok utasítás belefér, és ha láttad a kódot akkor az semmit nem csinál, csak figyeli, hogy a flag bebillent e. Egy BTFSC, egy BTFSS és egy GOTO van az újabb vizsgálat között. De mindegy, a lényeg az, hogy a timer forrás beállításban volt a hiba, a többi tanácsot meg köszönöm.
Sziasztok!
Még új vagyok. A kérdésem a következő lenne: Egy 16F628 as picbe kellene egy fordulatszámmérő lefordított programot belevinni. Csinál ilyet valaki közületek, és ha igen, akkor mennyiért? köszönöm, Attila
Ha megvan a progi, akkor Én megcsinálom neked ingyen.
A XVII. kerületben lakom ha az jó neked.
Szia!
Köszönöm, én is a XVII-ben lakom, a Borsó utcában. Szombaton megveszem a picet, me ami kell hozzá, majd akkor írok hogyha megvan. Nagyon jó lenne, és előre is nagyon köszönöm. Attila
Sziasztok!
Egy talán már nagyon unt kérdéssel nyitnék e körben: Építettem Oshon féle égetőt, az ő szoftverüket használom a gépen, de a pic-be (16F628A) nem akar sehogyse "bemászni" a program. Mindig Verify Failed, ill. ha visszaolvasom, akkor 3fff mindenhol. Ez utóbbi gondolom a nem megfelelően beállított kimeneti invertek miatt van, így felmerül az első kérdésem is: mi a pontos beállítása eme 5 pipának? Mit kell invertálni és mit nem? A másik pedig, hogy első körben az lvp-re gyanakodtam, így az újra fordított kódban beszúrtam egy _LVP_OFF parancsot is a megfelelő PIC konfiguráló részbe, égető szerint is off (Config Word 3f6e - ha jól rémlik), de így is eredménytelen a dolog. Vpp és Vdd rendben, szépen kapcsolgatja is, ha a Hardware - Check menüpontban állítgatom. Ami talán érdekes lehet, hogy ha beteszem a foglalatba a pic-et, akkor (ha jól rémlik), a Vdd ledje haloványan világít. Amikor meg szoftverből bekapcsolom, akkor teljes fényerővel. Esetleg emiatt nem megy az írás? Köszönöm a segítséget. Egy lelkes amatőr
A másik három pipának ellentétesen kell állnia, mint ahogy a vpp és a vdd van.
Ahogy a Vpp-t és Vdd-t kipróbáltad a check menüben, ugyanúgy az óra és az adatvezetékeket is ki tudod. Ha nincs műszered(mondjuk az elég fura lenne!), akkor akár egy LED-et is fel tudsz tenni a kimenetre, úgy, hogy az anód +5V-on, a katód egy 1k-n keresztül a kimenetre. A LED-nek akkor kell világítania, amikor a pipa nincs betéve!
A printer porttól milyen hosszú vezetéket használsz, és milyet? Az ICSP porttól a PIC-ig milyen hosszú a vezeték és milyen?
Ahogy nézem azt a rajzot, nem lehet, hogy a clk/dat lábakat meghajtó 7406 kimeneti felhúzóellenállásai nem a kapcsol Vdd-re, hanem a +5V-ra lettek kötve?
Talán az okozhatna olyat, hogy a PIC behelyezésekor a Vdd led halványan világít (a PIC bemenetein lévő clamp-diódákon és a felhúzó ellenálláson keresztül). Egyéb esetben nem látom, hogy mitől világíthatna a LED.
Nekem akartál válaszolni?
Egyébként nem nagy baj, hogy az a LED pislákol. A többi kérdés sokal fontosabb.
Hazaértem
Egyből neki is estem. Az eredmények: LPT = EPP a biosban Kábelhossz: csatlakozók végétől végéig 30cm ICSP portot passzolom, nem ismerem ezt a rövidítés (még), de ha arra gondolsz, hogy a PIC foglalat és az égető egyes kimenetei között mekkora a távolsag, akkor az kb. 10cm lábanként. Teszek fel egy képet a kész íróról, az talán segít. HW - Settings: Invert CLK (3), DIN(2), DOUT(10) - zárójelben az LPT láb száma HW - Check: Testpont: PIC 5. láb (Vss) Sehol nincs pipa -> minden kimenet = 0 Pipa (PIC láb száma) -> Mért érték Vdd (14) -> 4,97V Vpp(4) -> 13,10V CLK(12) -> 3,2V - itt lesz a bibi szerintem Data(13) -> 3,27V Lvp(10) -> 0,0V Ha kipipálom a Vdd-t, akkor CLK és Data felmegy 4,97V-ra. Mindezt úgy mértem, hogy a PIC benne volt a foglalatban. Remélem tudtam segíteni a távdiagnosztikában és előre köszönök minden segítséget!!! (Vettem új 74LS06 és 07-es IC-ket, hátha építés közben megsült - ha esetleg cserélni kéne)
Ezek így nagyjából jónak néznek ki, az még a kérdés, hogy amikor a DATA-t bepipálod, akkor bepipálódik-e az alatta levő doboz is? A vizsgálódásnak csak bekapcsolt vdd mellett van értelme, mert arra vannak a felhúzóellenállások kötve.
Igen, amint bepipálom a Data-t, az alatta lévő is kap egyet.
Ez így jó? Csatoltan az ígért képek
2. adag
Hát.. izé
Szóval én csak rajzról ismerem ezt az égetőt, nincs vele tapasztalatom, de az írásodból úgy éreztem, Neked annál több lehet. Az eredeti kérdésben felvetett LED-pislákolásra tettem csak egy észrevételt, de ha tapasztalatod szerint ez normális, és nem elkötés okozza, akkor nyílván máshol kell keresni az esetleges hibát. Azért ugye nem baj?
Persze, hogy nem! Csak azt hittem véletlenül válaszoltál nekem, mert ugye nem én kérdeztem.
Egyébként ez a pislákolás azért van amit írtál, de meg is lehet szüntetni, pont azzal amit írtál(kapcsolt feszre kötni a felhúzókat).
Én úgy látom, hogy a Status of DATA IN line nem pipálódik ki, miközben a DATA OUT be van pipálva!
Ha kiveszed a pipát az OUT-ról és akkor kipipálódik, akkor az Invert Data IN pipát vedd ki! Az IN-nek akkor kell kipipálódni, ha az OUT be van pipálva. A Vdd-t kapcsold be, PIC-et vedd ki!
Módosítottam:
Invert CLK és DOUT van csak kipipálva. Így már a CHECK menüben úgy viselkedik, ahogy leírtad: Alap esetben csak a Status... van kipipálva. Ha viszont engedélyezem a Data Out-ot, akkor a Status... mellől eltűnik a pipa. Így sikerül is írnom a PIC-be, de van két furcsaság: 1. Ha első lépésben Erase All-t nyomok majd ez után egy Blank Check-et, akkor hibát dob: 0000h-n nem üres, ott 000h-t olvasott - nem ez lenne az üres? 2. Újra Erase All - biztonság kedvéért. Visszaolvasom Read All-al és minden 0000, eddig jó. Programot betöltöm, első hex: 294B, Program All .... Majd ha visszaolvasom, akkor az első hex: 16B4 Ez a kettő együtt meg pont 3FFF-et ad, azaz ha jól sejtem, az invertját írja a PIC-be.... Ha a HW - Settingsben átállítom az Invertet a Data IN-re (Data Outról leveszem), akkor meg nem ír semmit a PIC-be....
Csak a pontosítás miatt kérdem, hogy amikor a DATA IN nincs invert pipálva, és így amikor a DATA OUT check-et kipipálod, akkor az IN is kipipálódik magától?
Nehéz elhinni, hogy invertálva íródna bármi a PIC-be, mert az írás folyamata egy lépésenkénti programvégrehajtáshoz hasonlít. Ha valami beíródik, akkor az tutira nem inverz!
Nem.
Azaz felváltva megy csak. Ha Dout kap pipát, Din-ről eltűnik és vice versa. Az inverz pedig nekem is fura volt...pedig többször is írtam így és mindig az inverzét olvasta vissza - de még a config word is pont inverz...
Invert Data IN pipával nem tudod a szinkront megteremteni? Az egyik állapotában jónak kell lennie!!!
Sziasztok!
Még mindíg nem boldogulok ezzel az LCD s dologgal... Úgy döntöttem elég nekem a nyolc bit az ADC nél, tehát az ADRESL t nem használom. Akkor nem kell szenvednem a 10 bittel, legfeljebb kisebb lesz a tartomány felbontása. Jelenleg úgy van megoldva a mintavételezés hogy rutinból meghívom 16 X az ADRESH t, és utána átlagolom, azaz osztom 16 al(szintén rutinból meghívok egy 16 os osztást "4X RRF adresh_i ". Így jelenleg 000 - 255 közötti tartományt tudok átfogni. Ha ismét meghívom az osztást, azaz tovább osztok 16 al, akkor ugye 000 - 015 ig kéne lebutuljon a felbontás. Na itt a bibi, mert nem változik semmi..Vajon miért? MINTA bcf STATUS,RP0 clrw movf ADRESH,w addwf adresh_i return ATLAG clrc rrf adresh_i rrf adresh_i rrf adresh_i rrf adresh_i
ááááá - megőrülök...megpróbáltam 4 variációban is.
Inv Clk - Inv DOut - Din Inv Clk - Dout - Inv Din Clk - Inv Dout - Din Clk - Dout - Inv Din És csak egy esetben ír a pic-be, mégpedig az elsőben - de akkor is inverzet.....sztem iszom egyet (kis koffeint ), aztán filó tovább, mert ez lesz a jó, csak miért pont inverzet ír.....ezt kell megfejtenem De ami még mindig kotoszkál bennem: miért hasal el a blank check, ha egyszer erase all után a rad all csak 0000-t ad vissza?....
A léptetések előtt a C-t érdemes törölni(BCF STATUS,C).
Lehet, hogy ezért húz be egy 1-es pl. A másik, hogy erősen figyelj a bankokra! Főleg, ha a szimulációban sem változik egy regiszter értéke, akkor nagy eséllyel ez a baj!
Minden "RRF" előtt törölni kell vagy elég az osztás elején? A bankos dolgot átnézem, tegnapelőtt már belefutottam egy ilyen hibába... Norberto segített át rajta.
Törlés után 3FFF-nek kéne lenni mindegyiknek, csak az inverz visszaolvasás miatt lesz 0000, ami nem jó fázist jelent a DATA IN-nél!
Tedd be úgy az inverz pipát, hogy a Data OUT bejellölésekor a DATA IN is bejellölődjön, és így próbálj eredményre jutni, mert egyébként soha nem fog jó lenni!
Mindegyik előtt kell, mert ha az előzőből kilépet egy 1-es, akkor az be fog lépni a következőbe!
|
Bejelentkezés
Hirdetés |