Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: Nedenler - 04 Haziran 2013, 11:14:17

Başlık: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 04 Haziran 2013, 11:14:17
Merhaba arkadaşlar kolay gelsin,

16F877A için yazdığım programı 18F452'ye çeviriyorum. Pin dizilimlerinde kesmelerde herhangi bir problemim yok zaten hemen hemen hiç bir pini ve donanımı da kullanmıyorum. Fakat 16F877A'da sorunsuz veri alıp gönderebildiğim int_rda kesmesi include kodunu 18F452 olarak değiştirdiğimde çalışmıyor. Hem proteusta hem de fiziksel devrede aynı sorun var. Acaba kesme tanımlarken iki pic arasında herhangi bir farklılık mı var ?

Main içinde printf kullanabiliyorum, sorun kesme oluşmasında.



setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_32);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
   
set_tris_a(0x01);
set_tris_d(0x00);
   
enable_interrupts(GLOBAL);





enable_interrupts(INT_RDA); satırı while döngüsü içinde.

Bu haliyle 16F877A'da çalışıyor.





#int_RDA
void  RDA_isr()
{
   disable_interrupts(int_rda);
   gets(ch);
   x = atoi (ch);
   x-=1;
   selected=1;
}


Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: sadogan - 04 Haziran 2013, 12:24:26
disable_interrupts(int_rda);
Bu nerde aktif oluyor
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 04 Haziran 2013, 12:58:50
asıl işlemlerin yapıldığı while(1) döngüsünün ilk satırında.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Okan AKÇA - 04 Haziran 2013, 13:49:05
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_32);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
   
set_tris_a(0x01);
set_tris_d(0x00);
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);




#int_RDA
void  RDA_isr()
{
   disable_interrupts(int_rda);
   gets(ch);
   x = atoi (ch);
   x-=1;
   selected=1;
enable_interrupts(int_rda);
}
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 04 Haziran 2013, 14:39:03
cyclone

Kesme bloğu sonuna enable_interrupts(int_rda); koymasam bile en azından blok içindeki komutları 1 kere olsun icra etmesi gerekmez mi?
Yine de verdiğiniz şekilde uyguladım. Sorun devam ediyor. Main döngüsü içine koyduğum printfler ve diğer işlevler çalışıyor fakat kesmeye hiç uğramıyor.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Okan AKÇA - 04 Haziran 2013, 14:59:53
tam kod verin bakalım
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: justice_for_all - 04 Haziran 2013, 16:11:05
buyuk ihtimal error vardir.


#use rs232(.........,ERRORS)

kullanin buyuk ihtimal sorun gidecektir.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 05 Haziran 2013, 10:20:33
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,ERRORS)
şeklinde düzenledim. herhangi bir değişiklik olmadı.

Kodu sadece hatayı görebileceğimiz şekilde özetledim. 16F877A şeklinde derleyip 877A'da çalıştığımda Virtual Terminal'de "Başla..." yazdıktan sonra klavyeden girdiğim sayının bir eksiğini ekranda görebiliyorum. Fakat 18F452 şeklinde derleyip 452 picde çalıştığımda sadece "Başla..." yazısını görebiliyorum. Kesme bloğuna yine uğramıyor.



#include <18F452.h>
//#DEVICE ADC=8
#include <stdlib.h>     /* atoi */

#FUSES NOWDT,HS,NOPROTECT,NOBROWNOUT,NOPUT,NODEBUG,NOCPD,NOLVP,NOWRT

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,ERRORS)

char ch[20];
int1 selected,found=0;
unsigned int8 type,i,k=0,basamak;

#int_RDA
void  RDA_isr()
{
   disable_interrupts(int_rda);
   gets(ch);
   type = atoi (ch);
   type-=1;
   selected=1;
   printf("Sayi: ");
   printf("%d",type);
   enable_interrupts(int_rda);
}

void main()
{
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_DIV_32);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   
   set_tris_a(0x01);
   set_tris_d(0x00);
   enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);   
     
   set_adc_channel(0);
   delay_us(100);   
   printf("Basla...\r\n");
   
   while(1);
}
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Okan AKÇA - 05 Haziran 2013, 11:12:32
rx bacagını 1k direncle +5 bağlayınız.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 05 Haziran 2013, 11:24:11
Yine olmadı... Şaka gibi.
Sizin simule etme şansınız var mı acaba?
18F452 header dosyamda mı sorun var, derleyicim mi bozuyor hex dosyayı... Nedir anlamadım.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: M_B - 05 Haziran 2013, 16:25:18
main dongusunde
while(1);

kısmını
while(1)
{

}

şeklinde yaparmısın.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 05 Haziran 2013, 16:37:57
İkisi de aynı şey değil mi ?

Yine de yaptım tabi. Sorun devam ediyor.

Bu kod çalışıyor zaten kodda herhangi bir sıkıntı yok.  Ama 877A'dan 452'ye geçerken bir şeyler oluyor.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: xoom - 05 Haziran 2013, 16:41:35
Simule ettiğiniz ISIS ve CCs C dosyalarını ekler misiniz. Böylece sorun sizde mi Yazılımda mı daha iyi anlaşılır.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 05 Haziran 2013, 16:48:01
Buyrun; http://www.speedyshare.com/HRnsK/Tablo.rar (http://www.speedyshare.com/HRnsK/Tablo.rar)
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: xoom - 05 Haziran 2013, 16:55:50
Program çalışıyor.

Edit:Resim Eklendi
(http://s1306.hizliresim.com/1b/5/ntycs.png)
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 05 Haziran 2013, 17:04:39
Proteus 7.8 SP2 (Build 10468) ve CCS C'yi de PCWHD 4.104 kullanıyorum.
Win 7 64 bit işletim sistemim.
Proteus'da sorun yaşıyorum desem pici programlayıp karta taktığımda da çalışmıyor.
Hex dosyayı oluştururken sorun çıkıyor desem sizde çalışıyor?

İki sorum var.
1. programda "Basla..." yazısını görmeniz dışında sayı girdiğinizde Virtual Terminal'de sayının bir eksiğini gördünüz mü?
2. Gördüyseniz programı derlemeden direk benim gönderdiğim şekilde mi çalıştırdınız?

Çok teşekkür ederim şimdiden.

Edit: Evet resmi gördüm. Sevinsem mi üzülsem mi...
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: xoom - 05 Haziran 2013, 17:16:06
Virtual Terminalde "Echo Typed Characters" İşaretli mi? Değilse İşaretleyin..
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: M_B - 05 Haziran 2013, 21:25:46
@Nedenler;
Sizin verdiğiniz Hex denedim bende de sizdeki gibi calışmadı.

Yeniden derlediğimde ise çalıştı. ilginc durum.
Kullandıgım derleyici versiyonu.
CCS PCH C Compiler, Version 4.137, 65420               05-Jun-13 21:14

Derlediğim hex denermisin bakalım sende nasıl davranacak.
http://s3.dosya.tc/server6/VKcTOw/table.rar.html (http://s3.dosya.tc/server6/VKcTOw/table.rar.html)
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Nedenler - 06 Haziran 2013, 12:08:12
M_B,

Evet işte tam olarak bu. Gönderdiğiniz hex dosyayı çalıştırdım benimki ise  "Echo Typed Characters" işaretli olmasına rağmen çalışmıyor. Sanırım CCS C sürüm veya Win 7 uyumsuzluğuyla alakalı. En azından sorunu bulduk. Teşekkür ederim herkese hemen ilgileniyorum.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: NEINSTEIN - 07 Haziran 2013, 03:59:02
Evet kesinlikle tespit ettiğiniz gibi arkadaşın ilk gönderdiği çalışmıyor bende yenide derledim çalıştı.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Murat Mert - 07 Haziran 2013, 08:36:26
S.A.
Sn. Arkadaşlar ikisisndede üst versiyonlara çıkın.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Okan AKÇA - 07 Haziran 2013, 08:38:42
hocam sizde varsa upload edin
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Murat Mert - 07 Haziran 2013, 09:18:41
Alıntı yapılan: cyclone - 07 Haziran 2013, 08:38:42
hocam sizde varsa upload edin

;D  ;D  ;D
bende buradan indirdim.
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Okan AKÇA - 07 Haziran 2013, 09:51:57
necektik bu derleyicilerden....
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: M_B - 07 Haziran 2013, 10:02:23
CCS C nin sitesinden
Demo olarak 5.005d indirdim. İdesi değişmiş ve daha bir renklenme gelmiş.
bunun kureği var mıdır?
Başlık: Ynt: 18f452'de int_rda kesmesi oluşmuyor?
Gönderen: Okan AKÇA - 07 Haziran 2013, 10:27:20
yakında çıkar en iyisi lisans almak