Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia rogers,
> if (counter = 4) state = 1 ; Itt csak egy egyenlosegjel van, ami azt jelenti hogy ertek atadas. counter valtozoba berakja a 4-et majd mivel a 4 nagyobb mint nulla a feltetel igaz lesz... Lejjebb is van egy ilyen 12-vel... Amugy ez mi akar lenni? Legegyszerubb amugy perges mentesiteni, hogy erzekeled az elso kontaktust, majd varsz 1-2ms-et, amjd ismet megnezed van-e kontaktus remelve, hogy ha a gombot megnyomtak akkor a varakozas idotartama alatt a perges megszunik... Nem szep, de mukodik. Vagy timerrel, hogy gombnyomaskor nullazodik es indul a timer, felengedeskor pedig a timer leallitodik. Ha timer lejar, akkor a gomb megnyomottnak tekintheto. Idézet: „majd varsz 1-2ms-et” Csak kíváncsiskodok, még sose próbáltam ki a "határokat". De ez az idő elég szokott lenni?
Ez kapcsolotol fugg, szerintem erdemes szkoppal megnezni, es arra meg egy "kicsit" ratenni. Azt hiszem ez a dokumentum eleg jol korbe jarja ezt a temat, vannak benne scope felvetelek hogy mi tortenik kulonbozo kapcsoloknal, hardveres, szoftveres megoldasok stb.
Valószínűleg elég, csak az 1-2ms alatt mást is lehet csinálni, mint a gomb stabilillá válására várni. Ezért jobb a timeres lekérdezés.
Helló Mindenkinek.
A következő a kérdésem. 16F630-t használok, belső oszcillátorral. Hogyan tudom finomhangolni az oszcillátort (ha lehetséges ez),illetve mérni, hogy mennyit hangoltam. Nem a műszerezettség, és a annak használata a gond, hanem, hogy hol tudom ellenőrizni. Köszönettel.
Ellenőrizni a legegyszerűbben úgy tudod, hogy a config byte-jában egedélyezed a belső órajel kimenetet.
101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN kalibrálni pedig az osccal regiszterben beállított értékkel lehet: 2.2.2.7 OSCCAL Register The Oscillator Calibration register (OSCCAL) is used to calibrate the internal 4 MHz oscillator. It contains 6 bits to adjust the frequency up or down to achieve 4 MHz.
Az adatlap 56. oldalán ott a válasz. A programmemória utolsó szaván van egy kalibrációs érték egy RETLWs sorban konstansként, azt módosítva hangolható az oszcillátor, és a frekvencia negyedét az RA4-es lábon ki is léptetheti, ha beállítod. Még példaprogram is van a kalibráláshoz.
Szia Kobold.
Igen, természetesen olvasom, és ha jól látom, akkor ez az érték törléskor elvész? Valószínűleg itt veszíthettem el az értéket. Köszönettel
Igen, teljes törléskor ez elveszik. Mindenképp ajánlott először kiolvasni, és beleírni a forráskódba is a legvégére (a 0x3FF címre) RETLW xx alakban, biztos, ami biztos alapon, utána egyszerűbb a módosítás is (van kiindulási alap).
Viszont ha pickit2 -vel programozol, az vissza tudja állítani.
Helló Lidi.
Természetesen neked is köszönöm a segítségedet.
Helló Lidi.
Azzal programozok. Hogy tudom visszaállítani? Köszönettel
A pickit2 gyári égető programjában a tools menüben találod ezt a funkciót.
Helló Lidi.
Naiv kérdés. Ha már kivettem a PIC-t és a bezártam a programot, akkor is vissza tudja állítani? Magyarul: ez az érték máshol is el van tárolva a PIC-ben, és onnan vissza tudja hozni a PICKIT2? Köszönettel
Szia Sendi,
Nem, ezt a PicKit2 ugy allitja vissza, hogy bekalibralja. Azaz megezi milyen gyors - ha jol emlekszem lekuld neki egy kis programocskat amit ugye a PIC vegrehajt, elkezdi billegtetni az egyik labat es ebbol ugye fog latszani hogy milyen sebesseggel teszi ezt. Ezt lemeri es kiszamolja a szukseges kalibracios erteket. Amugy a PicKit2 mindig kiolvassa ezt a szamot es automatikusan vissza irja, es figyelmeztet ha barmi modon felul akarnad irni.
Helló Trudnai.
Köszönöm, kipróbálom. Köszönettel.
Üdv Mindenkinek.
A PICKIT2-ben és a memóriában is megtaláltam az oszcillátor beállítást. A PICKIT2-ben találtam még a BANDGAP-t. Utána nézve, ez energia pályákat jelent a különböző félvezetőkben. De mit jelent egy PIC-ben az értéke? Köszönettel.
Sziasztok ,lenne egy kérdésem, megépitettem a PicKit2-t de nem tudom, hogy a kimenetek (1-6) közül melyik láb megy a programozandó pic mclr, pgm, stb lábaira, tudna valaki ebben segíteni?
Előre is köszi.
Szia Sendi,
Ennek a BOR-hoz van koze. Ugye a BOR (Brown Out Reset) arra lett kitalalva, hogy ha a tap feszultseg kritikus ertek ala csokken akkor reseten tartsa a chipet mindaddig amig a tap helyre nem all - ez pl a memoria tartalmanak elveszitese ill annak veszelye miatt is kell. a a tap helyre all akkor pl a firmware-nek van eselye a memoria tartalom ellenorzesere vagy inicializalgatasokra stb. A bandgappel ezt lehet kalibralni, hogy hany volton kovetkezzen be ez a reset - nagyjabol 2V - 2.3V a 4 lehetseges ertekkel. ugy tudom gyarilag 1 vagy 2-es ertekeket szoktak alkalmazni ami 1 eseteben olyan 2.15V, 2 eseteben pedig olyan 2.2V kornyeken van.
Konkrétan erről lenne szó, a GND az megvan de a többit nem tudom sajnos, előre is köszi a segítséget.
Üdv: Doncso
Helló Mindenkinek.
Még mindig a PIC belső ferki beállításával szenvedek. A PICKIT2 ben a osccal értékét a 3FF címen beállítom 0000-től 3FFF-ig bármire, azt beírja (törli a memóriát) rátöltöm a prg-t. Az osccal marad a beállított érték. Az osc kimeneten mérem a prekit (1.148 MHz) mely nem változik(független az osccal értékétől. 16F630-as 3. lábán. Mit rontok el? Köszönettel.
Helló Mindenkinek.
Úgy tünik, hogy tévedtem, az 5. számjegyet állítja. Két PIC frekije között közel 100KHz az eltérés. Az korrigálható? Az osccal csak kicsit állít. Köszönettel.
Most akkor tudod állítani végülis ? Amúgy az nemjó ha csak úgy beirsz egy értéket a 3FF címre, mivel annak az (ha jól emlékszem retlw, de nem vagyok asm guru) utasitás opkódját is tartalmaznia kell, nem csak egy osccal értéket. Tehát nem írhatsz oda bármit 0000-3FFF ig. És a programod elején kell a w-ből beírnod az osccalba a kalibrációs értéket.
Helló Lidi
Az 5. számjegy már folyamatosan ugrál, de mintha az már változna.(átlagban). De az is lehet, hogy csak beképzelem. A PICKIT2-ben van egy menüpont (az előbb tanultam), hogy SET OSCCAL, és az beírja a helyére. Köszönettel.
Nem igazán értem, hogy milyen 5. számjegy ugrál. És az sem világos hogy betöltöd-e az oscal regiszterbe az uj értéket, vagy csak a memoria utolsó tárhlyére írod be. Milyen nyelven programozod ?
Már egy ideje figyelemmel kísérem ezt a freki beállítást, és bevallom nem nagyon értem ezt a 3FF címre való történetet, ezért ebben a csapásirányban nem is tudok hozzászólni.
Viszont szerintem a megoldás az az OSCCAL regiszter beállítása az adatlapok szerint, amit az induló programod elején feltöltesz. Hogy milyen módon deríted ki a betöltendő értéket, az részletkérdés. Lehet próbálkozni, vagy a PK2-vel kiszámoltatni. Nyílván a betöltés MOVLW cal_érték, majd MOVWF OSCCAL módon kell megtenni, vagy más nyelvekben az ennek megfelelő szintaktisban, pl. OSCCAL=cal_érték. Csatoltam az adatlap ide vonatkozó részét...
Ha jol megnezed a rajzot az ICSP1-re van rakotve a DC-DC stepup ami eloallitja a 13V Vpp-t, utana ha jol latom ugyanolyan sorrendben vannak a labak ahogy az eredeti PicKit2-ben, tehat:
ICSP1: Vpp ICSP2: Vdd ICSP3: Vss ICSP4: ICSPDAT / PGD ICSP5: ICSPCLK / PGC ICSP6: Auxiliary / PGM - ezt nem kotelezo bekotni csak bizonyos eepromoknal vagy ha azt szeretned, hogy LVP-ben programozd a PIC-et, mar amelyiknel ez lehetseges. |
Bejelentkezés
Hirdetés |