Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Timer1 sorunu

Başlatan ziyaretci, 13 Kasım 2015, 14:29:57

ziyaretci

Merhaba.

  16f877 ile yaptığım bir projede timer1 sorunsuz çalışırken, 16f1937 denetleyicisinde yaptığım aynı timer ayarları neden çalışmıyor. Kesmeye hiç gitmiyor. Hatta tek yaptığım iş; 877'ye yüklediğim yazılımı, denetleyici tanımını değiştirerek(16f1937) derliyorum. Hata ve uyarı yok.

  Sizce sorun neden kaynaklı olabilir? Gözden kaçırdığım bir nokta var galiba.
  Cevaplar için şimdiden teşekkür ederim. İyi çalışmalar.

Gökhan BEKEN

Aslında sadece işlemcinin adını değiştirip çalıştırabilseydiniz şaşırtıcı olurdu. İkisi farklı mcu'lar ve farklı komut setleri var,  birbirinden farklı registerları vardır, datasheet'den bakmak lazım aradaki farklara.
Özel mesaj okumuyorum, lütfen göndermeyin.

ziyaretci

Alıntı yapılan: Gökhan BEKEN - 13 Kasım 2015, 14:38:52
Aslında sadece işlemcinin adını değiştirip çalıştırabilseydiniz şaşırtıcı olurdu. İkisi farklı mcu'lar ve farklı komut setleri var,  birbirinden farklı registerları vardır, datasheet'den bakmak lazım aradaki farklara.

Haklısınız. Fakat CCS C ile yazdım programı. Bölme oranları vs. sürücü dosyasında mevcut.
Hani ASM veya köke müdahale eden farklı bir dille yazmadım.

Görüşleri beklerken tekrar bir inceleyeyim..

RaMu

Ben aynı kod için mcu değiştireceksem
tekrar aynı ayarlarla yeni mcu için project wizard ile proje oluşturuyorum,
eski programın gerekli yerlerini yeni derleyicinin projesine kopyalıyorum.

Yani bu kadar üşengeç olmamak lazım bence,
işi sağlama almak için biraz daha vakit harcamak daha sağlıklı oluyor.

Aslında bakarsan hangi programı yazarsam yazayım
datasheet e kesinlikle bakıyorum,
bu programı yazıyor olsaydım,
16F877 ve 16f1937 timer larını karşılaştırırdım,
CcsC de yazıyor olsam dahi.

Sıkıntı yoksa proje dosyası ve varsa simulasyonu paylaş istersen.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

ziyaretci

Hocam 16f1937 datasheetine baktım. Ayrı bir kapı koymuşlar. Onu açmadım ben. Aydınlattığınız için teşekkürler. Zaten bundan sonra denetleyicideki yer alan modülleri hazır fonksiyon ile yönetmeyeceğim. Uzun zamandır aklımdaydı ama dediğiniz gibi üşengeçlikten ve ingilizce yetersizliğinden bir türlü başlayamamıştım bu politikama. 16f1937 iyi bir ders verdi.

Karamel

@erkantr67

int a, b, c;
c = a + b;

code larini her mcirocontroller calistirir ama mesela belirli bi pic microcontroller icin yazilmis. timer registerini acan code baska birini acmayabilir. cunku. belkide onun timer unit i farkli calisiyordur? bitler birbiri ile tutmuyordur?


RaMu

Hazır o politikaya geçerken
ccsc den mplabx e de geç,
biz ccsc rahatlığına alıştık,
sen alışamadan mplabx e ısınabilirsin,
nede olsa mplabx ve xc... derleyicileri microchip in kendi ürünü,
bir zaman sonra ccsc yetmeyebilir.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

ziyaretci

#7
Alıntı yapılan: RaMu - 18 Kasım 2015, 22:37:30
Hazır o politikaya geçerken
ccsc den mplabx e de geç,
biz ccsc rahatlığına alıştık,
sen alışamadan mplabx e ısınabilirsin,
nede olsa mplabx ve xc... derleyicileri microchip in kendi ürünü,
bir zaman sonra ccsc yetmeyebilir.

Tamamdır.


mesaj birleştirme:: 20 Kasım 2015, 22:24:08

#include <16f1937.h>
#fuses HS, NOWDT, NOPUT, NOPROTECT,NOMCLR, NOCPD, NOBROWNOUT,NOIESO, NOFCMEN 
#fuses NOCLKOUT, NOWRT, NOVCAP, NOSTVREN, NOLVP, NODEBUG
#use delay(clock=20M)


//***************The descriptions of the timer 1 ******************************//
#BYTE TMR1L=0x16
#BYTE TMR1H=0x17
#BYTE T1CON=0x18
#BYTE T1GCON=0x19
#BYTE INTCON=0x0B
#BYTE PIE1=0x91


#bit TMR1ON=T1CON.0



#int_timer1
Void TimerOne(){
output_c(1);
}

Void main(){
 TMR1ON=0;
SETUP_TIMER_2(T2_DISABLED,0,1);
SETUP_TIMER_4(T4_DISABLED,0,1);
SETUP_CCP1(CCP_OFF);
SETUP_LCD(LCD_DISABLED);
SETUP_ADC_PORTS(ADC_OFF);

T1CON = 0B00111000;
PIE1=0b10000001;
TMR1L=0xfa;
TMR1H=0xff;
T1GCON=0B11000000;
INTCON=0b11000000;

TMR1ON=1;

output_c(2);
While(1);
}


Sayıcıyı bir türlü başlatamadım. Ya başlamıyor, ya da kesmeye gitmiyor.

baran123

Alıntı yapılan: RaMu - 18 Kasım 2015, 22:37:30
Hazır o politikaya geçerken
ccsc den mplabx e de geç,
biz ccsc rahatlığına alıştık,
sen alışamadan mplabx e ısınabilirsin,
nede olsa mplabx ve xc... derleyicileri microchip in kendi ürünü,
bir zaman sonra ccsc yetmeyebilir.
+1
"CCS pişmanlıktır - KAMU SPOTU" :)

ziyaretci

Alıntı yapılan: Baran Ekrem - 20 Kasım 2015, 22:33:57
+1
"CCS pişmanlıktır - KAMU SPOTU" :)


Hocam yükledim şimdi. Arayüzü inceledim. 3 senedir CCS C ile yapıyorum projeleri. Galiba zorlanacağım biraz.

baran123

Hadi hayırlı olsun.Datasheet'in bol olsun :D

Karamel

#11
benim anlamadigim soyle birsey var.

ccsc kotu? ccsc registerlara erisim izni vermiyormu? veriyor olmali?

peki sunu dusunelim. library si olan bu compilerdan uzaklastik. usb ile ilgili bir isimiz oldu. microchip in example ini zor bela projectimize include ettik. ayni sey degilmi? ne ogrendik? hicbirsey? ayni seyin yesili?

o zaman ccsc neden kotu?

mesaj birleştirme:: 20 Kasım 2015, 22:56:32

bu arada belirtmek isterim ki ben bu soruyu ogrenmek amacli sormustum. ccs c yi daha once hic kullanmadim.

baran123

#12
Erişmek mümkün ama bir kaç işlem gerektiriyor ve XC microchip in ürünü
Asıl problem CCS ile başlamayıp register kullanımı öğrenmeden devam etmek.
XC de hazır fonksiyonlar ccs gibi olmadığından hatta az olduğundan (hatta 12F serisi için yoktu diye biliyorum çünkü kendi kütüphanelerimi oluşturdum ve çok şey öğrendim) kullanıcıya fayda sağlıyor.

mesaj birleştirme:: 20 Kasım 2015, 23:06:45

Not : kötü değil tabi ki.He ccs ile register kullanıyordur o ayrı.veya işi biliyordur hızlı program yapmak istiyordur gene kullanır. :)


mesaj birleştirme:: 20 Kasım 2015, 23:07:09

Bana göre Microchip in arduinosu :D

Okan AKÇA

bütün ticari projelerimi ccs ile geliştiriyorum su ana kadar hic bir sorun yasamadım.   8bitlik işlemci ile  pwm,timer,encoder,adc olcümü,modbus haberleşme,lcd.cap touch  sürme gibi işleri hepsini bir arada yapıyorum en ufak bir sorun yasamıyorum.
ancak geri kalmamak icinde psoc ve stm ile ufaktan ugrasıyorum.

ziyaretci

O değilde şu benim konuyla ilgilensek. :)


#include <16f1937.h>
#fuses HS, NOWDT, NOPUT, NOPROTECT,NOMCLR, NOCPD, NOBROWNOUT,NOIESO, NOFCMEN 
#fuses NOCLKOUT, NOWRT, NOVCAP, NOSTVREN, NOLVP, NODEBUG
#use delay(clock=20M)


//***************The descriptions of the timer 1 ******************************//
#BYTE TMR1L=0x16
#BYTE TMR1H=0x17
#BYTE T1CON=0x18
#BYTE T1GCON=0x19
#BYTE INTCON=0x0B
#BYTE PIE1=0x91


#bit TMR1ON=T1CON.0



#int_timer1
Void TimerOne(){
output_c(1);
}

Void main(){
 TMR1ON=0;
SETUP_TIMER_2(T2_DISABLED,0,1);
SETUP_TIMER_4(T4_DISABLED,0,1);
SETUP_CCP1(CCP_OFF);
SETUP_LCD(LCD_DISABLED);
SETUP_ADC_PORTS(ADC_OFF);

T1CON = 0B00111000;
PIE1=0b10000001;
TMR1L=0xfa;
TMR1H=0xff;
T1GCON=0B11000000;
INTCON=0b11000000;

TMR1ON=1;

output_c(2);
While(1);
}