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?
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?