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_timer1void 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 overflowsetup_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 pindelay_ms(100);output_high(pin_c1);// motor yönü belirlendi, motor direction pinsayac=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