Jste zde

Kalibrace RC osc. u PIC 12C5xxA

Jednočipové mikrořadiče PIC - Microchip řady 12 umožňují jako zdroj hodinového kmitočtu zvolit vnitřní RC oscilátor. Výrobně však nelze při zachování ceny zaručit přesnost tohoto oscilátoru a výrobce proto garantuje značný rozsah kmitoštu interního RC oscilátoru. Tento článek by vám měl pomoci zpřesnit frekvenci interního RC oscilátoru kalibrací.

Typická frekvence interního RC oscilátoru PIC 12Cxx je 4 MHz. Výrobce počítal s rozptylem parametrů při výrobě a teplotním driftem a proto umožnil dodatečnou kalibraci RC oscilátoru za běhu programu. Zápisem konstanty do jednoho ze speciálních registrů lze v jistých mezích „doladit“ hodinový kmitočet. Do každého vyrobeného čipu přednastavuje výrobce při testování takovou hodnotu, aby výsledná frekvence byla právě co nejblíže oněch 4 MHz.

U aplikací, kde není potřeba udržovat frekvenci RC oscilátoru na přesné hodnotě, se můžeme na konstantu od výrobce víceméně spolehnout a stačí ji pouze na začátku běhu programu přenést do kalibračního registru OSCCAL. Tam, kde požadujeme větší stabilitu po delší dobu, nebo předpokládáme větší teplotní výkyvy je třeba vnitřní oscilátor kalibrovat podle vhodného externího signálu.

Registr OSCCAL je osmibitový, ale významné jsou pouze nejvyšší čtyři bity u verzí 12C5XX, nebo vyšších šest bitů u verzí PIC12C5xxA. Následující text je zaměřen na „áčkovou“ verzi.

Firma Microchip je v popisu kalibračního registru poměrně skoupá. Z katalogového listu se dozvíme pouze, že při zvyšování zapsané hodnoty kmitočet oscilátoru roste a při snižování klesá. Pokud má vnější normálový kmitočet dostatečně dlouhé trvání, lze konečným počtem iterací zkalibrovat žádaný kmitočet. V situaci, kdy máme pro kalibraci k dispozici například jediný normálový impuls jsme v koncích. Pro řešení takového úkolu musíme znát nejen jak se kmitočet mění, ale i o kolik. Tuto informaci jsem nenašel ani v katalogovém listu, ani v aplikačních poznámkách, proto jsem závislost kmitočtu oscilátoru na obsahu kalibračního registru změřil a uvádím jej v následující tabulce.

Naměřené hodnoty


OSCCAL
[ - ]

[Hz]
f / fn
[ % ]
0 2 474 167 61,85
1 2 504 410 62,61
2 2 546 175 63,65
3 2 577 858 64,45
4 2 642 664 66,07
5 2 674 347 66,86
6 2 714 671 67,87
7 2 746 355 68,66
8 2 801 080 70,03
9 2 832 763 70,82
10 2 871 647 71,79
11 2 901 890 72,55
12 2 966 697 74,17
13 2 996 940 74,92
14 3 037 264 75,93
15 3 067 507 76,69
OSCCAL
[ - ]

[Hz]
f / fn
[ % ]
16 3 146 715 78,67
17 3 176 958 79,42
18 3 217 282 80,43
19 3 247 525 81,19
20 3 310 891 82,77
21 3 341 134 83,53
22 3 380 018 84,50
23 3 410 261 85,26
24 3 464 986 86,62
25 3 493 789 87,34
26 3 532 673 88,32
27 3 564 356 89,11
28 3 627 723 90,69
29 3 657 966 91,45
30 3 695 410 92,39
31 3 727 093 93,18
OSCCAL
[ - ]

[Hz]
f / fn
[ % ]
32 3 814 941 95,37
33 3 846 625 96,17
34 3 886 949 97,17
35 3 915 752 97,89
36 3 977 678 99,44
37 4 007 921 100,20
38 4 048 245 101,21
39 4 077 048 101,93
40 4 131 773 103,29
41 4 162 016 104,05
42 4 200 900 105,02
43 4 231 143 105,78
44 4 293 069 107,33
45 4 323 312 108,08
46 4 362 196 109,05
47 4 392 439 109,81
OSCCAL
[ - ]

[Hz]
f / fn
[ % ]
48 4 468 767 111,72
49 4 500 450 112,51
50 4 539 334 113,48
51 4 569 577 114,24
52 4 625 743 115,64
53 4 657 426 116,44
54 4 694 869 117,37
55 4 723 672 118,09
56 4 774 077 119,35
57 4 802 880 120,07
58 4 838 884 120,97
59 4 867 687 121,69
60 4 926 733 123,17
61 4 955 536 123,89
62 4 990 099 124,75
63 5 018 902 125,47

Měření jsem prováděl na vzorku PIC12C519A/JW při napájecím napětí 5V a při pokojové teplotě. Na obr. 1 jsou data z tabulky ve formě grafu.

graf

Kalibrační konstanta pro jmenovitý kmitočet se samozřejmě mění kus od kusu. Pro testování jsem měl bohužel k dispozici pouze jeden čip, takže nemohu naměřené závislosti zevšeobecňovat. Uvedené hodnoty jsou zajímavé i pro informaci, v jakých mezích lze kmitočtový rozsah měnit. 
 

Hodnocení článku: