Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: bulutay - 21 Kasım 2016, 14:08:52

Başlık: 16f1827 de kristal ayarı
Gönderen: 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
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 14:10:05
#fuses INTRC_IO,PLL  bu şekilde yazıyorum. ilk mesajda yanlış yazmışım
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Eren Eraslan - 21 Kasım 2016, 14:21:16
hocam datasheetteki 58. sayfaya dikkat edin.
32mhz için gerekli register ayarlamalarından bahsediyor

http://ww1.microchip.com/downloads/en/DeviceDoc/41391D.pdf
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 14:24:47
kardeşim çok baktım ama atladıgım bir şey var . bir türlü stabil çalışmıyor 32 mhz  de
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 14:26:25
65. sayfadaki osconn ayarlamalarını yapıyorum.  ama olmuyor. yapamadım bir türlü
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Eren Eraslan - 21 Kasım 2016, 14:37:03
The 4xPLL is not available for use with the internal
oscillator when the SCS bits of the OSCCON register
are set to '1x'. The SCS bits must be set to '00' to use
the 4xPLL with the internal oscillator.


Osccon Registerını 0b11110000 olarak güncelleyip dener misin hocam
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 14:53:05
onu denedim kardeşim. ama olmadı bir türlü
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Eren Eraslan - 21 Kasım 2016, 14:54:49
Peki şöyle yapalım. Sorunun tam kaynağına inelim. 1 saniyelik blink yaptığında skoptan ne okuyorsun?
Yada osc hiç mi çalışmıyor
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 14:56:50
scop  yok
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Eren Eraslan - 21 Kasım 2016, 14:59:01
sende hiç yardımcı olmuyorsun :)
devrenin çalışıp-çalışmadığını nereden anlıyorsun peki?
led yakıp söndüremez misin en azından
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 15:11:32
osc=0b11111010 yapınca çalıştı bit 6-3 ün bir tane bitini atlamışım çok tşk  sabahtan bu yana ugraşıyordum. çok tşk
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 21 Kasım 2016, 15:13:34
osctune register ini de ayarlamak gerekiyormuş 32 için
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Eren Eraslan - 21 Kasım 2016, 15:25:45
32mhz için  SCS bitini 0 yap diyordu halbuki.  Kolay gelsin.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Ersin - 21 Kasım 2016, 16:09:17
#fuses INTRC_IO,NOWDT,PROTECT,NOLVP,NOFCMEN,NOBROWNOUT,NODEBUG
#use delay(int=32000000)  // dahili osc 32mhz

Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 22 Kasım 2016, 15:21:28
SCS 0 yaptıgımda  da olmadı
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: eeburakdemir - 22 Kasım 2016, 15:40:49
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.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: mehmet - 22 Kasım 2016, 17:50:54
https://www.picproje.org/index.php/topic,60078.msg464483.html#msg464483
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 22 Kasım 2016, 23:49:59
biraz daha ugraşacagız .inş  bir sonuç alırız.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: sadogan - 23 Kasım 2016, 12:39:51
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.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: xoom - 23 Kasım 2016, 19:04:54
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
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: Z80 - 23 Kasım 2016, 20:21:46
#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...

Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: sadogan - 23 Kasım 2016, 20:25:49
32mhz olmayacak 8mhz olcak. Dahili osilatorle ile 16mhz olabiliyor diye biliyorum.
onun içinde
#use delay(internal=16MHz)
Şimdi datasheet baktımda olabiliyormuş
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: JOKERAS - 23 Kasım 2016, 21:41:15
#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. 
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: 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


Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: JOKERAS - 24 Kasım 2016, 12:30:33
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?

Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 24 Kasım 2016, 16:26:09
#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.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 24 Kasım 2016, 16:27:37
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ü.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 24 Kasım 2016, 16:29:37
osc=0b 1111 0010 bu şekilde 32 mhz
osc=0b 1111 1010  16 mhz 

16 da çalışıyor 32 de çalışmıyor.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 24 Kasım 2016, 16:41:57
  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
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 24 Kasım 2016, 16:44:05
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
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: baran123 - 24 Kasım 2016, 16:50:54
Sayın @bulutay hocam naçizane bir tavsiyede bulunmak isterim.
Seni bu derleyiciye bağlayan bir şey yoksa XC8 e geçmeni öneririm.
Bu kadar çırpınmana gerek kalmaz.
3-5 register ile bitirirsin bu OSC Config işini :)
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: JOKERAS - 24 Kasım 2016, 17:07:30
bulutay, OSCTAT  Oislatör durum bitlerini tutan register.
Ona ne yapasanız yapın osc değişmez.

OSCTUNE Registeri ise şu.
Bir işlemcide İnternal Osc kullandığınız zaman iç osilatör yapısının R, C, Cmos, TTL elemanları bir kalıptan çıkmış
gibi olmaz,sonuçta gerçek hayatta 8-16-32Mhz vs internal olarak ayarladığınız osc tam değer vermez.

8Mhz ayarlarsınız tam 8Mhz olmaz bu.+/- töleransı vardır.Bir işlemcide 7.980Mhz osc olurken aynı işlemciden başkası
8.100Mhz verebilir.
Veya Tam 8Mhz ayalamış ve çalışyordur fakat ortam ısısı,işlemci chipinin kendi ürettiği ısı bu osilatörün kaymasına neden olur.
Bu çok kritik durumlar için önem azeder.
İşte o gibi durumlarda Osilatör'ü Tuning edersiniz.
Dolayısı ile o registerlerin bir etkisi olmaz.Boşuna kafanızı karıştırmayın.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 24 Kasım 2016, 17:11:42
teşekkürler ilgilediginiz için

biraz daha ugraşalım bakalım.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: xoom - 24 Kasım 2016, 18:40:05
Alıntı yapılan: baran123 - 24 Kasım 2016, 16:50:54
Sayın @bulutay hocam naçizane bir tavsiyede bulunmak isterim.
Seni bu derleyiciye bağlayan bir şey yoksa XC8 e geçmeni öneririm.
Bu kadar çırpınmana gerek kalmaz.
3-5 register ile bitirirsin bu OSC Config işini :)
Sorun PIC C compiler'da değil
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: sadogan - 24 Kasım 2016, 19:18:34
Alıntı yapılan: JOKERAS - 24 Kasım 2016, 12:30:33
@sadogan  ,Siz ve bir kaç arkadaş bu direktifi gösterdiniz,
O zaman bu arkadaşlar niye olmuyor diyor?


Bilimiyorum ben 16 mhz de çalıştırmıştım.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: baran123 - 24 Kasım 2016, 19:32:37
Alıntı yapılan: xoom - 24 Kasım 2016, 18:40:05
Sorun PIC C compiler'da değil
Hocam ben sorun orada demedim zaten.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: mehmet - 24 Kasım 2016, 20:46:03
//genel de...
#BIT PLLR = 0x9A.6
#BIT HFIOFR = 0x9A.4
#BYTE OSCCON = 0x99


//main de en başa ilave
OSCCON = 0b11110000;
delay_ms(1000);
while (!PLLR);
while (!HFIOFR);
//diger işlemler...


Olur mu acaba? Zira CCS C bilmiyorum...
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 02 Nisan 2017, 13:51:50
https://gputils.sourceforge.io/html-help/PIC16F1827-conf.html
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 02 Nisan 2017, 13:52:56
https://gputils.sourceforge.io/html-help/PIC16F1827-conf.html


kristal ayarları confıig word de yapılıyor 32 mhz çalıştırmak için
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: RaMu - 02 Nisan 2017, 16:26:39
Konu üzerinden epey vakit geçmiş:
Bu kadar zaman yılmadım, sonucu buldum, forumada bilgi veririm diyorsun :)

CcsC için register ayarı vs. yapmaya gerek yoktur,
Project Wizard ile proje oluşturulurken,
dahili osilatör ve 32 MHz seçilirse,
gerekli kod CcsC tarafından üretilir ve
MCU 32MHz dahili osilatörle çalışır.

Gerçekte denediğim bir devrenin kodlarından alıntı:
tek osilatör ayarı bu;

#include <16F1827.h>
#device ADC=16

//.
//. diğer konfigurasyon ayarları
//.

#fuses intrc_io
#use delay(internal=32MHz)

Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 02 Nisan 2017, 17:46:47
en kısa zamanda deniyecegim
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: RaMu - 02 Nisan 2017, 18:22:08
Dene yaz,
bende 16F1827 datasheet ten
bu osilatör ayar ile ilgili detay bir durum gördüm onu yazayım sonra.
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 26 Mayıs 2017, 00:50:47
CONFIGURATION WORD 1 ty olarak yazdım    f2 f1 f0 fosc
#byte     ty = 0x8007
#bit   f2     = ty.2
#bit   f1     = ty.1
#bit   f0     = ty.0
#bit   mcrl     = ty.5
CONFIGURATION WORD 2 pll olarak yazdım pl de pll 13 bit
#byte     pll = 0x8008
#bit   pl     = ty.13

çalıştı
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 26 Mayıs 2017, 00:57:30
pll 8.bit
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 26 Mayıs 2017, 00:57:48
pl.8
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: bulutay - 26 Mayıs 2017, 00:59:26
#byte     pll = 0x8008
#bit   pl     = pl.8

düzeltme
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: rree - 22 Temmuz 2017, 01:42:34
Alıntı yapılan: bulutay - 26 Mayıs 2017, 00:50:47
CONFIGURATION WORD 1 ty olarak yazdım    f2 f1 f0 fosc
#byte     ty = 0x8007
#bit   f2     = ty.2
#bit   f1     = ty.1
#bit   f0     = ty.0
#bit   mcrl     = ty.5
CONFIGURATION WORD 2 pll olarak yazdım pl de pll 13 bit
#byte     pll = 0x8008
#bit   pl     = ty.13

çalıştı
Bunu nereye yazdınız ccs  CONFIGURATION WORD nerededir?
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: rree - 29 Temmuz 2017, 08:41:23
     CCS 5.65V de konfig fabrika ayarları hepsi 1 tanımlı geliyor. Benim analizimde.
Çözüm olarak Konfig ayarlarını Sıfırlayan Fuse "CN1CLR,CN2CLR" tanımı ekledim.

Benim devrede 10Mhz kristal var.

#FUSES CN1CLR,CN2CLR,NOWDT,HS,PROTECT
#use delay(clock=10MHZ)

1- Yönetici olarak ccs çalıştırın

2- Tools>Device Editor>

3-
Name     Mask Value CW
CN1CLR  1FFF  0000   1
CN2CLR  1FFF  0000   2
4-Kaydet

Bakalım düzgün çalışacakmı
Başlık: Ynt: 16f1827 de kristal ayarı
Gönderen: rree - 29 Temmuz 2017, 18:35:01
Bu sefer internal osc geçti biraz daha incelemeli!