 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Pet Feb 24, 2006 12:09 pm Naslov sporočila: Kalibracija PIC 12Cxxx |
|
|
Pozdravljeni!
Pred kratkim sem začel pisati program za PIC 12F509A. Na zadnji spominski lokaciji sem prebral tovarniško kalibrirano vrednost, ki se jo vpiše v OSCCAL register, da je PIC časovno sinhroniziran na 4MHZ ob uporabi internega RC oscilatorja.
Mogoče kdo ve, kolišna je natančnost frekvence pred in po kalibriranju? V datasheetu čipov serije 12c sem zasledil, da je lahko frekvenca nekje v razponu od 3.65 da 4.3 MHz (to je verjetno bilo mišljeno, če spreminjamo vrednost registra OSCCAL iz ene skrajne vrednosti v drugo) Poleg tega pa sem zasledil, da je natančnost v obsegu 2% (vrednost po kalibraciji?). Serija 12F pa naj bi bila tovarnoško skalibrirana na 1%.
Še ena nejasnost glede vpisa kalibracijske vrednosti v register OSCCAL ob zagonu programa v PICu.
org 0x3FF ;lokacija kalibracijske vrednosti v 12C509A
org 0x00
movwf OSCCAL ; update register with factory cal value
goto Start
org 0x2b
Start ; coding begins here
Najprej se pomaknemo na zadnjo spominsko lokacijo čipa, kjer je zapisana tovarniško določena kalibracija. Tam imamo po defaultu ukaz xorlw, tako da se izvede ekskluzivni ali med kalibracijsko vrednostjo in work registrom. Dejansko naj bi se na ta način prepisala kalibracijska vrednost v work register, da jo kasneje z ukazom movwf prekopiramo v OSCCAL register. Problem je v tem, da ob resetu simulator MPLAB vrednost work registra postavi na 0xff, kar pomeni da se v register vpišejo inverzne vrednosti bitov glede na vrednost v 0x3ff. Je to samo problem simulatorja, ali se to dejansko zgodi? |
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Pet Feb 24, 2006 12:44 pm Naslov sporočila: |
|
|
V datasheetu sem zasledil:
Location 03FFh (PIC12C509, PIC12C509A,PIC12CR509A, PIC12CE519) contains
the MOVLW XX INTERNAL RCoscillator calibration value. Očitno je vpisana vrednost na PICu (prebrana vrednost na dveh PICih je bila 0C78 in 0C68-) sestavljena iz ukaza MOVLW (koda 0C)(premakne vrednost na lokaciji v w) in kalibracijske vrednosti (78 oziroma 6 . Simulator ima pa po defaultu ukaz 0F (xorlw) zaradi česaar bi bilo potrebno prednastaviti to vrednost na zadnji lokaciji, da bi simulator pravilno delal. |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pet Feb 24, 2006 3:39 pm Naslov sporočila: |
|
|
Pa kaj sploh imaš ti od tega, da to simuliraš?
MPLAB tvojemu procesorju med simulacijo doda absolutno točno frekvenco za simulacijo. Vse to ima smisel le v realnem procesorju, kjer pa na točnost poleg kalibracije vpliva še temperatura, vezje, napetosti ...
Če hočes simulirati odstopke nastavi frekvenco procesorja na željeno vrednst pa potem simuliraj. _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|