Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

rs485 haberleşme yardım

Başlatan zaferortatepe, 14 Ocak 2014, 11:57:45

zaferortatepe

merhaba arkadaşlar,rs485 haberleşmesi yaparak 5 adet pic i bilgisayarla haberleştirmek i,stedim fakat ccs c kodlarını yazdıktan sonra 1 tane pic ile simülasyon yapmak istediğimde resimdeki gibi sarı renkli pin çıkıyor karşıma. rs485.c kodundamı yoksa benim yazdığım ccs c kodunda birşey eksik. bilenlerden yardımcı olmalarını diliyorum. teşekkür ederim.


#include <16F877.h>
#device *=16
#device adc=10
#fuses XT,NOWDT,NOLVP,NOBROWNOUT,NOPROTECT,PUT
#use delay(clock=4000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,stream=PC)
#define RS485_RX_PIN       PIN_C7
#define RS485_TX_PIN       PIN_C6
#define RS485_ENABLE_PIN   PIN_C5
#define RS485_RX_ENABLE    PIN_C5
// Defines the destination's RS485 ID
#define  RS485_DEST_ID        0x11
// Defines the device's RS485 ID
#define  RS485_ID             0x7F
#define  RS485_USE_EXT_INT    TRUE
#include <rs485.c>
#include <flex_lcd.c>
int8 buffer[40];
int8 next_in  = 0;
int8 next_out = 0;
int16 value;
float kilo;

#INT_RDA
void serial_isr()
{
int8 t;
buffer[next_in] = fgetc(PC);
t = next_in;
next_in = (next_in+1) % sizeof(buffer);
if(next_in == next_out)
next_in=t;   
}

#define bkbhit (next_in != next_out)

int8 bgetc()
{
int8 c;
while(!bkbhit);
c = buffer[next_out];
next_out = (next_out+1) % sizeof(buffer);
return c;
}

void main()
{
   int8 i, msg[32];
   lcd_init();
   setup_adc_ports(AN0);
   setup_adc(adc_clock_internal);
   set_adc_channel(0);
   delay_us(10);
   printf(lcd_putc,"\f     OTOMASYON");
   printf(lcd_putc,"\n       SISTEMI");
   delay_ms(2000);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   rs485_init();

   while(1)
   {
      value = read_adc();
      kilo=value*0.048875855;
      printf(lcd_putc,"\f   agirlik=%5.2f",kilo);
      if(rs485_get_message(msg,FALSE))
      {
      printf(lcd_putc,"\n    DATA GELDI...");
      for(i=0; i<msg[1]; ++i)
      fputc(msg[i+2], PC);
      delay_ms(2000);
      }

      for(i=0; bkbhit && i<sizeof(msg); ++i)
      msg = bgetc();
      if(i > 0)
      {
      rs485_wait_for_bus(FALSE);
      while(!rs485_send_message(RS485_DEST_ID, i, msg))
      {
      delay_ms(RS485_ID);
      }
      }
   }
}

a.ygt

Hocam çözüm bulabildinmi bende rs485 ile master slave haberleşmesi yapmaya çalışıyorumda.pek net bir bilgi bulunmuyor nette CCS C ile kodlama yapıyorum.şuan biraz ilerlerme kaydetmiş durumdayım...