Archive

Archive for the ‘Genel’ Category

Science Center Visit Konya/Turkey

I would advise everybody to visit this nice science center.

Read more…

Categories: Genel

Multi EEPROM Programmer with a PIC18F6310 controller

02 September 2014 Leave a comment

The aim of this project was to deisgn a multi eeprom programmer, using a PIC18F6310 controller..

The system has:

4×20 LCD display

4×5 Keyboard matrix

FTDI  usb serial port ,and in parallel a RS232 serial port

One 3A battery powered

2x E2prom socket

Categories: Genel

Happy 2014

30 December 2013 Leave a comment

images

Wish Happy New Year

Categories: Genel

My Hobby Worshop

19 December 2013 Leave a comment

20131130_165932

LDR Sensor with ARDUINO

17 December 2013 Leave a comment
Categories: Genel Tags: , ,

Demirçelik Store Sektörel Dergisinde ki Röportajım

13 December 2013 Leave a comment
Categories: Genel

PIC Mikroişlemci ile Kesmeleri Verimli Kullanma | Using Timer Interrupt with PIC Controller

12 September 2013 Leave a comment

Bu bölümdeCCS PIC C derleyicisi ile kesmelerin kullanımı gösterilecektir.
TIMER0  kesmesi kullanarak hassas bir şekilde bir LED’i yakıp söndürebiliriz. TIMER0 8 bit bir sayıcıdır.
PIC kesmesinin her 1 ms gerçekleşmesini istersek
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_BIT);
ile frekans önbölücü 16′ ya ayarlanır, PIC kendi içinde de otomatik olarak 4′ e bölmektedir,
böylece hesap (16000000Hz/16)/4=250000Hz olur
Kesmeye bir kere giriş süresi 1/250000 sn’ dir, yani kesme her 0.000004 sn’de gerçekleşir.
her 1ms’ de kesme gerçekleşmesi için TIMER0 sayaç 250 kez sayması gerekir (0.000004*250=1ms).
Bunun içinde main ve kesme rutininde
set_timer0(5);
komutu yerleştirilir.
Kesme rutini işlendikten sonra en son set_timer0(5); komutu işletir ön sayıcıyı tekrar kurulmuş olur.
Eğer sayaç önyükleme = ise Sayaç 0 dan 255′ kadar sayar, bu komutla sayaç 5 ten 255′ e kadar sayar 255′ ten 0’a geçişte kesme gerçekleşir.

Öncelikle PIC işlemcinin 16MHz de çalışacak şekilde ayarlanır.

Bu durumda:

short toggleled;
unsigned int16 ledcounter;
void main()
{
 setup_adc_ports(NO_ANALOGS|VSS_VDD);
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_BIT);
 setup_oscillator(OSC_16MHZ);
 set_tris_c(0x00);
 set_timer0(5);
 enable_interrupts(INT_TIMER0);
 enable_interrupts(GLOBAL);
for(;;){}
}

Aşağıdaki programda kesme rutini  verilmiştir

#int_TIMER0
void  TIMER0_isr(void)
{
ledcounter++;
if(ledcounter=150)
{
ledcounter=0;
toggleled^=1;
}
if(toggleled) output_high(PIN_C0);
else output_low(PIN_C0);
set_timer0(5);
clearinterrupt(int_timer0);
}

PIN_C0 pinine bir LED bağlarsak, LED 150 ms yanar ve 150 ms sönük kalır.
Bunu gerçekleştirmek için program her kesme rutinine girince ledcounter sayacını artırır, 150 ye yani 150 ms2 ye eşit ya da büyük olunca
ledcounter sıfırlanır ve toggleled 1 ile XOR’ lanır, XOR işlemi her 150ms de bir toggleled değişkenini 0 dadn 1 e daha sonra 1 den 0 değiştirir.
Bu işlem sonsuza kadar devaö eder.
Eğer toggleled 1 ise LED yanar değilse söner.

Daha sonraki programlama tekniklerinde bu işlemleri daha da kısaltabileceiğimizi veya daha anlaşılabilir hale getirebileceiğimiz göreceğiz.

Dr Süleyman CANAN

Categories: CCS, Genel, PIC C, PIC İşlemciler