osccon registeri

Başlatan selvi, 07 Mayıs 2014, 20:36:00

selvi

  asagida 16f88 icin dahili osilator icin register degeri var.ben dahili olarak 8mhz kullanmak istiyorum.ama registerin farkli degerlerinde bile islemci calisiyor.osscon=0X70,osscon=0x7a,osscon=0x7c de de calisiyor.tam olarak osccon kac olmali.bu deger farkliliklarda nasil calisiyor.osccon registerin ilk 4 bittin karsiligi nedir?
OSCCON = 0X70;   // internal osc, 8M osc



OSCCON: OSCILLATOR CONTROL REGISTER (ADDRESS 8Fh)
Note: The OST is only used when switching to
XT, HS and LP Oscillator modes.
U-0 R/W-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R/W-0
— IRCF2 IRCF1 IRCF0 OSTS(1) IOFS SCS1 SCS0
bit 7 bit 0
bit 7 Unimplemented: Read as '0'
bit 6-4 IRCF<2:0>: Internal RC Oscillator Frequency Select bits
000 = 31.25 kHz
001 = 125 kHz
010 = 250 kHz
011 = 500 kHz
100 = 1 MHz
101 = 2 MHz
110 = 4 MHz
111 = 8 MHz
bit 3 OSTS: Oscillator Start-up Time-out Status bit(1)
1 = Device is running from the primary system clock
0 = Device is running from T1OSC or INTRC as a secondary system clock
Note 1: Bit resets to '0' with Two-Speed Start-up mode and LP, XT or HS selected as the
oscillator mode.
bit 2 IOFS: INTOSC Frequency Stable bit
1 = Frequency is stable
0 = Frequency is not stable
bit 1-0 SCS<1:0>: Oscillator Mode Select bits
00 = Oscillator mode defined by FOSC<2:0>
01 = T1OSC is used for system clock
10 = Internal RC is used for system clock
11 = Reserved
Yaşam anlamlandırıldıkça kutsaldır....

Tagli

Her durumda çalışması normal.

Küçük 2 bit, yani 0. ve 1. bitler clock kaynağını seçiyor. Dahili 8 MHz kullanmak istiyorsan bunları 00 bırakman gerekiyor. Elbette config bitlerinde dahili osilatörü seçmen gerekli. OSCCON = 0X70; ifadesi doğru yani.

0x7a niye çalışıyor? Aslında çalışmıyor. Daha doğrusu, dahili 31.25 kHz'lik RC osilatörü bağlıyorsun. Onun hızı sabit. IRCF bitlerinden etkilenmiyor. Çalışır ama yavaş çalışır.

0x7c niye çalışıyor? Burada 2. ve 3. bitleri 1 yapmaya çalışıyorsun. Bunlar gösterge bitleri ve sadece okunabilir durumdalar (ama garip bir şekilde IOFS yazılabilir de gözüküyor. Saçma, belki datasheet'te hata vardır.) Yani 0x70 ile 0x7c arasında bir fark yok.
Gökçe Tağlıoğlu