PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 09-06-2007, 02:32 AM   #11
minhpupil
Đệ tử 1 túi
 
Tham gia ngày: Apr 2007
Bài gửi: 11
:
Talking

Anh Falleaf có viết:
Code:
Các bạn lưu ý rằng, F nói trường hợp nâng cao, thì chúng ta hoàn toàn có quyền sử dụng mạng Multi Master. Khi bạn setup chip ở chế độ Slave, thì nó thụ động. Nhưng hãy thử nghĩ, tôi làm slave cho mạng này, và làm master của một mạng khác, vậy thì có được không? Vì tôi có tới 40 chân chứ không phải 2 chân.

Vậy nếu tôi làm master cho một mạng khác, mà trong đó slave của tôi lại là master của cái mạng mà tôi làm slave . Hoàn toàn được.

Nhưng vấn đề nâng cao ở chỗ nữa, nếu làm như vậy, tôi phải tốn 4 dây để làm 2 mạng. Vấn đề trước đây hình như F đặt ra cho Linh, nhưng Linh chưa giải quyết xong, đó là Multi Master trong một mạng dùng 2 dây thôi.

Vấn đề này F tiếp tục treo ở đây chờ người giải quyết.
Để hiểu thêm về Multi master này em phải đọc thêm ở tài liệu nào vậy anh?

Em nghĩ như thế này được không anh?
Giả sử trên mạng có 2 con Master 1 và 2 , tại 1 thời điểm chỉ có 1 con là Mater , con còn lại là Slave . Em lấy chân A0 đọc tín hiệu kích về , khi nào nó là 0 thì Master1 là master , khi nào A0=1 thì Master 2 là master.

Rồi em thay đoạn code viết trong CCS của 2 con master như sau:
Giả sử mặc định ban đầu A0=0 , tức Master1 là master:

Code:
 cho Master1
#use i2c(master, sda=PIN_C4, scl=PIN_C3, force_hw)
..............

  

void main()
{

set_tris_a(0x01); // A0 là chân nhập
Do
{
  if (input(pin_A0)) 
      {
         #use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0x10, force_hw)
               // cho master 1 là Slave , nhưng phần này em nghĩ là chỉ đặt đầu   
               //chương trình không thể đưa ra dây.Nên ở đây em định chèn đoạn 
              // code assembly để kích thanh ghi như sau:
          #asm
              em đưa đoạn code assembly để kích thanh ghi SSPSTAT,SSPCON1
              và SSPCON2 để đưa master 1 về slave?
          #endasm
      }
   else
      {
          // em đưa đoạn code assembly để đưa Master 1 thành master  
      }

    ............
}While (1)

}
Đối với Master 2 em làm ngược lại. Như vậy đúng không anh?
Em đọc datasheet của Pic 16f877A trang 105 có nói về multi master , nhưng em chưa hiể rõ lắm, mong anh chủ giúp
minhpupil vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:49 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam