![]() |
Giao tiếp I2C điều khiển động cơ DC
Em có một đề tài về I2C rất mong được sự chia sẻ của các anh chị đi trước ạ . EM có 2 PIC 16f877a giao tiếp I2C để điều khiển tốc độ or vị trí động cơ DC . PICA : Bàn phím nhập thông số tốc độ or vị trí (góc quay) . PICB : điều khiển động cơ DC và hiển thị thông số trên led 7 đoạn. Em mới bắt tay vào làm nên còn nhiều bỡ ngỡ mong các anh chị chỉ giáo . Em xin chân thành cảm ơn
|
Vấn đề giao tiếp I2C giữa Pic16f877a với eeprom 24C00
1 Attachment(s)
Mình muốn ghi 1 byte (0xAA) vào ô nhớ 0xF1 trong Eeprom 24C00 qua I2C, sau đó đọc dữ liệu từ ô nhớ đó (0xF1) xuất ra PORTB, nhưng không hiểu sao kết quả toàn ra là PORTB = 0xFF.
Nhờ mọi người xem đoạn code của mình viết bằng CSS C có vấn đề gì không? Ngồi cả ngày mãi không được chán quá. #include "C:\Users\oattao\Desktop\Draft\I2C.h" void InitI2C(); void SendByte(int8 data, int8 address); int8 ReadByte(int8 address); void main() { TRISB = 0x00; TRISC = 0xFF; InitI2C(); SendByte(0xAA, 0xF1); PORTB = ReadByte(0xF1); while(1); } void InitI2C() { SSPEN = 1; // MSSP enalbe SSPM3 = 1; // Master mode SSPM3 = ob1000 SSPM2 = 0; SSPM1 = 0; SSPM0 = 0; CKE = 0; SMP = 1; // Standard speed mode SSPADD = 0x28; } void SendByte(int8 data, int8 address) { // Send start condition SEN = 1; while(!SSPIF); SSPIF = 0; // Select device SSPBUF = 0b10101110; while(!SSPIF); SSPIF = 0; // Selec address in device SSPBUF = address; while(!SSPIF); SSPIF = 0; // Move data to device SSPBUF = data; while(!SSPIF); SSPIF = 0; // Send stop conditon PEN = 1; while(!SSPIF); SSPIF = 0; } int8 ReadByte(int8 address) { int8 data; // Send start conditon SEN = 1; while(!SSPIF); SSPIF = 0; // Select device SSPBUF = 0b10101110; while(!SSPIF); SSPIF = 0; // Select address in device SSPBUF = address; while(!SSPIF); SSPIF = 0; // Send Restart bit RSEN = 1; while(!SSPIF); SSPIF = 0; SSPBUF = 0b10101111; // Select device while(!SSPIF); SSPIF = 0; // Set RCEN RCEN = 1; while(!SSPIF); SSPIF = 0; data = SSPBUF; // Send NACK bit ACKEN = 1; while(!SSPIF); SSPIF = 0; // Send stop bit PEN = 1; while(!SSPIF); SSPIF = 0; return data; } |
Trích:
|
Múi giờ GMT. Hiện tại là 08:24 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam