اطلاعیه

Collapse
No announcement yet.

سوال در مورد اینترفیس SPI

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

    سوال در مورد اینترفیس SPI

    سلام خدمت دوستان
    یه برنامه می خوام بنویسم برای ارتباط spi بین دو atmega8 که تو آی سی مستر یه اینتراپت خارجی مثل یک میکرو سوئیچ باشه و تو آی سی اسلیو یه ال ای دی با هر بار زدن دکمه خاموش روشن بشه چطور باید بنویسم برنامشو ؟؟
    خودم یه برنامه نوشتم ولی کار نمیکنه .
    این برنامه من:

    MASTER :

    کد:
    #include <mega8.h>
    #include <delay.h>
    volatile unsigned char a,temp;
    void main(void){
    DDRD = (0<<DDD2);
    DDRB = (1<<DDB2)|(1<<DDB3)|(1<<DDB5);
    a=0;
    PORTD.2 = 0;
    SPCR = 0x52;
    MCUCR = 0x02;
    GICR = 0x40;
    PORTB.2 = 1;
    temp = SPDR;
    temp = SPSR;
    while (1)
    {
    PORTB.2 = 0;
    SPDR = a;
    while (!(SPSR & 0x80));
    PORTB.2 = 1;
    }
    }
    
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    a++;
    }

    SLAVE :

    کد:
    #include <mega8.h>
    #include <delay.h>
    volatile unsigned char a,temp;
    void main(void)
    {
    DDRB = (1<<DDB4);
    DDRD.0 = 1;
    SPCR = 0x41;
    temp = SPDR;
    temp = SPSR;
    while (1)
    {
    a= SPDR;
    while (!(SPSR & 0x80));
    }
    if (a%2==0){
    PORTD.0 =~ PORTD.0;
    }
    
    }

    #2
    پاسخ : سوال در مورد اینترفیس SPI

    ببین من کلی بهت میگم.
    اون میکرویی که کلید بهش وصل هست ،طوری برنامه بنویس که با زدن کلید بیاد یه متغییر رو عدد بده (مثلا a=1) و اون متغییر رو با ارتباط spi بفرست به میکرو دومی ،و
    برای میکرو دومی یه برنامه بنویس که :
    اگه متغییر a=1 بود ،تو بیا ست کن ال ای دی رو.
    بسیار ساده هست ،ولی چون من با بسکام کار میکنم نمیتونم تو این کامپایلر برات بنویسم.
    در کل برای انتفال دیتا،مقدار دیتا رو میریزن تو یه متغییر و بعد اون متغییر رو ارسال میکنن.زیاد کار شاخی هم نیست.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    دیدگاه


      #3
      پاسخ : سوال در مورد اینترفیس SPI

      نوشته اصلی توسط hosseinam1370
      ببین من کلی بهت میگم.
      اون میکرویی که کلید بهش وصل هست ،طوری برنامه بنویس که با زدن کلید بیاد یه متغییر رو عدد بده (مثلا a=1) و اون متغییر رو با ارتباط spi بفرست به میکرو دومی ،و
      برای میکرو دومی یه برنامه بنویس که :
      اگه متغییر a=1 بود ،تو بیا ست کن ال ای دی رو.
      بسیار ساده هست ،ولی چون من با بسکام کار میکنم نمیتونم تو این کامپایلر برات بنویسم.
      در کل برای انتفال دیتا،مقدار دیتا رو میریزن تو یه متغییر و بعد اون متغییر رو ارسال میکنن.زیاد کار شاخی هم نیست.
      آره. ولی اصلا مشکل سر این نیست. مشکل من سر این هست که عملیات انتقال و دریافت انجام نمیشه و روی خط
      کد:
      while (!(SPSR & 0x80));
      گیر میکنه !!
      من کلا مفهوم این اینترفیس سریال رو می فهمم اما یه خورده وقتی میام برنامشو بنویسم مشکل دار میشه. کلا هر وقت یه مبحث جدیدی رو شروع میکنم به نظرم خیلی سخت میاد اما وقتی یکی دو برنامه براش بنویسم ساده میشه. مساله من سر همون یکی دو تا برنامس :biggrin:
      مثلا تا همین چند دقیقه پیش فکر میکردم ماژول یه چیزه خیلی پیچیده و بزرگه !!!! اما الان تو فروم یکی دو تا ماژول دیدم متوجه شدم یه چیزیه مثل همین میکروی خودمون حتی گاهی اوقات ساده تر ....

      دیدگاه


        #4
        پاسخ : سوال در مورد اینترفیس SPI

        کار کن کارکن.تا بتونی درستش کنی.
        من برعکس توام،همه چیز و ساده میبینم و گاهی اوقات ساده حل میشه.اما گاهی اوقات خیلی بزرگبر از اونیه که فک میکردم.
        ساده ببین نه بزرگ.
        به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
        (پيش به سوي هدف)

        دیدگاه


          #5
          پاسخ : سوال در مورد اینترفیس SPI

          از بحث اصلی دور شدیم.
          کسی میتونه در این مورد کمک کنه ؟؟؟ :angry:

          دیدگاه

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