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 ![]() ![]() 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...
![]() ![]()
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 |