Datasheets Oscillator instellingen

Oscillator Modes
Oscillator mode instellingen maken deel uit van de “config (fuses) settings”. Dit zijn voor instellingen die bepalend zijn hoe de controller opstart (ook na een reset) een soort primaire instellingen dus. Meestal geef je ze in het begin van je programma op. Een Proton voorbeeld voor de 18F25K20 zie je hieronder.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CONFIG_START
'primaire oscillator instellingen    
     'FOSC = HS                              ;external oscillator
     FOSC = INTIO67                          ;Internal oscillator block, port function on RA6 and RA7
'bijkomende oscillator instellingen  
     FCMEN = Off                             ;Fail-Safe Clock Monitor disabled
     IESO = Off                              ;internal external switchover mode
     PWRT = On                               ;power-up timer
'overige instellingen
     BOREN = On                              ;brown-out reset
     BORV = 27                               ;brown-out reset value (2,7V)
     WDTEN = Off                             ;watchdog timer
     WDTPS = 128                             ;1:128 WDT prescalar
     PBADEN = Off                            ;analog port B<4:0>
     STVREN = On                             ;;stack overflow reset
     LVP = Off                               ;low voltage programming
     XINST = Off                             ;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
     Debug = Off                             ;no debug
     CCP2MX = PORTBE                         ;CCP2 input/output is multiplexed with RB3
CONFIG_END

De benamingen kunnen per type PIC verschillend zijn. Zie hieronder de 18F452, 18F25K22 en 18F2550.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
CONFIG_START
'Code Protection bits:   18F452
    'CP = On             ;All of program memory code protected  
    CP = OFF            ;Program memory code protection off  
'Oscillator Selection bits:
    'OSC = LP            ;LP oscillator  
    'OSC = XT            ;XT oscillator  
    OSC = HS            ;HS oscillator  
    'OSC = RC            ;RC oscillator  
    'OSC = EC            ;EC oscillator w/OSC2 configured As divide-by-4 clock Output  
    'OSC = ECIO          ;EC oscillator w/OSC2 configured As RA6  
    'OSC = HSPLL         ;HS oscillator with PLL enabled/Clock frequency = (4 x FOSC)  
    'OSC = RCIO          ;RC oscillator w/OSC2 configured As RA6  
'Oscillator SYSTEM Clock Switch Enable Bit:
    'OSCS = On           ;Oscillator SYSTEM clock switch option is enabled (oscillator switching is enabled)  
    OSCS = OFF          ;Oscillator SYSTEM clock switch option is disabled (main oscillator is source)  
'Power-up Timer Enable Bit:
    PWRT = On           ;PWRT enabled  
    'PWRT = OFF          ;PWRT disabled  
'Brown-out Reset Enable Bit:
    'BOR = OFF           ;Brown-out Reset disabled  
    BOR = On            ;Brown-out Reset enabled  
'Brown-out Reset Voltage bits:
    'BORV = 45           ;VBOR Set To 4.5V  
    'BORV = 42           ;VBOR Set To 4.2V  
    BORV = 27           ;VBOR Set To 2.7V  
    'BORV = 25           ;VBOR Set To 2.5V  
'WATCHDOG Timer Enable Bit:
    WDT = OFF           ;WDT disabled (control is placed On the SWDTEN Bit)  
    'WDT = On            ;WDT enabled  
'WATCHDOG Timer Postscale Select bits:
    'WDTPS = 1           ;1:1  
    'WDTPS = 2           ;1:2  
    'WDTPS = 4           ;1:4  
    'WDTPS = 8           ;1:8  
    'WDTPS = 16          ;1:16  
    'WDTPS = 32          ;1:32  
    'WDTPS = 64          ;1:64  
    WDTPS = 128         ;1:128  
'CCP2 Mux Bit:
    CCP2MX = OFF        ;CCP2 Input/Output is multiplexed with RB3  
    'CCP2MX = On         ;CCP2 Input/Output is multiplexed with RC1  
'Stack Full/Underflow Reset Enable Bit:
    STVR = OFF          ;Stack Full/Underflow will Not cause RESET  
    'STVR = On           ;Stack Full/Underflow will cause RESET  
CONFIG_END

.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
;   Oscillator Selection bits:
;     FOSC = LP            LP oscillator
;     FOSC = XT            XT oscillator
;     FOSC = HS            HS oscillator
;     FOSC = RC            External RC oscillator, CLKOUT function on RA6
;     FOSC = EC            EC oscillator, CLKOUT function on RA6
;     FOSC = ECIO6         EC oscillator, port function on RA6
;     FOSC = HSPLL         HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1)
;     FOSC = RCIO6         External RC oscillator, port function on RA6
;     FOSC = INTIO67       Internal oscillator block, port function on RA6 and RA7
;     FOSC = INTIO7        Internal oscillator block, CLKOUT function on RA6, port function on RA7
;Bijkomende Oscillator bits
;   Fail-Safe Clock Monitor Enable bit:
;     FCMEN = OFF          Fail-Safe Clock Monitor disabled
;     FCMEN = ON           Fail-Safe Clock Monitor enabled
;
;   Internal/External Oscillator Switchover bit:
;     IESO = OFF           Oscillator Switchover mode disabled
;     IESO = ON            Oscillator Switchover mode enabled
;
;   Power-up Timer Enable bit:
;     PWRT = ON            PWRT enabled (66ms delay)
;     PWRT = OFF           PWRT disabled
;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
;   Oscillator Selection bits:
;     FOSC = LP            LP oscillator
;     FOSC = XT            XT oscillator
;     FOSC = HSHP          HS oscillator (high power > 16 MHz)
;     FOSC = HSMP          HS oscillator (medium power 4-16 MHz)
;     FOSC = ECHP          EC oscillator, CLKOUT function on OSC2 (high power, >16 MHz)
;     FOSC = ECHPIO6       EC oscillator (high power, >16 MHz)
;     FOSC = RC            External RC oscillator, CLKOUT function on OSC2
;     FOSC = RCIO6         External RC oscillator
;     FOSC = INTIO67       Internal oscillator block
;     FOSC = INTIO7        Internal oscillator block, CLKOUT function on OSC2
;     FOSC = ECMP          EC oscillator, CLKOUT function on OSC2 (medium power, 500 kHz-16 MHz)
;     FOSC = ECMPIO6       EC oscillator (medium power, 500 kHz-16 MHz)
;     FOSC = ECLP          EC oscillator, CLKOUT function on OSC2 (low power, <500 kHz)
;     FOSC = ECLPIO6       EC oscillator (low power, <500 kHz)
;
;Bijkomende Oscillator setting bits
;   4X PLL Enable:
;     PLLCFG = OFF         Oscillator used directly
;     PLLCFG = ON          Oscillator multiplied by 4
;
;   Primary clock enable bit:
;     PRICLKEN = OFF       Primary clock can be disabled by software
;     PRICLKEN = ON        Primary clock enabled
;
;   Fail-Safe Clock Monitor Enable bit:
;     FCMEN = OFF          Fail-Safe Clock Monitor disabled
;     FCMEN = ON           Fail-Safe Clock Monitor enabled
;
;   Internal/External Oscillator Switchover bit:
;     IESO = OFF           Oscillator Switchover mode disabled
;     IESO = ON            Oscillator Switchover mode enabled
;
;   Power-up Timer Enable bit:
;     PWRTEN = ON          Power up timer enabled (66ms delay)
;     PWRTEN = OFF         Power up timer disabled


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
;   Oscillator Selection bits:
;     FOSC = XT_XT         XT oscillator (XT)
;     FOSC = XTPLL_XT      XT oscillator, PLL enabled (XTPLL)
;     FOSC = ECIO_EC       EC oscillator, port function on RA6 (ECIO)
;     FOSC = EC_EC         EC oscillator, CLKO function on RA6 (EC)
;     FOSC = ECPLLIO_EC    EC oscillator, PLL enabled, port function on RA6 (ECPIO)
;     FOSC = ECPLL_EC      EC oscillator, PLL enabled, CLKO function on RA6 (ECPLL)
;     FOSC = INTOSCIO_EC   Internal oscillator, port function on RA6, EC used by USB (INTIO)
;     FOSC = INTOSC_EC     Internal oscillator, CLKO function on RA6, EC used by USB (INTCKO)
;     FOSC = INTOSC_XT     Internal oscillator, XT used by USB (INTXT)
;     FOSC = INTOSC_HS     Internal oscillator, HS oscillator used by USB (INTHS)
;     FOSC = HS            HS oscillator (HS)
;     FOSC = HSPLL_HS      HS oscillator, PLL enabled (HSPLL)
;
;Bijkomende Oscillator setting bits
;   PLL Prescaler Selection bits:
;     PLLDIV = 1           No prescale (4 MHz oscillator input drives PLL directly)
;     PLLDIV = 2           Divide by 2 (8 MHz oscillator input)
;     PLLDIV = 3           Divide by 3 (12 MHz oscillator input)
;     PLLDIV = 4           Divide by 4 (16 MHz oscillator input)
;     PLLDIV = 5           Divide by 5 (20 MHz oscillator input)
;     PLLDIV = 6           Divide by 6 (24 MHz oscillator input)
;     PLLDIV = 10          Divide by 10 (40 MHz oscillator input)
;     PLLDIV = 12          Divide by 12 (48 MHz oscillator input)
;
;   System Clock Postscaler Selection bits:
;     CPUDIV = OSC1_PLL2   [Primary Oscillator Src: /1][96 MHz PLL Src: /2]
;     CPUDIV = OSC2_PLL3   [Primary Oscillator Src: /2][96 MHz PLL Src: /3]
;     CPUDIV = OSC3_PLL4   [Primary Oscillator Src: /3][96 MHz PLL Src: /4]
;     CPUDIV = OSC4_PLL6   [Primary Oscillator Src: /4][96 MHz PLL Src: /6]
;
;   USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1):
;     USBDIV = 1           USB clock source comes directly from the primary oscillator block with no postscale
;     USBDIV = 2           USB clock source comes from the 96 MHz PLL divided by 2
;
;   Fail-Safe Clock Monitor Enable bit:
;     FCMEN = OFF          Fail-Safe Clock Monitor disabled
;     FCMEN = ON           Fail-Safe Clock Monitor enabled
;
;   Internal/External Oscillator Switchover bit:
;     IESO = OFF           Oscillator Switchover mode disabled
;     IESO = ON            Oscillator Switchover mode enabled
;
;   Power-up Timer Enable bit:
;     PWRT = ON            PWRT enabled
;     PWRT = OFF           PWRT disabled

De selection bits voor andere type PIC’s kun je terug vinden onderin de device.inc files zoals die in de “C:\Program Files\Microchip\MPASM Suite” directory staan als je Microchip MPLAB daar geinstalleerd hebt. (Download)

Oscillator Blok Schema
Hierboven het blok schema van het 18F25K20 oscillator deel.
Bij de verschillende blokken worden diverse register namen genoemd (FOSC, OSCTUNE, OSCCON) deze registers bepalen hoe het oscillator deel ingesteld wordt. het FOSC register zijn de eerder genoemde oscillator selectie bits config (fuse) instellingen. Deze bepalen dus of de oscillator in LP, XT, HS, RC, EC of Internal mode opstart.(later meer over deze modes)
Indien in internal mode (interne oscillator van de 18F25K20, geen kristal dus) wordt opgestart, komt het OSCCON register om de hoek kijken. Hoofdstuk 2.2. De interne oscillator werkt op 16Mhz en kan op 8 manieren gedeeld worden, OSCCON bit 6 tot 4 bepalen de deel factor. Andere instellingen van het OSCCON register vallen buiten deze uitleg.

Hoofdstuk 2.3 en 2.4 gaan over de Clock modes. We beperken ons tot de 3 kristal oscillator modes, LP, XT en HS. LP is voor b.v. horloge kristallen (31Khz). XT is voor kristallen tot 4 Mhz. HS is voor hogere frequenties.

Hoofdstuk 2.5 behandelt de al eerder genoemde Internal Clock Mode. buiten het OSCCON register hebben we hier ook nog het OSCTUNE register met als belangrijkste instelling het in en uit schakelen van het PLL blok met bit 6 (PLLEN). PLL vermenigvuldigd de oscillator frequentie met 4x. Voor de interne oscillator werkt dit alleen als 16 of 8Mhz geselecteerd is. De PLL kan hier dus niet met een primaire (fuse) setting geactiveerd worden. Een andere instelling die met het OSCTUNE register te maken is, is fijn tuning van de interne oscillator met bit 5 tot 0 van het register.

Hoofdstuk 2.6 behandelt de HSPLL setting (HS oscillator mode met 4x de kristal frequentie) en de hierboven beschreven interne oscillator met PLL.

De rest van Hoofdstuk 2 valt buiten het bestek van deze uitleg.
Bijkomende oscillator settingen komen hier aan bod. De belangrijkste is de fuse setting PWRT (delay om het kristal 66ms opstart tijd te geven voor een stabiele frequentie) die voor simpel gebruik altijd op ON gezet wordt.
De FCMEM en IESO fuse settingen kunnen voor simpel gebruik op OFF gezet worden.




Hit Counter by Digits