Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Tápot célszerű odavezetni, bár ha a pickit2 kimenő feszültségét egyformára állítod a tápáramkör feszültségével, akkor nem muszáj. A többit ahogy írod, úgy kell bekötni. Aux marad üresen.
A PICkit2-nek eszre kell vennie, hogy van kulso taplalas, teljesen mindegy mekkora feszultsegu. Ilyenkor nyavalyogni fog, hogy van kulso taplalas es hogy akkor o kikapcsolja a Vdd-t, el kell fogadni es onnantol a PICkit2 nem erolkodik tovabb (marmint a Vdd-t illetoen, a programozasnak mennie kell ha a Vdd szint megfelelo a programozashoz).
Találtam ilyen Vdd kalibrációt, de amit mérek, nem akarja elfogadni. Gond? Vagy ezeket hagyhatom?
Ha magyar a Windows-od lehet vesszovel kell a decimalist elvalasztani...
Tényleg az volt, eszembe se jutott volna. Köszi!
Sziasztok!
Ha valaki nagyon ráérne belenézne, hogy a forrásban van-e hiba? Egész nap ezzel voltam el, és nemtudtam rájönni mi a hiba...szimulátoron tökéletesen müködik, de a vason kihal ezen a részen: while (!input(pickup)); //wait line goes high pedig kap kraftot a bemeneten...
Nézz szét az oldalamon, még talán rajz is van...
Sziasztok!
A komparátor megszakítását nem nagyon tudom beállítani. Illetve az a baj hogy nem akkor történik megszakítás amikor a komparátor kimenete szintet vált hanem össze-vissza. Szimulációban pedig az első szintváltásnál belép a megszakításba és ott is marad ugyanis a PIR1,CMIF-et nem lehet törölni. Mellékelem a programot. Tudja valaki hogy mit ronthatok el?
Az interrupt kiszolgálóban semmiféle context-savinget nem használsz, ami így elég ronda, bár a problémád nem ebből adódik. Azért ragad be a CMIF bit, mert azt nem elég a törléssel megszüntetni, hanem a CMCON regisztert is ki kell olvasni a törlése előtt. A Figure 10-3 elemzéséből is láthatod, hogy a CMIF bebillentése egy kizáró-VAGY kapun keresztül áll elő a komparátor kimenetének a CMCON legutolsó beolvasásakor látott és a mostani állapotából. Amíg ez a két állapot eltér (változás volt az utolsó olvasás óta), addig a CMIF bit mindig magasba áll. Ez ugyanaz a mechanizmus, mint amit a portlábak megváltoztatásakor kiváltandó (IOC) interruptnál alkalmaznak a PIC-ek.
Köszi szépen a segítséget, így már működik. A context-saving alatt mit értesz?
Idézet: „Köszi szépen a segítséget, így már működik. A context-saving alatt mit értesz?” Minden amit az interrupt kezelo tonkre tesz azt vissza kell allitani... Pl a STATUS tartalmat, vagy bank / page szelekciot, WREG-et, indirekt cimzeshez hasznalatos regisztereket stb...
Értem. egyébként a status regiszter mentését miért swapf paranccsal csinálják, miért nem jó a movfw... movwf...? A w visszaállításához is miért nem movfw használnak ehelyett:
SWAPF W_TEMP,F SWAPF W_TEMP,w
Szia!
A movf utasítás állítja a Z flag-et (nem a STATUS eredeti tartalmát mentené el), a swapf nem.... Szia
Nézd meg az adatlapban, hogy melyik utasítás hogyan állítja a flageket, és rá fogsz jönni, hogy kell oda az a SWAPF.
Ja hogy a movf elállítja a Z-t a swapf meg nem.
Megfogadtam a tanácsaitokat, szinte minden portlábat be tudtam állítani a legkedvezőbb beállításba (ahol lehet ott analogba kapcsoltam, ahol meg nem, ott pedig kimenetre és 0 -ra, amelyik bemenetnek maradt, ott pedig van földre húzó ellenállás). Egy portlábbal nem tudok még mit kezdeni, ez pedig a 16F887 es RC7/RX lába. Ez egy max232 re van kötve. Itt normál üzemben, adásszünet esetén ugye 5V -van, amit a max küld ha igaz. Na ezzel mit lehet kezdeni ? Mert ha átrakom kimenetnek ezt a lábat, és mondjuk magas szintre kapcsolom, akkor innen folyni fog áram a max felé. Viszont ha meg földre húzom, akkor amig ki nem ürül a max tápjának a puffere, egymással fognak harcolni.
Na, végül is beraktam egy 470 ohmos ellenállást a max és a RX láb közé, így mikor elmegy a tápfesz, akkor pár pillanatig küzdenek csak, aztán a max feladja. És jónak tűník. Műszerrel nézve 4.88V ról nagyon nagyon lassan esik csak a feszültség, akkor is csak egyesével századonként. Nem tudom még hogy így mennyit fog kibírni, de több óra is lehet már. Azért ez nagyságrendi javulás a kezdeti 2-3 perchez képest.
Szerintem az RX láb jó úgy, ahogy van, nem kell bántani. Ha a MAX tápja elmegy, akkor azt a pontot úgyis lehúzza a földre, az meg neked már jó. Vagy esetleg ha a max kimenete nem húzná le, akkor tehetsz egy nagyobbacska ellenállást (mondju 100k) az RX láb és a GND közé. Vagy - most jön a csavar - akár az RX láb és a MAX tápja közé.
Új fejezettel gyarapodott az "Ismerkedés a PIC18 mikrovezérlőkkel" című PICCOLO projekt.
Az új fejezet: Assembly programozás haladóknak A fejezet tartalma: o Szorzás - 4 bites előjel nélküli számok szorzása - 8 bites előjel nélküli számok szorzása - Hardveres szorzás (mulwf és mullw) - 16 bites előjel nélküli számok szorzása o Előjeles szorzás - 8 bites előjeles számok szorzása o 16 bites előjeles számok szorzása o Osztás - Előjel nélküli számok osztása - Előjeles számok osztása Be kell vallani, hogy ez a Bob Reese: "From Assembly To C with the PIC18FXX2" c. könyv 7. fejezetének csak az első fele, de a fejezet másik felével egyelőre nincs időm/ingerenciám foglalkozni. Majd...
En nem tudom a Max-nak milyen a kimenete, ha OC-s es felhuzo miatt van ott 5V, akkor te is felhuzhatod valamekkora ellenallassal, olyannal amit a max kimenete meg megfeleloen le tud huzni ha akarja. Ha aktiv az 5V akkor pedig olyannal kellene lehuzni, amelyiket meg aktivan hajtja meg a max konnyeden. Most (is) lusta vagyok ehhez az adatlapot bogaraszni, de gondolom majd Te kinezed mi a helyzet
Minden tiszteletem a kitartasodert es a szepen kivitelezett oldaladert!
Sajnos nem sokat konyítok a C-hez, ezér azt szeretném kérdezni, hogy a következő led mátrix forrásrészlet mit takar, vagyis ebből honnan tudom meg a kivezérelt képpontok elhelyezkedését?
Ilyen tömbből van 4db, ezek tartalmaznak egy szöveget, amit a program valami 64bites soros adatban kiküld a kijelző felső 16*64-es részére. A kijelzőpanel egy 32soros 64 oszlopos RG ledes mátrix kijelző. A segítségeket előre is köszönöm!
En nem latom a kapcsolast meg a program tobbi reszet igy nem tudom, de nyilvan az neked is feltunt, hogy ez egy matrix, aminek minden sora 64 bitet tartalmaz, es 7 pontsora van egy szoveg sornak (224/8=28. 4x7=28). De ha minden sor kozott hagysz egy kis tavolsagot, hogy a betuk ne erjenek ossze, akkor 8x4=32... es akkor mar kozelebb vagyunk a megoldashoz valoszinuleg, mert tudjuk, hogy 4 sora van, es valoszinuleg 8 karakter, mert sehogy maskepp nem jonne ki normalisan hogy 1 sorba hany karakter ferne el (ugye a kijelzod 64*32, igy 64/8 = 8 karakter, a karakter 8 szeles, valoszinuleg 1 sor majd mindig kimarad elvalasztonak).
Sajnos most tul faradt vagyok, hogy tovabb gondolkodjam. Azt sem egesen ertem mi az a 16*64-s resz? Hany magas 1 betu amit latsz a kepernyon? Hany szine lehet a karaktereknek? 1 karakteren belul is vannak mas szinek? Mert most latom RG (tehat voros-zold LED-ekrol van szo? Abbol 3 alapveto szin jonne ki, szoval nem mindegy hogy hogyan csinalja... lehet 2 bitet hasznal egy pontra...)
Köszönöm szépen a választ!
Pontosítok egy kicsit: A kijelző kívülről rajta a tömbben tárolt szöveg kijelezve. A dokumentáció, ami tartalmazza a forráskódot és kapcsolási rajzot, működést is.
Aham, akkor megiscsak a hagyomanyos 5x7-es karakterekkel dolgoznak, azaz egy karakter hely 6 pixel szeles a mogotte levo elvalaszto vonal miatt. A kepen 11 karaktert latunk 1 sorban ("Electronics"). Namost az 11*6 = 66, ami nyilvanvaloan nem ferne ki. De ugye a legutolso karakter utan mar nem kell kihagyas, ezert az csak 5 pixelt foglal el, igy mar csak 65 ami mar majdnem kijon. Ha jobban megnezzuk a kepet, akkor feltunhet, hogy az "i" betunel csaltak, azaz ott 4 pixel + 1 kihagyast hasznaltak a szokasos 5+1 helyett, igy jon ki nekik a 64...
Magyaran grafikusan megterveztek a szoveget, nem hasznaltak vegeredmenyben karakter generatort, es igy tudtak a szoveget megjeleniteni szepen.
Sziasztok!
Mukodik a kondival!!! Kossz! Viszont a progiban amivel tegnap probalgattam volt egy bug ami beleirt az eepromba, ugyhogy azt hittem hogy meg mindig rossz, es probalgattam ami eszembe jutott... Most ugy nez ki hogy kinyirtam az egyik pic16f88-at... Folyton azt irja a pickit2: No device detected. Ha jol emlekszem az utolso akcio amit csinaltam az az volt hogy beraktam a 100nf-os kondi melle meg egy 100nf-osat parhuzamosan, hogy legyen 200nf (parhuzamosan ugye osszeadodnak), es azt irtatok hogy 47-230nf-ig kell kondi... Ugy emlekszem ez utan mar nem reagal a pic... Van valami amivel ujra lehetne eleszteni vagy ennek mar vege? (vegulis a progi is rossz volt amivel tegnap probaltam, mult vasarnap ota modositottam) kossz, udv, Sanyi
Ettől biztosan nem ment tönkre! Valami más oka van, mondjuk forrasztásnál zárlatot okoztál(ami még most is megvan. Ki kéne mérd), vagy nagyfesz tüskével tetted tönkre(pulóver, műanyag szék, szőnyegpadló, földeletlen csukló).
Annal a procinál érdemes arra figyelni, hogyha a timer1 et használod nehogy beállítsd, hogy a PGC lábra(12) kiadja az oscillator jelet, mert utánna nemfogod tudni megint programozni. De egyéb esetek is lehetnek mikor összekad valami.
De erre is van megoldás: Nekem sikerült a pickit2 programjával earse-elni valahogy. Próbálgatni kell, valahogy kilehet törölni. Utánna már az MPLAB is felismeri. Nagyonsokat szívtam vele mire rájöttem.... |
Bejelentkezés
Hirdetés |