اطلاعیه

Collapse
No announcement yet.

برقرای ارتباط دو میکرو

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

    برقرای ارتباط دو میکرو

    با سلام خدمت اساتید و مهندسین عزیز

    یه سوال در مورد ارتباط دو میکرو داشتم. بعد از این که پروتکل ارتباطی رو انتخاب کردیم مثلا SPI و مدار لازم چیده شد و برنامه (در بسکام) به منظور معرفی و ارتباط نوشته شد چطور دیتا انتقال بدیم؟ مثلا عبارت "hi" رو چطور به میکرو گیرنده بفرستیم و از اون بخونیم و روی LCD نمایش بدیم؟
    STM32 واقعا یه چیز دیگه است...

    #2
    پاسخ : برقرای ارتباط دو میکرو

    معمولا بعد از برقراری ارتباط حالا از هر طریقی (spi رو من کار نکردم ) از همون دستورات send و receive مخصوص همان توابع بکار رفته استفاده میشود
    که بسته نوع توابع نوشته شده دارند که مثلا یه کلمه را بعنوان ورودی بگیرند یا یک کد عددی بگیرند .
    معمولا کار ارسال به این شکل انجام میشود ( در سریال پورت که این گونه است ) شما عدد یا حرفی را به ورودی می دهید و در طرف مقابل باید از تابع receive ببینید چی می گیرید ؟ یا کد اسکی اون حرف مشخص شما رو برمیگردونه یا کاراکترش رو میده . از این حالت ها خارج نیست .
    - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

    دیدگاه


      #3
      پاسخ : برقرای ارتباط دو میکرو

      سلام دوست عزیز
      من درکدویژن یک مثال فوق العاده راحت رابرایتون می نویسم امیدوارم که جواب سوالتون بگیریددرتوضیحات
      #include <mega32a.h>
      #include <delay.h>
      #include <stdio.h>
      #include <stdlib.h>


      void main(void)
      {

      PORTA=0x00;
      DDRA=0x00;

      PORTB=0x00;
      DDRB=0x00;
      PORTC=0x00;
      DDRC=0x00;
      PORTD=0x00;
      DDRD=0x00;
      UCSRA=0x00;
      UCSRB=0x08;
      UCSRC=0x06;
      UBRRH=0x00;
      UBRRL=0x33;

      while (1)
      {
      unsigned char a[8]="AliReza";
      putchar('a'
      puts(a);
      delay_us(10);

      }
      }
      این کد برای USRTمیکرو هست که کلیت عمل کرد رامی توان اینگونه توضیح داد که اول یک کاراکتر 'a' رامی فرسته وبعد یک رشته به اسم a[8]می فرسته دستورات puts,putcharهم توابع این کتابخانه هستند .
      ودرگیرنده باید اول چک کنه که کارکتر 'a' بیاید وبعد رشته رادریافت کنه اینگونه بنوسید درصورتی که سیم ارتباط سریالتون قطع بشه وبعد وصل میکرو هنگ نمی کنه
      #include <mega16.h>
      #include <delay.h>

      #include <alcd.h>


      #include <stdio.h>

      unsigned char a[9];
      char X;

      void main(void)
      {

      PORTA=0x00;
      DDRA=0x00;


      PORTB=0x01;
      DDRB=0x01;

      // USART initialization
      // Communication Parameters: 8 Data, 1 Stop, No Parity
      // USART Receiver: On
      // USART Transmitter: Off
      // USART Mode: Asynchronous
      // USART Baud Rate: 9600
      UCSRA=0x00;
      UCSRB=0x10;
      UCSRC=0x86;
      UBRRH=0x00;
      UBRRL=0x33;


      // Alphanumeric LCD initialization
      // Connections are specified in the
      // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
      // RS - PORTA Bit 0
      // RD - PORTA Bit 1
      // EN - PORTA Bit 2
      // D4 - PORTA Bit 4
      // D5 - PORTA Bit 5
      // D6 - PORTA Bit 6
      // D7 - PORTA Bit 7
      // Characters/line: 8
      lcd_init(16);
      while (1)
      {
      X=getchar();
      if(X=='a&#039{
      gets(a,9);
      lcd_clear() ;
      lcd_gotoxy(0,0);
      lcd_puts(a);
      delay_ms(80);
      }
      }
      }
      درگیرنده دستور getchar و دستور getsباعث دریافت داده می شوند وبیقه هم که مشخصه اگه لازم بود بگید بهتون مرجع معرفی کنم که دستورات توش هست وبه اسانی می تونید راه اندازی کنید یا به پروتوکل های rs485یا rs232و....تبدیل کنید
      Ali Reza Tarkesh Esfahani

      Yahoo: amt_1390@yahoo.com

      دیدگاه


        #4
        پاسخ : برقرای ارتباط دو میکرو

        با تشکر فراوان از راهنمایی دوستان عزیز لطفا در صورت امکان کد بسکام را هم قرار دهید چون بخشی از برنامه نوشته شده است :smile:
        STM32 واقعا یه چیز دیگه است...

        دیدگاه

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