View Single Post
Old 29-04-2010, 07:35 PM   #1
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Lỗi khó hiểu trong SPI Module

Các bạn xem 2 đoạn code dưới đây :
Đoạn code 1:
while(1){
WriteSPI1(0x45);
while(SPI1STATbits.SPITBF);delay_us(20);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);delay_us(20);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);delay_us(20);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);delay_us(20);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);delay_us(20);
WriteSPI1(0x95]);
while(SPI1STATbits.SPITBF);delay_us(20);
WriteSPI1(0xf0);
while(SPI1STATbits.SPITBF);delay_us(20);
}

và Đoạn code 2:
while(1){
WriteSPI1(0x45);
while(SPI1STATbits.SPITBF);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);
WriteSPI1(0b10);
while(SPI1STATbits.SPITBF);
WriteSPI1(0x95]);
while(SPI1STATbits.SPITBF);
WriteSPI1(0xf0);
while(SPI1STATbits.SPITBF);
}
Tôi quan sát trên bộ Analyzer(bộ phân tích logic) thì thấy rằng ở đoạn code 1 nó hiển thị đầy đủ các byte 0x45 0b10 0b10 0b10 0b10 0x95 0xf0, nhưng ở đoạn code 2 nó hiển thị thiếu thông tin cụ thể chỉ có 0x45 0b10 0b10 0xf0. Tôi không hiểu tại sao nữa, bởi vì tôi chờ bit SPI1STATbits.SPITBF ==0 tức bộ đệm truyền trống rỗng mới truyền tiếp. xin giải thích hộ.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn