PİC 18F46K22 UART veri gönderemiyorum

Başlatan crasftsman, 04 Kasım 2016, 09:01:58

crasftsman

iyi günler max 232 entegresi kullanarak dfmini playere uart uzerinden komut gondermeye çalılıyorum ama çalışmadı .kodlarıma bi bakar mısınız

crasftsman

#include <rs232.h>
//portb nin ramdeki yeri
void main()
{ setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
set_tris_d(0x00);    //portd çıkış
   set_tris_c(0x00);    //portc çıkış
   output_d(0x00);     //portu temizle
   output_c(0x00);     //portu temizle
   
char Send_Buffer[10];
unsigned int  i=0;

Send_Buffer[0] = 0x7E;
Send_Buffer[1] = 0xFF;
Send_Buffer[2] = 0x06;
Send_Buffer[3] = 0x09;
Send_Buffer[4] = 0x00;
Send_Buffer[5] = 0x00;
Send_Buffer[6] = 0x02;
Send_Buffer[7] = 0xFF;
Send_Buffer[8] = 0xE6;
Send_Buffer[9] = 0xEF;

   while(1)
{
for(i=0;i<9;i++){

      output_high(PIN_D0);
       delay_ms(200);
       output_low(PIN_D0);
       delay_ms(200);

puts(Send_Buffer);
delay_ms(10000);

}
                 



}
           
   

}

JOKERAS

Puts  fonksiyonu string basmak için kullanılmıyormu?

Yani..

char *String = "Merhaba";

puts(String);

yada

puts("Merhaba");


Sizin kodunuzda Send_Buffer String değil,karakter.

char SendBuffer[] = {0x7E, 0xFF, 0x06, 0x09, 0x00, 0x00, 0x02, 0xFF, 0xE6, 0xEF};

unsigned char Idx;

while(1){

      for(Idx = 0; Idx < 9; ++Idx) {
           
           putch(SendBuffer[Idx]);

      }
}

CCS bilmiyorum bilen arkadaşlar yardımcı olur sanırım.
Ama mantık olarak böyle olması lazım.Bir deneyin.


forsa1975

Gönderdiğiniz kodun tamamı mı?

#include <rs232.h> dosyasını eklemişsiniz

bu dosya içinde aşağıdaki tanımlar varmı?

#include <18F46K22.h>
#use delay(clock=64000000,crystal=16000000)
#use rs232(baud=9600,parity=N,xmit=None,rcv=None,bits=8,stream=PORT1)

haberleşme  portu hızı işlemcinin çalışma hızı doğru tanımlanması lazım.


crasftsman

teşekkürler iki hatayı da gördüm ama asıl problem rs485 ten haberleşiyormuş df mini player rs485 de iletim için entegresiz yapamazmıyız?örnek bi kod varsa yardımcı olursanız sevinirim

eti

max232 yerine MAX485 kullanmak gerekiyor. max485 te rx tx ve tx_enable pinleri bulunmakta.
enable pinini sadece veri gönderirken high duruma almak gerekiyor. gönderme bittikten sonra tekrar low yapmalısınız.

crasftsman

ben arduınodan  entegresiz yapmıştım yine etntegresiz şekilde haberleştiremez miyim (picde)?birde picten hangi komutu gönderdiğimi görebilme imkaanım var mı ?iyi günler