Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: vitruvius - 22 Nisan 2011, 15:20:45

Başlık: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: vitruvius - 22 Nisan 2011, 15:20:45
Merhaba, PIC ile yapacağım ilk proje için çalışmalar yapıyordum ve CCS C ile PIC Programlama kitabını aldım. Projemde rs232 kullanacağım için orada klavyedeki değerleri lcd ekranında gösteren örneği denemek istredim fakat  "Baud rate out of range" hatasını alıyorum. İlk projem olduğunu göz önünde bulundurarak izah ederseniz sevinirim. Bu arada bu sorunu aşarsam Lm35 ile Pc arasında iletişim kurmayı yapmak istiyorum ancak bu baud'un değerini neye göre ayarlıyoruz?

Bir diğer sorun ise Windows 7 kullandığım için Hyper Terminal programı yok, alternatif gösterebilir misiniz? Forumda FxDev adlı üye http://www.fxdev.org/serial-port-terminal/  linkini vermiş fakat oradaki indirme linki Telekom tarafından engellenmiş dolayısıyla indiremiyorum. CCS C'nin içinde de bu işleri gören program varmış. Tools- Serial Port Monitor'den girmek istediğim zaman "ie_BadId - Specified comport doesn't exist" diyor. Sanırım setupla alakalı bir sorun. Ok dediğim zaman Comport Options çıkıyor fakat "Comports" seçemiyorum.

İlk paragraftaki sorunum için kodu ve devremin resmini aşağıda paylaşıyorum.

Teşekkürler.

#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=400000)
#define use_portb_lcd TRUE
#include <lcd.c>
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
char klavye[80];
#int_rda
void serihaberlesme_kesmesi ()
{
disable_interrupts(int_rda);
output_high(pin_c5);
gets(klavye);
printf("\n\rYazdiginiz Metin>  %s\n",klavye);
printf(lcd_putc,"\f%s",klavye);
output_low(pin_c5);
printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>");
}
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);
lcd_init();
printf("\r****Merhaba****");
printf("\n\rKlavyeden  girdiginiz bilgiler LCD'de gorunecek\n\n");
printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>");
enable_interrupts(GLOBAL);
while(1)
{enable_interrupts(int_rda);
}
}


Devre resmi: (http://i52.tinypic.com/2n007pg.jpg)
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: yamak - 22 Nisan 2011, 16:09:06
Bir seye gore ayarlamiyoruz sen devrenin baud hizini kaca ayarlarsan bilgisayarinkiyi de ayni degere ayarlamalisin ama yine de bence 19200 u gecme gerekmedikce eger proteusta sorun yasiyosan virtual terminal tool unun baud hizini da 9600 yapmis oldugununa dikkat et ayrica normal yazan yeri inverted yapmalisin
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: vitruvius - 22 Nisan 2011, 16:24:47
Proteus dediğiniz gibi ayarlı ancak "Baud rate out of range" sorununu CCS C'de Compile ederken alıyorum. Teşekkür ederim cevabınız için.
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: GreeN - 22 Nisan 2011, 18:05:47
Merhaba
#use delay(clock=400000) //bu kısmı buraya aktarırken yanlışlık yapmadıysan sorun burada.

#use delay(clock=4000000)//4.000.000 şeklinde ayarla.
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: dumansiz - 22 Nisan 2011, 19:45:02
Sen bu dereyi breadboard veya PCB ye mi kurdun mu, yoksa "Proteus"la mı deniyorsun? Vs(+) ya bağladığın 5V da işi bozuyor olabilir.Gerçek devrede karşı tarafta masaüstü PC olacaksa;  bence orası 9-12 V arasında bir değer olmalı.

Seriport terminal ve monitor:
http://www.sudt.com/download/AccessPort134.zip
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: tufican - 22 Nisan 2011, 22:55:50
arkadaslar comport toolkit programını oneriyorum gayet güzel ayrıca çalışma ekranı nı menüden dark yapıyorsunuz ve siyah zemin üzerine yeşil yazılar matrix gibi insana ilham veriyor ve cok rahat datalar seçiliyor :D
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: vitruvius - 22 Nisan 2011, 23:26:37
Cevaplar için çok teşekkür ediyorum. GreeN arkadaşımızın dediği gibi gözümden kaçmış o kısım. Düzeltince sorun giderildi. Şimdiki sorun da simulasyonu ilk denediğimde (Proteus'ta) Virtual Terminal bir pencere açmıştı, incelediğim örneklerde de açılmıştı. Şu an o pencere açılmıyor, lcd de boş ekran gözüküyor. Onun sebebi nedir acaba?

Teşekkürler.
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: vitruvius - 23 Nisan 2011, 03:10:12
Sorunu çözdüm Virtual Terminal'i x işareti ile kaptınca sağ tıkalyıp açmak gerekiyormuş.
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: hoca - 24 Nisan 2011, 16:53:21
arkadaşlar ccs c dilinde 16f877a ile rf ile haberleşme ile uğraşıyorum.8 butonla 8 ledi kontrol edebiliyorum.sonra butona basarak karşı taraftaki lcd deki rakamları arttırmaya çalıştım ancak bi sorun çıktı.ben tuşa basmadan rakamlar kendi kendine artıyor.hata nerde olabilir iştan anlayan yardımcı olacak arkadaş varmı?
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: vitruvius - 24 Nisan 2011, 20:10:48
Yapabileceğimden değil ama yapabilecek olanlar için de yazdığınız kodu ve devrenizi koymanızda fayda var.
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: hoca - 24 Nisan 2011, 20:26:39
vericide c portuna butonları bağladım c0 a bağlı butona basılınca alıcıdaki lcdnin 5 er 5 er artmasını istiyorum alıcıda kullandığım yazılım şöyle;
#define use_portb_lcd TRUE
#include <lcd.c>
long int x;
int al=0;
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

x=0;
lcd_init();
while(1)
{
al=getch();
printf(lcd_putc,"\f  %Lu cm ",x);
delay_ms(200);
if(al==1)
{
x=x+5;
delay_ms(400);
printf(lcd_putc,"\f  %Lu cm ",x);
delay_ms(100);
}

}
}
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: hoca - 28 Nisan 2011, 10:04:25
yokmu şu işten anlayan birisi ya devre kurulu bekliyom öyle kaç gündür
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: GreeN - 28 Nisan 2011, 10:34:41
Vericiden 1. butona bastığında 1 verisinimi gönderiyorsun?

int al=0;
yerine tanımla,
char al; //8 bit char değişkeni alır.

if(al=='1')
{
x=x+5;
delay_ms(400);
printf(lcd_putc,"\f  %Lu cm ",x);
delay_ms(100);}
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: hoca - 29 Nisan 2011, 12:28:17
kardeş allah razı olsun cevap yazmışsın vericinin komutları aşağıda .alıcıda dediğini yaptım bu seferde sadece 0 gösteriyo artmıyo tekrar yardımcı olursan sevinirim cevabını bekliyorum

int ver;
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!
while(1)
{
ver=input_c();

putc(ver);
}}
devrede butonu c0 pinine bağladım verici pinini d0 alıcı pinini de d1 yaptım baud oranıda 2400 ayarladım
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: hoca - 29 Nisan 2011, 14:22:06
çok teşekkür ederim herşey için devre çalıştı gibi vericide c1 e basınca lcd de H karakteri çıktığını gördüm o üzden komutu
if(al=='H') diye değiştirince çalıştı anlamadığım şey verici pikin c portlarına buton bağlayıp alıcı pikin c portlarına led leri bağlayınca aynı komutlarla hangi butona bassam o led yanıyordu şimdi olmadı neyse
şimdi merak ettiğim bi konu var 16f877a ile dışarıdan kristal osilatör bağlamadan kendi içindeki osilatörle çalıştırabilirmiyim ve nasıl?çünkü servo motor çalıştırıcam ve 50 hz lik sinyal lazım ama 4 MHZ lik kristallerle 50 hZ E İNMİYO 800 KHZLİK KRİSTAL LAZIM O DA PİYASADA YOK KOMUTLARLLA BU FREKANSI ELDE EDİYOM AMA PWM İLE SERVOYU ÇALIŞTIRMAK İSTİYORUM YARDIM EDENLERE ŞİMDİDEN TEŞEKKÜR EDİYORUM
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: kısi - 15 Ekim 2012, 12:17:41
slm bnde aynı devreyi proteusta yaptım çalışmadı ayrıca aynı kodları kullandım.Virtual terminal ekranına xÇxÇxxÇ gibi yazılar çıkıyor ayrıca lcd ekranda birşey görünmüyor ve bende bir şey gönderemiyorum.Virtual terminal ayarını inverted yaptım olmadı.Proteus7.8 yüklüydü kaldırıp 7.9 yükledim yine aynı hatayı verdi.Sorun bilgisayardamı anlamadım.Smilasyon ve c kodlarını upload ettim bir bakabilirmisiniz aynı sorunu sizde görecekmisiniz veya nerde hata yapıyorum.   

https://hotfile.com/dl/176147125/e88866b/rs232.rar.html



mesaj birleştirme:: 15 Ekim 2012, 16:47:29

yardım edebilecek kimse  varmı kod aşağıdaki gibidir.




#include "C:\Users\user\Desktop\rs232\rs232.c.h"
#define use_portb_lcd TRUE
#define LCD_TYPE 2
#include <LCD.C>
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
char klavye[80];
#int_RDA
void  RDA_isr(void)
{disable_interrupts(int_rda);
output_high(pin_c5);
gets(klavye);
printf("\n\rYazdiginiz Metin>  %s\n",klavye);
printf(lcd_putc,"\f%s",klavye);
output_low(pin_c5);
printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>");

}


void main()
{
   lcd_init();



   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   lcd_init();   
   enable_interrupts(GLOBAL);
   output_low(pin_c5);
   lcd_init();
   printf("\r****Merhaba****");
   printf("\n\rKlavyeden  girdiginiz bilgiler LCD'de gorunecek\n\n");
   printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>");
   enable_interrupts(GLOBAL);
   while(1)
   {enable_interrupts(int_rda);
   }
   // TODO: USER CODE!!

}





(http://C:%5CUsers%5Cuser%5CDesktop)

mesaj birleştirme:: 15 Ekim 2012, 19:05:22

(http://resimyukleyin.net/images/82595532602335272272.png)
Başlık: Ynt: Rs232 baud ve Windows7/CCS C Terminal Sorunu
Gönderen: mcuboy - 10 Aralık 2013, 14:55:38
Aynı sorunla ben de karşılaştım. virtual terminalde saçma sapan değerler çıkıyor. enter tuşuna bastığım zaman int_rda kesmesi çalışıyor ve RC5 e bağlı led yanıyor ancak ne virtual terminalde ne de lcd de herhangi bi bilgi çıkmıyor. Siz sorunu nasıl çözdünüz acaba.. (uzun süredir konuya yazılmadığı için sorunu çözdüğünüzü düşündüm.)