getchar buffer problemi

Başlatan isoment01, 23 Haziran 2017, 15:52:48

isoment01

arkadaşlar merhaba şöyle bir kodum var;
#device PIC16F877A
#include <16f877a.h>
#fuses xt,nowdt,noprotect, nobrownout, nolvp, noput, nowrt, nocpd
#use delay (clock=4000000)
#use fast_io(b)
#use fast_io(c)
#use rs232 (baud=9600,xmit=pin_C6, rcv=pin_C7, parity=N, stop=1, Bits=8)
unsigned int16 sayac = 0;
char islem;




#int_timer1
void timer1_interrupts()
{

set_timer1(64923);
while(sayac>0)
{ output_high(pin_c2);
delay_us(20);
output_low(pin_c2);
sayac--;
}



void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);      //262 ms overflow      //65,5 ms overflow
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_b(0x00);
output_b(0x00);
set_tris_c(0x00);
output_c(0x00);
enable_interrupts(GLOBAL);
enable_interrupts(INT_timer1);
//enable_interrupts(int_rda);
printf("\n\r System initializing....\n\r");
printf("\n\r bir islem seciniz...\n\r");

delay_us(50);
//hedef_ileri=3200;//400*8
//hedef_geri=7200;

set_timer1(64923);

   while(TRUE)
   {
islem=0;
if(kbhit())
{

islem=getchar();
putc(islem);
output_toggle(pin_b0);
if(islem=='r')
{ output_high(pin_c3);// motor aktif,motor enable pin
delay_ms(100);
output_high(pin_c1);// motor yönü belirlendi, motor direction pin
sayac=3200;
printf("right start\r\n");
}
if(islem=='s')
{
output_high(pin_c3);
delay_ms(100);
output_low(pin_c1);
sayac=3200;
printf("left start \n\r");
if(islem=='s')
{
output_low(pin_c3);
sayac=0;
printf("motor stop \n\r");
}
}
}
   }


}


kodu yüklediğimde serialde getchar kendiliğinden iki karekter atıyor , karekterlerimi de giremiyorum bunun sebebi neden olabilir ?

isoment01

arkadaşlar bana yardımcı olabilecek var mı ? rs 232 kablosunda ve max 232 de problem yaşamıyorum fakat picten neden böyle karekterler geldiği hakkında hiç bir fikrim yok.

EMKE

usb max232 çeviricide kullandığın 9 pin d-sub konnektörün 5 numaralı (gnd) ucu ile devrenin gnd ucu birleşmeli yoksa bu tarz karakterler alırsın bir kontrol et gnd hatlarını , rs232 iletişimde rx-tx-gnd olarak 3 uç vardır.

isoment01

Alıntı yapılan: EMKE - 04 Temmuz 2017, 17:15:03
usb max232 çeviricide kullandığın 9 pin d-sub konnektörün 5 numaralı (gnd) ucu ile devrenin gnd ucu birleşmeli yoksa bu tarz karakterler alırsın bir kontrol et gnd hatlarını , rs232 iletişimde rx-tx-gnd olarak 3 uç vardır.
sorunu cozdum hocam rx tx bacakları c portunde ben ek olarak c portunu output olarak tanımladıgım ıcın voltaj dalgalanmalarından dolayı sanırım o tarz karekterler cıkıyordu. baska portu cıkıs yaptım cozdum sorunu

Powered by EzPortal