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 Bài Trong Ngày 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-08-2008, 11:32 PM   #1
nhphuduc
Nhập môn đệ tử
 
Tham gia ngày: Jun 2008
Bài gửi: 2
:
Cool Không Kết nối 89C51 với PC qua LAN (nhờ ENC28j60 - Pic16F) dc!

Do mình kg rành lập trình với con PIC để điều khiển bảng Matrix Led trong khi mình muốn kết nối 89C51 với PC qua cổng LAN nên mình đã ráp nối với 1 bộ Mini Ethenet Board (ENC28J60) gắn với con Pic16F877a, khi kết nối 1 "bộ" này thẳng với PC (cable bấm chéo) thì kết nối tốt, thay IP tốt, gửi nhận dữ liệu tốt. Nhưng khi gắn cùng lúc 3 "bộ" này qua Hub/Switch thì nó bị.. khùng tứ tung, lúc Ping tới được, lúc kg. Nếu ping tới dc 1 thằng, thì 2 thằng kia..mất tiêu. Dưới đây là chương trình. CÁC BÁC GIÚP MÌNH VỚI... HU HU... NHỨC ĐẦU WA XA!!!
***************************
#define SPI_Ethernet_HALFDUPLEX 0
#define SPI_Ethernet_FULLDUPLEX 1

unsigned char myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x20, 0x3F} ; // my MAC address
unsigned char myIpAddr[4] = {10, 20, 215, 48} ; // my IP address
unsigned char SetIpAddr[4];
unsigned char *myDataIP;
unsigned char getRequest[30] ;
unsigned char *ptr ; // pointer to the dynamic buffer
unsigned char dyna[30] ; // pointer to the dynamic buffer

unsigned int SPI_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength)
{
return 0 ; // return to the library with the number of bytes to transmit
}

unsigned int SPI_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength)
{
unsigned int len = 0;
unsigned short data;
unsigned int i=0,j=3 ;
unsigned short checksum =0 ;

len = reqLength;

while(reqLength--)
{
if ((dyna[0] =='O') & (dyna[1] =='K'))
{
dyna[2] =(0x20);
dyna[3] =(0x20);
ptr = dyna ;
while(*ptr) Spi_Ethernet_putByte(*ptr++) ;
}
if ((dyna[0] =='N') & (dyna[1] =='O'))
{
dyna[2] =(0x20);
dyna[3] =(0x20);
ptr = dyna ;
while(*ptr) Spi_Ethernet_putByte(*ptr++) ;
}

getRequest[i] = Spi_Ethernet_getByte() ;
// Usart_Write(getRequest[i]);
if (i>1)
{
checksum = checksum ^ getRequest[i] ;
}
i=i+1;
if ((getRequest[0] == 0x5) & (i==len))
{

EEprom_Write(0x40,getRequest[1]);
EEprom_Write(0x41,getRequest[2]);
EEprom_Write(0x42,getRequest[3]);
EEprom_Write(0x43,getRequest[4]);
dyna [0] = 'O';
dyna [1] = 'K';
}

else if ((checksum == getRequest[1]) & (i==len) )

{
for (j = 2; j < len ; j++) Usart_Write(getRequest[j]);
dyna [0] = 'O';
dyna [1] = 'K';

}
else
{
dyna [0] = 'N';
dyna [1] = 'O';
}
PORTB=LEN;
}

return (len); // back to the library with the length of the UDP reply
}

/*
* main entry
*/
void main()
{
ADCON1 |= 0x0F ; // turn off ADC convertors
CMCON |= 0x07 ; // turn off comparators

PORTB=0;
TRISB=0;
PORTD=0xFF;
TRISD=0;

Usart_Init(9600);
Delay_100ms();

if (Button(&PORTD, 0, 1, 0))
{
EEprom_Write(0x40,10);
EEprom_Write(0x41,20);
EEprom_Write(0x42,215);
EEprom_Write(0x43,99);
}

delay_ms(500);
myIpAddr[0] = Eeprom_Read(0x40);
myIpAddr[1] = Eeprom_Read(0x41);
myIpAddr[2] = Eeprom_Read(0x42);
myIpAddr[3] = Eeprom_Read(0x43);
PORTB=Eeprom_Read(0x43);

Spi_Init();
SPI_Ethernet_Init(&PORTC, 0, &PORTC, 1, myMacAddr, myIpAddr, SPI_Ethernet_FULLDUPLEX) ;
do {

Spi_Ethernet_doPacket() ; // process incoming Ethernet packets

} while(1);
}

*********************
Luu Y dia chi IP cua may:
IP: 10.20.202.254 (theo Sever, kg thay doi dc)
Sub net mask: 255.255.255.0
Default gateway: 10.20.202.1

Mình đang thắc mắc liệu nó có thuộc 1 trong 2 lỗi sau:
- Chưa đặt Subnet mask cho chuong trinh PIC nen no kg ket noi voi PC dc
- Cac dia chi MAC cua cac LAN nay deu giong het nhu nhau (0x00, 0x14, 0xA5, 0x76, 0x20, 0x3F), kg biet co bi anh huong gi kg!!
MUON VAN BIET ON DA DOC BAI DAI THE NAY!
nhphuduc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 08:52 PM.


Đượ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