Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Basit Bir Problem

Başlatan oyhan, 21 Eylül 2007, 18:42:32

oyhan

Merhaba aşağı kodda neden sürekli sonsuz döngü içerisinde gibi RB portuna bağlı ledler yanıp söner. Aslında başlanıçtan itibaren 4 kez flaş yapması gerekirken ve bitimindede while döngüsünde klaması gerekirken sürekli flaş yapıyor bu kod ile işlemci. Compiler hatasımı var acaba yoksa benim gölerin farketmediği bir hatamı anlayamadım.16F88. Kod şöyle;
void main()
{
   port_b_pullups(TRUE);
   setup_adc_ports(sAN0|VSS_VDD);
   setup_adc (ADC_CLOCK_DIV_8);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(OSC_8MHZ|OSC_TIMER1);
   enable_interrupts(INT_RTCC);

   set_tris_a(0b00000001); set_tris_b(0b00000000);
set_adc_channel (0);
Delay_ms(500);
OUTPUT_B(0x00); OUTPUT_a(0x00);
enable_interrupts(GLOBAL);
  
  OUTPUT_B(0xFF); Delay_Ms(500);// Bekle();
  OUTPUT_B(0x00); Delay_Ms(500); 
  OUTPUT_B(0xFF); Delay_Ms(500);// Bekle();
  OUTPUT_B(0x00); Delay_Ms(500); 
  OUTPUT_B(0xFF); Delay_Ms(500);// Bekle();
  OUTPUT_B(0x00); Delay_Ms(500); 
  OUTPUT_B(0xFF); Delay_Ms(500);// Bekle();
  OUTPUT_B(0x00); Delay_Ms(500); 
  //x=0; OUTPUT_B(x); Delay_Ms(500);Bekle();
      while (1) {}
      
      

}

ledlerde 100R direnç var kırmızı led bar kullandım denemek için.
BİRLİKTEN KUVVET DOĞAR:

picusta

Belki muhtelif nedenlerden dolayi reset ediyordur.
örnegin voltaj dalgalanmasi, watchdog, vs..

DumrulBey

enable_interrupts(INT_RTCC);

Satırını kaldır veya etkisiz kıl da bir dene bakalım...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

oyhan

Merhaba
Sorunu buldum. Piclerin portuna bağlı 100 ohm dirençlerden kaynaklandığını tespit ettim. Aynı anda tüm portlar high olduğundan sanırım anlık fazla bir akım yüklenmesi ile pic resetleniyor. Çünkü ledlere bağlı olan dirençlerin değerlerini 150-180 arası bir değere çıkardım. Şuan kod normal çalışıyor. Ben aslında pic lerin portlarında akımı sınırladığını sanıyordum ama yanılmışım. Öyle değilmi?
BİRLİKTEN KUVVET DOĞAR:

emperor

Alıntı yapılan: "oyhan"Merhaba
Sorunu buldum. Piclerin portuna bağlı 100 ohm dirençlerden kaynaklandığını tespit ettim. Aynı anda tüm portlar high olduğundan sanırım anlık fazla bir akım yüklenmesi ile pic resetleniyor. Çünkü ledlere bağlı olan dirençlerin değerlerini 150-180 arası bir değere çıkardım. Şuan kod normal çalışıyor. Ben aslında pic lerin portlarında akımı sınırladığını sanıyordum ama yanılmışım. Öyle değilmi?

PIC in özelliklerinde internal pull-up direnci varsa onları yazılımdan aktif edip portlarda direnc varmış gibi kullanabilirsin...

bir de pic den led sürerken gereken direnci aşağıdaki resimdeki gibi hesaplayabilirsin...