16f1827 de kristal ayarı

Başlatan bulutay, 21 Kasım 2016, 14:08:52

eeburakdemir

Bu yeni nesil işlemcide genelde HFINTOSC gibi bazı bitleri kontrol etmek gerekiyor. Sorununuz büyük ihtimalle bundan kaynaklı olabilir hocam. Sayfa 66 daki oscstat registerine bakın derim. HFINTOSC  bu değer 1 oluncaya kadar bekleyin, hatta öncesinde delay koysan daha güzel bile olur.
Asla pes etme...

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

bulutay

biraz daha ugraşacagız .inş  bir sonuç alırız.

sadogan

Alıntı yapılan: bulutay - 21 Kasım 2016, 14:08:52
#byte oscon=0x99
#fuses INTRIC_IO,PLL
#use delay(internal=8MHz)
void main()
{oscon=0b11110010;


}
bu şekilde kristali ayarlamaya çalışıyorum ama olmuyor. yardımcı olurmusunuz acaba
#use delay(internal=8MHz)
Osilatorle igili başka bir şey yapmayın bu yeterli.

xoom

Alıntı yapılan: sadogan - 23 Kasım 2016, 12:39:51
#use delay(internal=8MHz)
Osilatorle igili başka bir şey yapmayın bu yeterli.
Sadece onu yapinca nasil 32mhz olacak ? Hic pll ile işim olmadi merak soruyorum

Z80

#fuses INTRC_IO       //Internal RC Osc, no CLKOUT
#fuses PLL            //4X HW PLL enabled
#fuses NOCLKOUT       //I/O function on OSC2
#fuses NOWDT          //No Watch Dog Timer
#fuses NOPUT          //No Power Up Timer
#fuses MCLR           //Master Clear pin enabled
#fuses NOPROTECT      //Code not protected from reading
#fuses NOCPD          //No EE protection
#fuses NOBROWNOUT     //No brownout reset
#fuses NOIESO         //Internal External Switch Over mode disabled
#fuses NOFCMEN        //Fail-safe clock monitor disabled
#fuses STVREN         //Stack full/underflow will cause reset
#fuses NOLVP            //Low Voltage Programming on B3(PIC16) or B5(PIC18)

#use delay(internal=32000000)

En üstden üç satır clock ayarıyla ilgili.
Osccon registerini ayarlamaya gerek yok. CCS onu kendi ayarlıyor zaten...


sadogan

#21
32mhz olmayacak 8mhz olcak. Dahili osilatorle ile 16mhz olabiliyor diye biliyorum.
onun içinde
#use delay(internal=16MHz)
Şimdi datasheet baktımda olabiliyormuş

JOKERAS

#pragma config FOSC = INTOSC  //internal Osc.Portlar Digital I/O olarak kullanılabilinir.
#pragma config PLLEN = OFF       //OSCCONbits.SPLLEN = 1; İse ON olmuş OFF olmuş önemi yok.

OSCCONbits.SPLLEN = 1;           //"#pragma config PLLEN = OFF" olsa bile buradan PLL açılıp kapatılabilinir.
OSCCONbits.IRCF = 0x0E;          //8 Mhz internal Osc. 4 * 8 = 32Mhz denk.

CCS'den anlamam ama mantık bu şekilde olması lazım.
Birde şunu öğrenmek istiyorum.
Bu  #use delay(internal=16MHz) direktifinin osilatör ayarlarına ne gibi bir etkisi var?
Bu Delay fonksiyonlarını belirlenen Osc frekanslarında kullanmak için değilmi?
Bu 32Mhz olsa ne 16Mhz olsa ne. 

sadogan

#use delay(clock=16MHz)
Bu delay fonksiyonlarının belirleyen Osc frekansını belirlemekte kullanılıyor

Bu ise
#use delay(internal=16MHz)
Delay fonksiyonlarını belirleyen ocs frekansını hemde dahili osilatorun yapılanmasını sağlıyor.
Derleyici çıktısı söyle
.................... #use delay(internal=16MHz)
*
00EB:  MOVLW  20
00EC:  MOVWF  05
00ED:  MOVLW  3E
00EE:  MOVWF  04
00EF:  MOVF   00,W
00F0:  BTFSC  03.2
00F1:  GOTO   100
00F2:  MOVLW  05
00F3:  MOVWF  78
00F4:  CLRF   77
00F5:  DECFSZ 77,F
00F6:  GOTO   0F5
00F7:  DECFSZ 78,F
00F8:  GOTO   0F4
00F9:  MOVLW  2E
00FA:  MOVWF  77
00FB:  DECFSZ 77,F
00FC:  GOTO   0FB
00FD:  GOTO   0FE
00FE:  DECFSZ 00,F
00FF:  GOTO   0F2
0100:  RETURN



JOKERAS

Alıntı yapılan: sadogan - 23 Kasım 2016, 23:53:58
#use delay(clock=16MHz)
Bu delay fonksiyonlarının belirleyen Osc frekansını belirlemekte kullanılıyor

Bu ise
#use delay(internal=16MHz)
Delay fonksiyonlarını belirleyen ocs frekansını hemde dahili osilatorun yapılanmasını sağlıyor.
Derleyici çıktısı söyle
.................... #use delay(internal=16MHz)
*
00EB:  MOVLW  20
00EC:  MOVWF  05
00ED:  MOVLW  3E
00EE:  MOVWF  04
00EF:  MOVF   00,W
00F0:  BTFSC  03.2
00F1:  GOTO   100
00F2:  MOVLW  05
00F3:  MOVWF  78
00F4:  CLRF   77
00F5:  DECFSZ 77,F
00F6:  GOTO   0F5
00F7:  DECFSZ 78,F
00F8:  GOTO   0F4
00F9:  MOVLW  2E
00FA:  MOVWF  77
00FB:  DECFSZ 77,F
00FC:  GOTO   0FB
00FD:  GOTO   0FE
00FE:  DECFSZ 00,F
00FF:  GOTO   0F2
0100:  RETURN




@sadogan  ,Siz ve bir kaç arkadaş bu direktifi gösterdiniz,
O zaman bu arkadaşlar niye olmuyor diyor?


bulutay

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES PLL=ON
#fuses INTRC_IO, NOWDT, PUT, NOPROTECT, NOBROWNOUT
#use delay(internal=8MHz)
#byte osc= 0x99
#byte osctune= 0x98
#byte oscstat= 0x09A

osc=0b1111 1010;delay_ms(2);
osctune=0b00011111; delay_ms(2);
oscstat=0b01011001; delay_ms(2);

osc=0b1111 0010 yaptıgımda 16 mhz diyor datasheet de  calışıyor
ama osc= 1111 1010 veya 1111 1000 yaptıgımda çalışmıyor.

bulutay

ostune ve oscstat sız yaptıgımda da çalışmıyor. gözümden kaçan bir durum var. anlıyamadım bir türlü.

bulutay

osc=0b 1111 0010 bu şekilde 32 mhz
osc=0b 1111 1010  16 mhz 

16 da çalışıyor 32 de çalışmıyor.

bulutay

  Config1 FOSC_INTOSC,WDTE_OFF,PWRTE_ON,MCLRE_OFF,CP_ON,CPD_OFF,BOREN_OFF,CLKOUTEN_OFF,IESO_ON,FCMEN_OFF
    Config2 WRT_ALL,PLLEN_ON,STVREN_ON,LVP_OFF,BORV_19,LVP_OFF   

Declare Xtal=32 
OSCCON= %11110000

bulutay

decllare xtal=32  etepic comda bu konu geçmiş  . ordaki arkadaşlar xtal=32 yaparak çalıştırmışlar.
ccs de nasıl lyapatır xtal=32 yi