PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp USB, CAN, I2C, SPI, USART... (http://www.picvietnam.com/forum/forumdisplay.php?f=45)
-   -   Giao tiếp I2C (http://www.picvietnam.com/forum/showthread.php?t=29987)

vakk 03-08-2012 01:24 AM

Giao tiếp I2C
 
1 Attachment(s)
Chào các bạn. Tôi muốn hỏi về giao tiếp I2C viết bằng HTpic cho pic18f2550 Thạch anh 24MHz
Chương trình cho master:

Code:

void I2Cinit(void)
{
        SSPSTAT|=0xC0;
        SSPCON1=0x28;//master
        SSPCON2=0x00;
        SSPADD=59;//100KHz
       
}

void I2Cwrite(int data,int addr)
{
       
        SEN=1;
        while(SEN){}
        while(ACKSTAT){}//chờ ACK
        SSPBUF=(addr<<1)|0;//addr=4
        while(ACKSTAT||BF){}
        SSPBUF=data;
        while(ACKSTAT){}
        PEN=1;
        while(PEN){}
        I2Cinit();
}

Chương trình cho slave:

Code:

void I2Cinit(void)
{
        SSPSTAT|=0xC0;
        SSPCON1=0x36;//slave không ngắt startstop
        SSPCON2=0x00;
        SSPADD=(4<<1)|0;//addr=4
        SSPIE=1;
        SSPIF=0;
       
}

Hiện tại tôi chưa biết viết hàm nhận dữ liệu như nào vì theo tôi biết sau khi nhận đúng địa chỉ nó sẽ ngắt hoặc sau khi nhận dữ liệu xong nó cũng ngắt, vậy là ta nhận dữ liệu từ lần ngắt thứ 2 trở đi là đúng hay sai?
khi chạy thử mô phỏng thì proteus hiện ra như file đính kém, tại xung thứ 9 không có xung ack, vậy là tôi đã định sai địa chỉ hay do lỗi gì vì tối đọc thấy rằng phần cứng sẽ tự động gửi xung ack khi thấy đúng địa chỉ
Thanks

nguyenhuutien 04-08-2012 12:17 AM

mình cũng đang làm bài này, nhưng mà mình viết nó vẫn không chạy. bạn giúp mình được chứ

vakk 04-08-2012 02:18 AM

Trích:

Nguyên văn bởi nguyenhuutien (Post 76855)
mình cũng đang làm bài này, nhưng mà mình viết nó vẫn không chạy. bạn giúp mình được chứ

Hic, mình viết nó cũng có chạy đâu, mình mò mẫm cũng khá lâu rồi nhưng mà vẫn chưa làm được, cái này lằng nhằng thật

nguyenhuutien 04-08-2012 03:02 PM

uhm. bạn mô phỏng nó còn hiển thị chứ mình thì tịt luôn rồi. mình cũng làm cái này cả tháng nay rồi mà không chạy, trên diễn đàn chẳng có ai giúp hết. nếu bạn làm được thì share cho mình với nha. thanks

vakk 04-08-2012 04:08 PM

mình cũng mò lâu lắm rồi :D, tất nhiên nếu làm được mình sẽ post tất cả lên đây

nguyenhuutien 04-08-2012 05:40 PM

uhm. thanks. chán thật những vấn đề mình gặp khó khăn mà trên diễn đàn chẳng có ai ra tay giúp đỡ hết

vakk 04-08-2012 06:28 PM

không có sư huynh nào vào chỉ dậy nhỉ, 2 thằng lính mới tự sướng với nhau thì bao giờ mới mò xong, haizzzz

nguyenhuutien 05-08-2012 11:26 AM

uhm. chán quá, đề tài mình sắp nộp nữa rồi chứ

vakk 18-08-2012 11:03 AM

http://www.mediafire.com/?u929wpsyy6y9691
Cho những người mới mò mẫm như mình. Khi mô phỏng nhớ sửa property của mấy con điện trở treo từ analog sang digiatal


Múi giờ GMT. Hiện tại là 12:40 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