Mesaj Önizleme  Konuyu Gönder 
Ccs uart sorunu neden interrupt üretmiyor
Yazar Mesaj
smit
Member
***


Mesajlar: 2
Grup: Registered
Katılım: Jul 2009
Statü: Çevrimdışı
Karma Puanı: 0
Mesaj: #1
Ccs uart sorunu neden interrupt üretmiyor

Herkeze merhaba

rs232 ile uğraşırken hiç beklemediğim bir sorunla karşılaştım çözümünü 2 gündür uğraşmama ramen hala bulamadım.

devrem aşağıdaki gibidir.

[img]http://www.elektrotekno.com/userpix/15112_electronik_timer_1.jpg[/img]


baund rateleri 9600 olan 2 tane seri bilgi yollayan birim mevcut, hangisini dinleyeceğimi 74151 multiplexer ile seçiyorum ve pice giriyor. Proteusta devre sorunsuz çalışıyor.

Gerçek hayata geçtiğimde ise #int_rda interrupt'ını üretmediğini gördüm. Pic gelen bilgiyi göremiyor.

Denemek için max3232 li küçük bir prob yaptım picin RX bacağına deydirdiğimde bilgisayarda bütün bilgileri görebiliyorum yani bilgiler pice ulaşıyor.


18F4620 'yi 8Mhz kristal ve "4 x pll" aktif şekilde kullanıyorum program kısmı ise şu şekilde

Kod:
#include <18F4620.h>
#FUSES NOWDT,WDT128,H4,NOPROTECT,BROWNOUT,NOPUT,STVREN,NODEBUG,NOLVP,NOWRT,NOWRTB,NOWRT C,NOCPD,NOCPB,NOEBTR,NOEBTRB,CCP2B3
#device ADC=10
#use delay(clock=32Mhz,oscillator=8Mhz)


#use rs232(baud=9600, uart, parity=N, stop=1,bits=8)

#define FAST_GLCD

#include "HDM64GS12.c"
#include <MATH.H>
#include "graphics.c"

.
.
.
.
.

#INT_RDA
void SeriVeriAl(void)
{
veri=getc();
alll=true;
}

void main(void) // Ana program
  
{    


set_tris_b(0xFF);
set_tris_e(0xFF);


setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1( T1_INTERNAL | T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_2(T2_DIV_BY_4, 255,4);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_wdt(WDT_OFF);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
clear_interrupt(INT_RDA);
enable_interrupts(INT_RDA);
disable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);

setup_adc( ADC_CLOCK_INTERNAL );
setup_adc_ports(  AN0_TO_AN2);

do{

if(alll){sprintf(dene3,"G");glcd_text57(15,8,dene3,1,ON);}
}while(TRUE); //Sonsuz Döngü

}



Bu şekilde seri porttan herhangi bir bytelık bilgi aldığında ekranda G yazması lazım. Ama Proteusta olmasına ramen gerçekte olmuyor.

bunun nedeni hakkında birkaçtane yorum yapabilirsek daha kolay çözebilirim.

En son düzenleme: 07-30-2009 03:25 PM smit.

07-30-2009 03:23 PM
Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
admin
Administrator
*******


Mesajlar: 29
Grup: Administrators
Katılım: Apr 2008
Statü: Çevrimdışı
Karma Puanı: 0
Mesaj: #2
RE: Ccs uart sorunu neden interrupt üretmiyor

kurduğunuz devrede max232 entegresi kullandınız mı yoksa doğrudan multuplexer a mı gidiyor?
iki adet seri bilgi gönderen kaynak nedir?
multiplexer ı kontrol eden b3 pini ile ilgili programda herhangi bir komut gözükmüyor
birde yaptığınız programı ilk olarak 4mhz lik basit bir sistemle denemeniz daha sağlıklı olacaktır

07-31-2009 07:50 AM
Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
smit
Member
***


Mesajlar: 2
Grup: Registered
Katılım: Jul 2009
Statü: Çevrimdışı
Karma Puanı: 0
Mesaj: #3
RE: Ccs uart sorunu neden interrupt üretmiyor

2 farklı gps modülünden seri bilgi alıyorum gps'in çıkışını direk multiplexer a takıyorum. Deneme amacı ile sadece tek takynaktan bilgi okuyorum multiplexerın seçici ucuna devamlı 1 gidiyor. Herşeyi devren çıkartıp picin rx bacağına max3232 ile bilgisayardan bilgi gönderdim yine olmadı. devrenin herşeyi sorunsuz çalışıyor. ADC den bilgi okuyorum hesap yapıp glcd de yazdırıyorum timerlar çalışıyor. ama uart interruptı çalışmıyor. putc fonksiyonu çalışıyor picten dışarıya bilgi çıkışı var ama getc çalışmıyoru. Proteusta sorunsuz çalışıp gerçekte çalışmaması çok kötü. 5 gün oldu hala sorunu bulamadım. İlginiz için teşekkür ederim birkaç yorum yapılsa şurdan olabilir burdan olabilir, ben bütün olasılıkları denedim ama mutlaka atladığım bir yer var.

07-31-2009 01:45 PM
Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
admin
Administrator
*******


Mesajlar: 29
Grup: Administrators
Katılım: Apr 2008
Statü: Çevrimdışı
Karma Puanı: 0
Mesaj: #4
RE: Ccs uart sorunu neden interrupt üretmiyor

Devreni göremediğim için tam yorum yapamıyorum çünkü verdiğin şemada c6 pini boş gözükmekte.
Bence ilk olarak setup_spi(SPI_SS_DISABLED); satırını silerek bir daha deneme yap olmazsa (Bu satırlar derleyici tarafından proje oluşturulurken programa eklenmekte. Kullanmayacağın kısımları silersen daha rahat edersin çünkü orada bazı pinleri iptal ediyorsun)
her şeyi söküp rs232 üzerine yoğunlaş ve aşağıdaki en basit örneği devrende uygula

Kod:
#include <18F4620.h>
#fuses XT, NOWDT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
//====================================
void main()
{
char c;
printf("Start: ");
while(1)
  {
   c = getc();
   putc(c);
  }}

Bu programda klavyeden gönderdiğin karakter geri terminal ekranına gelmeli. Bu prog çalışmıyosa donanımında hata var demektir. Bu kısmı aştıktan sonra diğer pll grafik lcd gibi kısımlara geçersen daha rahat edersin bence.

En son düzenleme: 07-31-2009 08:46 PM admin.

07-31-2009 08:42 PM
Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Mesaj Önizleme  Konuyu Gönder 

Yazdırılabilir Bir Versiyona Bak
Bu Konuyu Bir Arkadaşına Gönder
Bu Konuya Abone Ol | Konuyu Favorilerine Ekle

Foruma Git: