PIC ile Bilgisayar Arasında PL2303 Kullanarak USB-TTL Bağlantı Sorunu

iraquois

Üye
Katılım
1 Eyl 2014
Mesajlar
4
Puanları
1
Yaş
32
Merhaba arkadaşlar. Ben PIC kullanarak basit bir devre yaptım amacım sadece RDA kesmesine gidildiği zaman LED'in yanıp sönmesi ancak tepki alamıyorum. HYPERTERMINAL kullanarak PL2303 üzerinden PIC'in RX ve TX pinlerine bağlandım PL2303 düzgün çalışıyor. PIC de sorun yok. Yazılımda bir sorun olup olmadığını bilmiyorum. Herhangi fikri olan varsa lütfen paylaşsın teşekkürler.

yazılım:
Kod:
#include<16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NODEBUG,PUT

#USE delay (clock=4000000)


#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)

#INT_RDA
void RDA(void)
{
output_high(pin_b0);
output_low(pin_b0);


}


void main() {

enable_interrupts(global);
while(1){
enable_interrupts(INT_RDA);
}
}
 
Moderatör tarafında düzenlendi:
Rda kesmesinde bekleme koymalısınız yoksa ledin yanma ve sönme durumunu göremessiniz

void RDA(void)
{
output_high(pin_b0);
Delay_ms(1000);
output_low(pin_b0);
Delay_ms(1000);
}
Kesme icerisinde çok uzun işlem yapmayın. hızlı işlem yaptırıp hemen çıkmalı ki sonraki bilgi gelsin
 

Cevap için teşekkürler. Dediğinizi denedim ancak aynı sonuç hiç bir tepki yok LED üzerinde. Bu projenin benzeri rs232 ile max232 kullanarak yapılmıştı. Benzer kodları kullandım bende.Acaba yazılımda herhangi bir hata görebildiniz mi?
 
Kodu tekrar inceledim de.
Kesme içerisinde rda yı pasif yap ki başka işe yaramaz bilgi geldinde karışmasın sonra kesmeden çıktında tekrar aktif yaparsın birde belli bişey yap meselâ led_yan diye bilgi gönder bu bilgi geldi ise bunu kesme ye girdiğinde degişkende belirt kesme dışarısında da ledi yak kesme içerisinde işlemleri hızlı ve sade bir şekilde analiz edip hemen çıkmalı ki başka bilgileri alsın ve sürekli geriye dönmesin aktif pasif i iyi ayarlamalısın yoksa kesmede işler karışabilir
 
Cevaplarınız için teşekkürler İbrahim bey. Dedikleriniz üzerin Birkaç düzenleme yaptım sistem çalıştı. Bide crystal osilator ile breadboard üzerinde biraz oynamam gerekti sanırım frekans ile ilgili sorun oluyor bazen bilmiyorum. Tekrar teşekkürler kolay gelsin
 
Kodun son halini buraya yüklerseniz aynı problem ile karşılaşan arkadaşlar olur ise faydalansın.
Yardımcı olabildim ise ne mutlu bana.
Kullandınız kristal ile programdaki kristal türleri aynımı xt hs gibi ve 22pf kondansatör mü kullandınız
 
Tabiki:
Kod:
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)

#INT_RDA
void RDA (void)
{
disable_interrupts(int_rda);
output_high(pin_b0);
 
}

void main ( )
{
   setup_psp(PSP_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);
  
   output_low(pin_c5);
  
   enable_interrupts(GLOBAL);

   while(1)
   {
      enable_interrupts(int_rda);
      output_high(pin_c5);
      delay_ms(1000);
      output_low(pin_c5);
      delay_ms(1000);
   }
}

Kesmenin içinde kullandığım
Kod:
disable_interrupts(int_rda);
kodu yapılmak zorundaymış diye okumuştum bir yerde bunla alakası olabilir diye düşündüm. Sonsuz döngüyü yerleştirme sebebim pic'in çalışıp çalışmadığını görmek. Aslında bunu yaparken asıl öğrenmek istediğim RS232 ve MAX232 entegresi ile yapılan buna benzer bir proje vardı. Aynı kodlar PL2303 kullanılınca çalışıyor mu görmekti.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…