Thông báo

Collapse
No announcement yet.

Cần hướng dẫn cách dùng hàm SPI trong thư viện spi

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần hướng dẫn cách dùng hàm SPI trong thư viện spi

    Mình có đọc bài hướng dẫn dùng SPI để làm led matrix
    #include <mega8515.h>
    #include <delay.h>
    // SPI functions
    #include <spi.h>

    #define SCK PORTB.3
    #define DATA PORTB.2
    #define SCL PORTB.1

    #define B PORTC.1;
    #define C PORTC.2;
    #define OE PORTC.3;
    unsigned char i;
    void LatchData(){
    SCL=0;
    SCL=1;
    }
    void main(void){
    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 4000,000 kHz
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: Low
    // SPI Data Order: MSB First
    SPCR=0x50;
    SPSR=0x00;

    DDRB=0xFF;
    DDRC=0xFF;
    SCK=1;
    SCL=1;
    while (1){
    for (i=0;i<=7;i++){
    if (i&1){
    spi(0b10101010);
    spi(0b10101010);
    spi(0b10101010);
    } else {
    spi(0b01010101);
    spi(0b01010101);
    spi(0b01010101);
    }
    LatchData();
    PORTC=i+8;
    delay_ms(2);
    }
    }
    }
    Ko biết là mình quy định cổng xuất mấy cái dữ liệu đó ra ở đâu ạ. Có phải là chỗ Define ko, mình học C thì define để định nghĩa hằng mà.

  • #2
    spi trên chíp avr có sẵn phần cứng chính là mấy cái chân dùng để nạp chíp nếu master chỉ truyền mà ko nhận thì chỉ dùng 2 chân MOSI và SCK (đặt tất cả slave ở input)

    Comment


    • #3
      Tên các cổng được định nghĩa ở trong thư viện riêng của từng vdk rồi <mega8515>. mình ko rõ về cái define lắm. Nhưng thấy nó được sử dụng như marco thì phải. vd ở dưới nó ghi SCL=0 thì khi biên dịch chương trình sẽ dịch ra là PortB.1=0. Thật ra thì các chân SCK, SCL, DATA ko thể thay đổi được. Tùy từng chip mà khai báo cho đúng thôi.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X