RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

nhờ giúp đỡ về giao tiếp SPI

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • nguyentuanqs
    Thành viên mới
    • Aug 2010
    • 72

    #1

    nhờ giúp đỡ về giao tiếp SPI

    e đang tập tành AVR ạ. e viết đến giao tiếp SPI thì gặp nhiều lỗi mô phỏng quá. các bác giúp e với.
    Attached Files
  • nguyentuanqs
    Thành viên mới
    • Aug 2010
    • 72

    #2
    có ai biết thì giúp e với ạ.

    Comment

    • quang_le_pt
      Thành viên tích cực
      • Mar 2012
      • 189

      #3
      Các bác cho hỏi e tìm thấy cái thư viện spi.h trong codevision mà không biết dùng thế nào .bác nào có thể chỉ cho e với ạ

      Comment

      • vuxuansyhut
        Thành viên tích cực
        • Jul 2009
        • 303

        #4
        Nguyên văn bởi quang_le_pt Xem bài viết
        Các bác cho hỏi e tìm thấy cái thư viện spi.h trong codevision mà không biết dùng thế nào .bác nào có thể chỉ cho e với ạ
        Bạn ah. Hàm gửi và nhận dữ liệu qua spi rất đơn giản, khuyên bạn nên tự viết thư viện.

        Giải pháp điện tử của bạn

        Comment

        • quang_le_pt
          Thành viên tích cực
          • Mar 2012
          • 189

          #5
          B có ví dụ đơn giản nào có thể cho mình tham khảo qua được không mình dùng codevision

          Comment

          • vuxuansyhut
            Thành viên tích cực
            • Jul 2009
            • 303

            #6
            Việc truyền dữ liệu SPI thường do người lập trình chủ động, còn việc nhận thì bạn có thể dùng ngắt hoặc không. Ở trên bạn nguyentuanqs đã đưa 1 code tham khảo spi khi viết bằng avrstudio bạn coppy nguyên sang codevision là chạy. Chỉ chú ý khi viết cho slave thì chương trình ngắt phải là

            // SPI interrupt service routine
            interrupt [SPI_STC] void spi_isr(void)
            {
            unsigned char data;
            data=SPDR;
            // Place your code here

            }

            Giải pháp điện tử của bạn

            Comment

            • quang_le_pt
              Thành viên tích cực
              • Mar 2012
              • 189

              #7
              mih cop thử nhưng ko được nhiều lỗi lắm nhất là mấy cái trong thư viện không biết sang đây sửa thế nào

              Comment

              • vuxuansyhut
                Thành viên tích cực
                • Jul 2009
                • 303

                #8
                Bạn up code mình sửa lỗi cho.

                Giải pháp điện tử của bạn

                Comment

                • quang_le_pt
                  Thành viên tích cực
                  • Mar 2012
                  • 189

                  #9
                  đây là code của bạn trên
                  master


                  //chuong trinh master spi dung atmega8
                  #include <avr/io.h>
                  #include <avr/interrupt.h>
                  #include <util/delay.h>
                  #include <string.h>


                  #define spi_port PORTB
                  #define spi_ddr DDRB
                  #define ss 4
                  #define mosi 5
                  #define miso 6
                  #define sck 7

                  char data[] = "nguyen minh tuan";
                  void init_spi (void)
                  {
                  spi_ddr = (1<<ss)|(1<<mosi)|(1<<sck);
                  //spi_port= (1<<miso);

                  SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<SPR1)|( 1<<SPR0);

                  }

                  void transmit (void)
                  {
                  int i;
                  for (i=1;i<=strlen(data);i++)
                  {
                  SPDR = data[i];
                  _delay_ms(100);
                  while (bit_is_clear (SPSR,SPIF))
                  {};

                  _delay_ms (100);


                  };
                  }

                  int main ()
                  {
                  init_spi();
                  transmit();

                  while (1)
                  {};
                  return 0;
                  }
                  slave
                  #include <avr/io.h>
                  #include <avr/interrupt.h>
                  #include <util/delay.h>
                  #include "myLCD.h"
                  #include <string.h>

                  #define spi_port PORTB
                  #define spi_ddr DDRB
                  #define ss 4
                  #define mosi 5
                  #define miso 6
                  #define sck 7

                  void init_spi (void)
                  {
                  //spi_ddr = (1<<miso);
                  spi_port= (1<<mosi)|(1<<ss)|(1<<sck);

                  SPCR = (1<<SPIE)|(1<<SPE)|(1<<DORD)|(1<<CPHA)|(1<<SPR1);

                  }
                  void hienthi(void)
                  {
                  char a;
                  while(bit_is_clear(SPSR,SPIF))
                  {
                  a = SPDR;
                  putChar_LCD (a);
                  }

                  }
                  int main ()
                  {
                  init_LCD();
                  home_LCD();
                  init_spi();
                  while (1)
                  {};

                  }
                  ISR (SPI_STC_vect)
                  {
                  hienthi();
                  _delay_ms(100);
                  }

                  thanks

                  Comment

                  • vuxuansyhut
                    Thành viên tích cực
                    • Jul 2009
                    • 303

                    #10
                    Bạn up code viết trên codevision mà bạn viết để mình xem lỗi và sửa giúp bạn.

                    Giải pháp điện tử của bạn

                    Comment

                    • quang_le_pt
                      Thành viên tích cực
                      • Mar 2012
                      • 189

                      #11
                      b có thể cho mình nick yahoo được ko

                      Comment

                      Về tác giả

                      Collapse

                      nguyentuanqs Tìm hiểu thêm về nguyentuanqs

                      Bài viết mới nhất

                      Collapse

                      Đang tải...