اطلاعیه

Collapse
No announcement yet.

ارتباط avr و srf485 از طریق rs485

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارتباط avr و srf485 از طریق rs485

    سلام

    من دارم با یه سنسور فاصله به اسم srf485wpr کار می کنم. این سنسور با کمک بردی که داره اطلاعات رو از طریق ارتباط rs485 بر می گردونه. اینطوری که اول با حدود 600us صفر و 50us یک بهش می گیم می خوایم داده بفرستیم و بعد یه فریم داده شمل 8بیت دستور، 24 بیت آدرس، 8بیت دیتا و 8 بیت هم متمم جمع این ها برای چک کردن رو می فرستین و بعد منتظر جواب می شیم. باد ریت هم 38400 و هر بایت داده دو تا بیت stop داره.

    برای ارتباط با میکرو من از یه max485 استفاده کرده ام و دارم با usart میکرو اطلاعات رو می فرستم و می گیرم اما تا الان هیچ نتیجه ای نداشته ام. دستوراتی که تو کد استفاده کردم putchar و getchar بوده و برای ارسال فریم چندبار پشت سر هم نوشتم این کار اشتباهیه؟

    چون یا هیچی بر نمی گردونه یا نویز بر می گردونه.

    یه سوال دیگه هم اینکه اگر از اینتراپت receiver استفاده کنم مزیتی داره؟

    اگر هم کسی کدی برای این کار داره خیلی ممنون می شم بذاره ( برای c codevision)

    #2
    پاسخ : ارتباط avr و srf485 از طریق rs485

    دوست عزیز به پایه های RE/ و DI حتما توجه داشته باش این دو رو به هم وصل کن و بده به یکی از پایه های میکرو. وقتی خواستی داده بگیری باید این پایه صفر باشه.
    در ضمن help خود کدویژن باید مثالی چیزی داشته باشه.

    دیدگاه


      #3
      پاسخ : ارتباط avr و srf485 از طریق rs485

      نوشته اصلی توسط soroosh.strife
      سلام

      من دارم با یه سنسور فاصله به اسم srf485wpr کار می کنم. این سنسور با کمک بردی که داره اطلاعات رو از طریق ارتباط rs485 بر می گردونه. اینطوری که اول با حدود 600us صفر و 50us یک بهش می گیم می خوایم داده بفرستیم و بعد یه فریم داده شمل 8بیت دستور، 24 بیت آدرس، 8بیت دیتا و 8 بیت هم متمم جمع این ها برای چک کردن رو می فرستین و بعد منتظر جواب می شیم. باد ریت هم 38400 و هر بایت داده دو تا بیت stop داره.

      برای ارتباط با میکرو من از یه max485 استفاده کرده ام و دارم با usart میکرو اطلاعات رو می فرستم و می گیرم اما تا الان هیچ نتیجه ای نداشته ام. دستوراتی که تو کد استفاده کردم putchar و getchar بوده و برای ارسال فریم چندبار پشت سر هم نوشتم این کار اشتباهیه؟

      چون یا هیچی بر نمی گردونه یا نویز بر می گردونه.

      یه سوال دیگه هم اینکه اگر از اینتراپت receiver استفاده کنم مزیتی داره؟

      اگر هم کسی کدی برای این کار داره خیلی ممنون می شم بذاره ( برای c codevision)
      سلام
      شما میتونید بدون اینکه روال های ارتباط با usart رو خودتون بنویسین اول با توابع آماده کدویژن برای تست کارتون استفاده کنید
      با استفاده از هدر فایل stdio.h

      اگه مقدار بازگشتی از طرف ماژولتون مثل ارسال دادهاتون دارای فریم خاصی هست (مثلا 8 بیت رو برمیگردونه)
      میتونید با تابع :
      کد:
      get(str[],len)
      اون رو دریافت کنید
      کد:
      مثلا:
      #include stdio.h
      unsignde char str[8];
      main(){
      while(1){
      gets(str,8);
      lcd_puts(str);
      }
      }
      پیکر بندی usart هم به عهده خودتون
      برای ارسال داده هم باید رشته اطلاعاتت یکسره باشه نه تیکه تیکه...
      با تابع printf یا put هم میتونی انجام بدی:

      کد:
      مثلا
      //data=0b01010111010
      printf("%d",data);
      //data="hello world !";
      printf("%c",data);
      دقت کنید که حتما طبق گفته دوستمون آقا وحید rs485 رو برای ارسال پایه فعال سازشو 1 کنی بلافاصله بعد از ارسال اون رو برای حالت دریافت 0 کنی ...
      اول اینجوری تست کن بعد انتراپت بزار و تکمیل کن.

      دیدگاه

      لطفا صبر کنید...
      X