Page 1 of 1

Ethernet picplc16b 16f887 problem

Posted: 18 Jan 2010 22:48
by gluvce
I convert the code that work from mikroC to mikroC PRO but now PING program don't work.
Please help me.

Here is original mikroC code

Code: Select all

// duplex config flags
#define SPI_Ethernet_HALFDUPLEX     0
#define SPI_Ethernet_FULLDUPLEX     1
unsigned int    SPI_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort,
                                 unsigned int localPort, unsigned int reqLength)
                {
                  return 0;
                }                                
unsigned int    SPI_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort,
                                 unsigned int destPort, unsigned int reqLength)
                {
                  return 0;
                }
/***********************************
 * RAM variables
 */
unsigned char   myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} ;   // set MAC address
unsigned char   myIpAddr[4] = {192, 168, 1, 60} ;                      // set IP address
/*
 * main entry
 */
void main()
  {
    ANSEL = 0x0C ;
    ANSELH = 0;
    Spi_Init();
    SPI_Ethernet_Init(&PORTE, 1, &PORTE, 0, myMacAddr, myIpAddr, SPI_Ethernet_FULLDUPLEX) ;

    while(1)                             // endless loop
            {
            SPI_Ethernet_doPacket() ;    // process incoming Ethernet packets
            }
}


And here is the converted mikroC PRO code:

Code: Select all

// duplex config flags
#define Spi_Ethernet_HALFDUPLEX     0  // half duplex
#define Spi_Ethernet_FULLDUPLEX     1  // full duplex
unsigned int    SPI_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength)
{
         return 0;
}
unsigned int    SPI_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength)
{
         return 0;
}
/***********************************
 * RAM variables
 */
unsigned char   myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} ;   // my MAC address
unsigned char   myIpAddr[4]  = {192, 168, 1, 60} ;                     // my IP address
// mE ehternet NIC pinout
sfr sbit SPI_Ethernet_Rst at RE1_bit;
sfr sbit SPI_Ethernet_CS  at RE0_bit;
sfr sbit SPI_Ethernet_Rst_Direction at TRISE1_bit;
sfr sbit SPI_Ethernet_CS_Direction  at TRISE0_bit;

void main() {
     ANSEL = 0x0C ;
     ANSELH = 0;
     SPI1_Init();
     SPI_Ethernet_Init(myMacAddr, myIpAddr, Spi_Ethernet_FULLDUPLEX) ;
     while(1)                            // do forever
     {
      SPI_Ethernet_doPacket() ;   // process incoming Ethernet packets
     }
}
Where is the error in my code?

Posted: 02 Feb 2010 10:28
by tihomir.losic
Hello Aleksandar,

first of all, please sorry for little delaying with answer.
Here is a code which might help you:

Code: Select all

// duplex config flags
#define Spi_Ethernet_HALFDUPLEX     0x00  // half duplex
#define SPI_Ethernet_FULLDUPLEX     0x01  // full duplex

/***********************************
 * RAM variables
 */
unsigned char   myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} ;   // my MAC address
unsigned char   myIpAddr[4]  = {192, 168, 1, 60} ;                     // my IP address
// mE ehternet NIC pinout
sfr sbit SPI_Ethernet_Rst at RE1_bit;
sfr sbit SPI_Ethernet_CS  at RE0_bit;
sfr sbit SPI_Ethernet_Rst_Direction at TRISE1_bit;
sfr sbit SPI_Ethernet_CS_Direction  at TRISE0_bit;


unsigned int SPI_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength, char *canClose)
{
         return 0;
}
unsigned int SPI_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength)

{
         return 0;
}

void main() {
     ANSEL = 0x0C ;
     ANSELH = 0;
     SPI1_Init();
     SPI_Ethernet_Init(myMacAddr, myIpAddr, SPI_Ethernet_FULLDUPLEX);
     while(1){

      SPI_Ethernet_doPacket();
     }


}
Also, you need to check SPI_Ethernet and C_String libraries in mikroC PRO.

Best regards,

Losic Tihomir