pic 16f877 6 adet lamba açıp kapama

Başlatan despot61, 02 Aralık 2015, 03:19:58

despot61

iyi günler . pic de çok yeniyim ve başlangıcım ccs c ile oldu. bir proje üstünde çalışıyoruz ama onu yapabilmek için anahtarlamayı bilmek gerekir. şöyle ki 6 tane anahtar var ve bunlar bizim istediğimiz süre içinde açık yada kapalı kalıcaklar. biz bunu ilk önce deneme amaçlı led üzerinde yaptık. 6 kapı değilde 6 led bağladık. fakat istemediğimiz ledlerde aktif oluyor. ya proteus da simule edemiyoruz yada kodu yazamıyoruz. ilgilenirseniz seviniriz. kodumuz şu şekilde ;

 #include "C:\Users\U.Selim\Desktop\Dale\asm.h"


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   set_tris_d(0x00);
   
   while(1)
   {
   output_high(pin_d2);
   output_high(pin_d4);
   output_high(pin_d5);
   delay_ms(1.32);
   output_low(pin_d2);
   delay_ms(0.68);
   output_high(pin_d1);
   delay_ms(2.66);
   output_low(pin_d5);
   delay_ms(0.66);
   output_high(pin_d6);
   delay_ms(2.68);
   output_low(pin_d4);
   delay_ms(0.66);
   output_high(pin_d3);
   delay_ms(2.66);
   output_low(pin_d1);
   delay_ms(0.68);
   output_high(pin_d2);
   delay_ms(2.66);
   output_low(pin_d6);
   delay_ms(0.66);
   output_high(pin_d5);
   delay_ms(2.68);
   output_low(pin_d3);
   delay_ms(0.66);
   output_high(pin_d4);
   delay_ms(1.34);
   }

}

ete

Neden böyle küsüratlı gecikme değerleri kullandınız bilemiyorum ama kullandığınız gecikme değerleri çok düşük.
Bu durumda o ledin yanıp söndüğünü gözünüz algılayamaz. Gözün  bir ledin hızla yanıp sönerken yanıp söndüğünü algılayabilmesi için o ledin en azından 50 ms yanık veya sönük kalması gerekir. sizde 1,32ms (1320us) yanık kalıp anında sönüyor. Bunu algılamak mümkün değil maalesef.
O süreleri en azından artırıp deneme yapın. Ortalama 100 ms ler civarında çalışın ve sonuca bakın. Sorun yok ise o gecikme sürelerine bir çözüm bulun.

Ete

despot61

hocam cevabınız için teşekkürler. aslında bizim derdimiz led değildi biz mosfet kapılarını bu sürelerde kullanıcaz fakat deneme amaçlı led ile yaptık. sanırım biizim gördüğümüz proteus un kandırmacası oldu biz ona aldandık biraz. fakat hocam gece denemelerim sonucu şöyle bişey gördüm. delay_ms değilde delay_us yapınca içini de 1000 le çarpıp tabiki yine aynı sürelerde ama bu sefer daha gerçekçi sonuçlar gördüm. pic in hz ini 4 khz yaptım baktım sonuçlar doğru. ms değilde us yapınca neden böyle oldu peki varmıdır bir nedeni ?

ete

Bir nedeni olmaması gerekir. 1ms=1000us dir. 1,32ms yerine 1320us yazabilirsiniz. Ama demekki C dili derleyicilerinde anlamsız bug lar var.

Ete

despot61

ccs c kolay diye ondan başlattılar acaba hata mı ettim diye düşünüyorum . delay_us olarak kullandığımda çalıştı güzelce. teşekkürler cevaplarınız için

Powered by EzPortal