اطلاعیه

Collapse
No announcement yet.

کمک فوری در spi

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

    کمک فوری در spi

    سلام دوستان
    من به ی مشکل خوردم ک کمک فوریی میخام
    من می :read:خام چندتا میکرو شبکه کنم با spi ولی هنوز تو دوتا موندم!!!!هرکاری میکنم نمیتونم دیتا بفرستم!!
    میشه لطفا کد های فقط فرستادن و دریافت spi در کدویژن بگین!!
    تشکر
    من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

    #2
    پاسخ : کمک فوری در spi

    کسی نیست کمک کنه؟ :cry2:
    من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

    دیدگاه


      #3
      پاسخ : کمک فوری در spi

      اول از لحاظ سخت افزاری ارتباطتو چک کن ..یعنی اون چهار تا پایه SPI رو درست وصلش کن، بعد اگر با کدویژن کار میکنی از توی ویزاردش ارتباط SPI رو تیک بزن و فعال کن.....توی مرحله بعدی هم باید توی شرط While با دستور spi () دیتا ارسال کنی..کاره راحتی هستش....نتونستی بگو کد واست بذارم...

      دیدگاه


        #4
        پاسخ : کمک فوری در spi

        اولا مرسی که جواب دادی اون سخت افزار رو اوکی کردم
        اینم از کد:
        کد:
        master:
        
        #include <mega32.h>
        #include <alcd.h>
        #include <spi.h>
        #include <delay.h>
        
        void main(void)
        {
        int a;
        
        PORTA=0x00;
        DDRA=0xFF;
        PORTB=0x00;
        DDRB=0xB0;
        
        PORTC=0x00;
        DDRC=0x00;
        
        PORTD=0x00;
        DDRD=0x00;
        
        
        // SPI initialization
        // SPI Type: Master
        // SPI Clock Rate: 250.000 kHz
        // SPI Clock Phase: Cycle Start
        // SPI Clock Polarity: Low
        // SPI Data Order: MSB First
        SPCR=0x53;
        SPSR=0x00;
        
        
        // 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: 16
        lcd_init(16);
        
        while (1)
           {
            a=10;
            delay_ms(150);
            spi(a);
            delay_ms(250);
        
           }
        }
        slave:
        کد:
        #include <mega32.h>
        #include <alcd.h>
        #include <spi.h>
        #include <delay.h>
        #include <stdlib.h>
        
        
        void main(void)
        {
          char lcd_buffer[16];
          int a;
        
        PORTA=0x00;
        DDRA=0x00;
        PORTB=0x00;
        DDRB=0x40;
        PORTC=0x00;
        DDRC=0x00;
        PORTD=0x00;
        DDRD=0x00;
        // SPI initialization
        // SPI Type: Slave
        // SPI Clock Phase: Cycle Start
        // SPI Clock Polarity: Low
        // SPI Data Order: MSB First
        SPCR=0x43;
        SPSR=0x00;
        
        
        // 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(8);
        
        while (1)
           {
            a=spi(0);
            lcd_clear();
            lcd_puts("NUM : "); 
            itoa(a,lcd_buffer);
            lcd_gotoxy(1,1);
            lcd_puts(lcd_buffer);
            delay_ms(250);
        
           }
        }
        
        با این دستور مینویسم ولی ال سی دی عدد 5 نشون میده هرچقدر مقدار تغییر میدم عدد ال سی دی تغییر نمیکنه
        مشکل کار کجاست؟؟
        راستی کد دریافت کننده چیه؟
        من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

        دیدگاه


          #5
          پاسخ : کمک فوری در spi

          مهندسین گرامی کسی نیست spiکار کرده باشه؟
          من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

          دیدگاه


            #6
            پاسخ : کمک فوری در spi

            مشکلتونو بگین....اگه بتونیم کمک میکنیم

            دیدگاه


              #7
              پاسخ : کمک فوری در spi

              کدی که گذاشتین جواب نداد؟
              برای شروع spi باید بیت ss را در مستر صفر کنید و دیتا را که با دستور spi ارسال کردید این بیت را یک کنید...که همزمان با اون SCK هم پالس بده و بتونه دیتا رو انتقال بده...اگه اسکوپ داری پایه های SCK و SS رو چک کن ببین سیگنال داری؟

              دیدگاه


                #8
                پاسخ : کمک فوری در spi

                ارتباط SPI براساس کلاکی که از سمت مستر به وجود میاد، کار می کنه. یعنی اگر کلاک نباشه دیتایی رد و بدل نمیشه.
                شما تو میکروی اول 150 میلی ثانیه تاخیر گذاشتی بعد دیتا رو فرستادی، تو میکروی دوم همون اول دیتا رو میگیری.
                این اشتباهه. هر دو همزمان باید به هم دیتا بدن. یعنی تو یک لحظه از دستور spi تو دو طرف استفاده بشه.
                ---------
                .
                .
                ...........

                دیدگاه


                  #9
                  پاسخ : کمک فوری در spi

                  مشکل من همینه دیگه هرچی مفرستم اونور فقط عدد 5 رو ال سی دی نشون میده!!!
                  امگار هیچی نفرستادم
                  مهندس من همه تاخیر ها رو پاک کردم باز جواب نگرفت
                  واسه فرستادن و دریافت چ کدی بنویسم!؟؟؟؟؟؟
                  تو بسکام خیلی راحتره با spi کار کردن تا کدویژن!!!

                  میشه یه برنامه ساده ک مثلا عدد 25 بفرسته و اونور بگیره به عنوان مثال بنویسید لطفا؟
                  من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                  دیدگاه


                    #10
                    پاسخ : کمک فوری در spi

                    [code=c]#include <mega32a.h>
                    #include <spi.h>

                    char i;

                    void main(void)
                    {
                    PORTB=0x00;
                    DDRB=0xB0;

                    SPCR=0x50;
                    SPSR=0x00;

                    while (1)
                    {
                    i=spi(0x25);
                    }
                    }[/code]
                    ببین این جواب میده.
                    چون ارتباط spi چیزی نداره.
                    ---------
                    .
                    .
                    ...........

                    دیدگاه


                      #11
                      پاسخ : کمک فوری در spi

                      نوشته اصلی توسط ajapyy
                      [code=c]#include <mega32a.h>
                      #include <spi.h>

                      char i;

                      void main(void)
                      {
                      PORTB=0x00;
                      DDRB=0xB0;

                      SPCR=0x50;
                      SPSR=0x00;

                      while (1)
                      {
                      i=spi(0x25);
                      }
                      }[/code]
                      ببین این جواب میده.
                      چون ارتباط spi چیزی نداره.
                      این ماله مستر هستش؟؟
                      SLAVE پس چی؟؟
                      ی سوال spi(0x25) یعنی چی؟
                      نه باز همون 5 نشون داد
                      من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                      دیدگاه


                        #12
                        پاسخ : کمک فوری در spi

                        هم مستر و هم اسلیو مثل هم هستند.
                        spi(0x25) یعنی عدد هگز 25 رو با پروتکل spi بفرست.
                        ---------
                        .
                        .
                        ...........

                        دیدگاه


                          #13
                          پاسخ : کمک فوری در spi

                          نوشته اصلی توسط ajapyy
                          هم مستر و هم اسلیو مثل هم هستند.
                          spi(0x25) یعنی عدد هگز 25 رو با پروتکل spi بفرست.
                          این کد به جفتشون اضافه کردم و به اسلیو کدهای ال سی دی رو هم زدم ولی عدد255 نشون داد!!!!
                          شما ک گفتین ساده است پس چرا جواب نمیده
                          من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                          دیدگاه


                            #14
                            پاسخ : کمک فوری در spi

                            نوشته اصلی توسط milad brave
                            این کد به جفتشون اضافه کردم و به اسلیو کدهای ال سی دی رو هم زدم ولی عدد255 نشون داد!!!!
                            شما ک گفتین ساده است پس چرا جواب نمیده
                            الانشم میگم سادست.
                            زمانی 255 توی ارتباط SPI نشون داده میشه که یکی از طرفین درست کار نکنه.
                            امشب یک مثال به همراه پروتئوس رو براتون می نویسم.
                            ---------
                            .
                            .
                            ...........

                            دیدگاه


                              #15
                              پاسخ : کمک فوری در spi

                              نوشته اصلی توسط ajapyy
                              الانشم میگم سادست.
                              زمانی 255 توی ارتباط SPI نشون داده میشه که یکی از طرفین درست کار نکنه.
                              امشب یک مثال به همراه پروتئوس رو براتون می نویسم.
                              دستتون درد نکنه فقط لطفا یادتون نره
                              من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                              دیدگاه

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