Thông báo

Collapse
No announcement yet.

Giao tiếp I2C bằng phần cứng

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

  • Giao tiếp I2C bằng phần cứng

    Xin lỗi các bác em ngược nguồn (em post bài bên AVR mà chưa dc trả lời)

    Mình tìm được tài liệu nói về quá trình truyền nhận giữa 2 AVR như sau (Phần người ta hướng dẫn mình đặt sau dấu "//", còn lại là code mình viết theo hướng dẫn):

    Code:

    //Master Receive
    //Set:TWEN, TWSTA, TWINT and wait for TWINT
    TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
    while (!(TWCR & (1<<TWINT)));
    //Transmit address + R
    TWDR = SLA_R;
    TWCR = (1<<TWINT)|(1<<TWEN);
    //Read data out of TWDR every time TWINT cleared
    while (!(TWCR & (1<<TWINT)));
    DATA = TWDR;
    //After last byte, instead of regular ACK, leave line high
    ??????????
    //Set TWSTO to signal stop
    TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
    //Status registers for arbitration
    ??????????

    //Slave Transmit
    //Set address in TWAR, TWEN, TWEA (enable ack)
    TWCR = (1<<TWEN)|(1<<TWEA);
    TWAR = Slave_Add;
    //TWSTA, TWSTO cleared
    TWCR = (1<<TWSTA)|(1<<TWSTO);
    //When AVR hears address + R, it’ll enter transmit mode
    ??????????
    //Put bytes into TWDR, set TWINT and TWEA to acknowledge
    TWDR = DATA;
    TWCR = (1<<TWINT)|(1<<TWEA);

    Nhờ các bác xem giúp em phần trong dấu ?? em phải viết thế nào? Phần code còn lại em đã làm đúng hướng dẫn chưa?

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X