çok basit ve ilginç bir sorun...

Başlatan samuray84, 31 Aralık 2011, 11:58:13

samuray84

kod tam olarak şöyle:



#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=10000000)
#use fast_io(a)
#use fast_io(b)



void main()
{
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   
   set_tris_a(0b11111111);  //A0,A1 giriş diğerleri çıkış
set_tris_b(0b00000000);
output_a(0);
output_b(0);
   
   while(1)
   {
   if(input(pin_a0))
      output_high(pin_b7);
   if(input(pin_a0)==0)
      output_low(pin_b7);
      delay_ms(50);
   }
}
     
bunun hex dosyasını pice aktardıktan sonra sisteme bağladığım anda b7 pini 2v oluyor. a0 pinine ister akım gelsin ister gelmesin b7 sürekli yanıyor.

RcALTIN

a0 pinine pulldown direnci bağlı mı? (10k ile gndye bağlı mı?)

ve neden 2 tane if var ki orada, şu şekilde düzeltip deneyin birde:
while(1)
{
   if(input(pin_a0)) {
      output_high(pin_b7);
   }
   else {
      output_low(pin_b7);
   }
   delay_ms(50);
}
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

bayelektronik

Alıntı yapılan: RcALTIN - 02 Ocak 2012, 02:11:09
a0 pinine pulldown direnci bağlı mı? (10k ile gndye bağlı mı?)

ve neden 2 tane if var ki orada, şu şekilde düzeltip deneyin birde:
while(1)
{
   if(input(pin_a0)) {
      output_high(pin_b7);
   }
   else {
      output_low(pin_b7);
   }
   delay_ms(50);
}


eğer bu kodları kopyala-yapıştır yaptı isen kodlarda bir hata yok.b7 de 2V gözükmesi de çok garip.bir pin eğer pwm ile yönetilmiyorsa 2v gözükmez ya 0v dur yada 5 volt.fakat kodları elinle yazdı isen buraya doğru derleyiciye hatalı  yazmış olabilirsin.a0 pini ttl bir pin normalde pull-down gerekmeyecektir. fakat senin diğer işaret yolladığın kaynak nedir bilemem ondan dolayı bir pull-down koymakta fayda var.devreyi de koyarsan tam olarak daha iyi bir sonuç ortaya çıkabilir sorunu cidden merak ettim bende :)

bayelektronik

Alıntı yapılan: samuray84 - 01 Ocak 2012, 23:31:11
kod tam olarak şöyle:



#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=10000000)
#use fast_io(a)
#use fast_io(b)



void main()
{
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   
   set_tris_a(0b11111111);  //A0,A1 giriş diğerleri çıkış
set_tris_b(0b00000000);
output_a(0);
output_b(0);
   
   while(1)
   {
   if(input(pin_a0))
      output_high(pin_b7);
   if(input(pin_a0)==0)
      output_low(pin_b7);
      delay_ms(50);
   }
}
     
bunun hex dosyasını pice aktardıktan sonra sisteme bağladığım anda b7 pini 2v oluyor. a0 pinine ister akım gelsin ister gelmesin b7 sürekli yanıyor.



eğer bu kodları kopyala-yapıştır yaptı isen kodlarda bir hata yok.b7 de 2V gözükmesi de çok garip.bir pin eğer pwm ile yönetilmiyorsa 2v gözükmez ya 0v dur yada 5 volt.fakat kodları elinle yazdı isen buraya doğru derleyiciye hatalı  yazmış olabilirsin.a0 pini ttl bir pin normalde pull-down gerekmeyecektir. fakat senin diğer işaret yolladığın kaynak nedir bilemem ondan dolayı bir pull-down koymakta fayda var.devreyi de koyarsan tam olarak daha iyi bir sonuç ortaya çıkabilir sorunu cidden merak ettim bende :)

yamak

220 ohm bağladım demişsin 220 ohm pull down için çok küçük söylenenler gibi 10k falan bağlamayı dene.Sorun yazılımsal değil bence.

samuray84

yorumlar için teşekkürler arkadaşlar. şimdi şöyle, mclr' a 10k bağladım , a0 pinine 220 bağladım. a0' a da mı 10k bağlamam gerekiyor?

devre şöyle şimdi, aynı kaynaktan bir de kücük bi cihaz var onu beslemem gerekiyor. ancak o cihaz 3v ile calışıyor. ben de 3 tane 220lik direnc koydum, 2. drencin bacağını + ya, ground'u - ye bağladım. böylelikle 3v vermiş oldum cihaza:)

bir de bu cihazdaki bi lambayı söküp yerine (-) tarafı bc 238 transistörün base 'ine bağladım. collectorune 2v verdim, emmitter'i de a0 ' a bağladım. bu durumda şöyle oluyor:

lamba yanması gerektiği an committerden gelen akımı cihaz çekiyor ve emmitter 0v oluyor. yani a0 'a akım gitmiyor. bu durumda picdeki b7 bacağında akım oluyor. ölcüyorum 2v cıkıyor. a0 a ister akım gitsin ister gitmesin b7 sürekli 2v.

başka portlarda denedim mesela a2 ve b5... aynı sonuç :) bu cihazı bağlamam mı sorun yarattı acaba?