ETHERNET LIBRARY WITH WEB SERVER EXAMPLE FOR PIC18F97J60 FAM

General discussion on mikroPascal.
Author
Message
yo2lio
Posts: 1878
Joined: 19 Sep 2006 12:57
Location: Romania, Arad City
Contact:

#16 Post by yo2lio » 13 Sep 2007 08:47

For me , Ethernet library with ENC28J60 is a CLOSE CHAPTER.

Only MCU with inside ethernet ( PIC18F97J60 family ).

Bruno has created a new library for ENC28J60, that i think will make public soon.
Best regards, Florin Andrei Medrea.

http://www.microelemente.ro/
http://www.microelemente.ro/produse-si-servicii/
http://www.microelemente.ro/custom-software/

mail : florin@microelemente.ro

Donald Shimoda
Posts: 553
Joined: 27 Feb 2006 17:00
Location: Argentina
Contact:

#17 Post by Donald Shimoda » 13 Sep 2007 14:31

yo2lio wrote:For me , Ethernet library with ENC28J60 is a CLOSE CHAPTER.

Only MCU with inside ethernet ( PIC18F97J60 family ).

Bruno has created a new library for ENC28J60, that i think will make public soon.
I undesrtand , and will be for me in a future, but have many boards in the field needing update.

I have trouble with my libraries (anton and me) i think you see that ones and start your work from there. The point is in VISTA the board cannot get pings from PC, get one then nothing. And using wireashark i see the board is not asking for ARP messages (even dont receive that messsages, but i see like the pc is sending that).

Im lost, so i wanna try with another ENC lib to see if my library is the fault.

The mikroe library is incomplete.

TIA

Donald
Donald Shimoda.

bruno
Posts: 767
Joined: 10 Sep 2005 02:10
Location: Lyon, France
Contact:

#18 Post by bruno » 13 Sep 2007 15:39

Donald, ipV6 is set by default on Vista :
since ENC28J60 library is ipV4 only, you have to manually change your settings on your Vista PC to accept ipV4.
Bruno
Bored with 7-segment ? Try the [url=http://www.micro-examples.com/public/microex-navig/doc/079-touchclock.html]TouchClock[/url]

Donald Shimoda
Posts: 553
Joined: 27 Feb 2006 17:00
Location: Argentina
Contact:

#19 Post by Donald Shimoda » 14 Sep 2007 00:23

bruno wrote:Donald, ipV6 is set by default on Vista :
since ENC28J60 library is ipV4 only, you have to manually change your settings on your Vista PC to accept ipV4.
Hi Bruno.
Do you use Vista? I use it and im think you are wrong. I use IPV4 in Vista and dont have to touch nothing to get it working.By example I can ping any other pc using V4 IPs, acces internet, etc.

Why do you think IP V6 is the default?

And BTW, i already disabled IPV6 and still dont work.

Can you please send me a example to try to make my board ask a ping?

I use two port, one for CS and other for reset, and dont use interrupt, for that reason i cannot use the library of yolio.
Donald Shimoda.

bruno
Posts: 767
Joined: 10 Sep 2005 02:10
Location: Lyon, France
Contact:

#20 Post by bruno » 14 Sep 2007 10:51

Donald Shimoda wrote:
bruno wrote:Donald, ipV6 is set by default on Vista :
since ENC28J60 library is ipV4 only, you have to manually change your settings on your Vista PC to accept ipV4.
Hi Bruno.
Do you use Vista? I use it and im think you are wrong. I use IPV4 in Vista and dont have to touch nothing to get it working.By example I can ping any other pc using V4 IPs, acces internet, etc.

Why do you think IP V6 is the default?

And BTW, i already disabled IPV6 and still dont work.
I had to add IPV4 to earlier client's Vista PCs, I don't think they disabled it by their own :?
:idea: Try to connect your board directly to your PC (no switch, no router, no other ethernet device) with an ethernet crossed cable, and check also if your PC ethernet card is configured to accept 10Mbs.
Can you please send me a example to try to make my board ask a ping?

I use two port, one for CS and other for reset, and dont use interrupt, for that reason i cannot use the library of yolio.
You can find on my web site an exemple that makes an ARP request with the current mikroE library release :
http://www.micro-examples.com/public/mi ... y.html#a16
hope this will help :wink:
Bruno
Bored with 7-segment ? Try the [url=http://www.micro-examples.com/public/microex-navig/doc/079-touchclock.html]TouchClock[/url]

Donald Shimoda
Posts: 553
Joined: 27 Feb 2006 17:00
Location: Argentina
Contact:

#21 Post by Donald Shimoda » 14 Sep 2007 12:33

bruno wrote: I had to add IPV4 to earlier client's Vista PCs, I don't think they disabled it by their own :?
Maybe because was a earlier version? Mine comes with V4 enabled out of the box, plug and work, at the first time.
bruno wrote: :idea: Try to connect your board directly to your PC (no switch, no router, no other ethernet device) with an ethernet crossed cable, and check also if your PC ethernet card is configured to accept 10Mbs.
All my test was witouth router, direct cable.
bruno wrote: You can find on my web site an exemple that makes an ARP request with the current mikroE library release :
http://www.micro-examples.com/public/mi ... y.html#a16
hope this will help :wink:
Ok, i will try, thanks!
Donald Shimoda.

yo2lio
Posts: 1878
Joined: 19 Sep 2006 12:57
Location: Romania, Arad City
Contact:

#22 Post by yo2lio » 24 Oct 2007 20:00

Hi,

Ethernet lib file V 3.2 MCU family PIC18F97J60 , recompiled with MikroPascal 7.0
http://www.microelemente.ro/Eth_V3_2_lib_MP7_files.zip
Best regards, Florin Andrei Medrea.

http://www.microelemente.ro/
http://www.microelemente.ro/produse-si-servicii/
http://www.microelemente.ro/custom-software/

mail : florin@microelemente.ro

yo2lio
Posts: 1878
Joined: 19 Sep 2006 12:57
Location: Romania, Arad City
Contact:

#23 Post by yo2lio » 12 Nov 2007 22:45

Ethernet Library V3.3 is ready. :D

Added few new functions for copy from Ethernet memory to MCU memory and copy from MCU memory (RAM and FLASH) to Ethernet memory.

Also implemented NTP and DNS.

Now you can get the clock and date from internet and ip address for specified domain.

Ex : Dns_query('www.mikroelektronika.com'); return in resp_ip_address, ip for this domain.

This library have RTC which is updated by NTP service if this service is available.
This RTC is available in RFC(NTP) format or in UNIX format.
Also you have routine to transform this time in string format : year, month, day, ... etc.

Library will be available in few days, now I work at examples.

About examples I have Ethernet to Serial Converter examples !! :wink:

About ENC28J60 , I decide to rewrite this library also for ENC28J60. I don't know when, but I think this will happened this year.
Best regards, Florin Andrei Medrea.

http://www.microelemente.ro/
http://www.microelemente.ro/produse-si-servicii/
http://www.microelemente.ro/custom-software/

mail : florin@microelemente.ro

guyfoc
Posts: 297
Joined: 09 Sep 2005 11:34
Location: belgium

#24 Post by guyfoc » 13 Nov 2007 12:52

very good idee for enc28j60
do not forget good exemples for null s like me ... :D
and sometimes comments for beginner s in ethernet and internet...
good job tks again :D
things we are knowing are always easy

radiofm
Posts: 51
Joined: 22 Oct 2005 17:35
Location: Poznan, Poland

#25 Post by radiofm » 13 Nov 2007 13:02

why i don't use mikroPascal but only mikroC :cry: :cry:
yo2lio - good job. maybe someone can a write this ethernet library to mikroC :)
regards

Robert

yo2lio
Posts: 1878
Joined: 19 Sep 2006 12:57
Location: Romania, Arad City
Contact:

#26 Post by yo2lio » 13 Nov 2007 13:11

In MikroC you have Bruno library !

I put my library directly on the forum.

Bruno send library to ME team and ME team put library in Compiler examples .... This process is not very fast !
Best regards, Florin Andrei Medrea.

http://www.microelemente.ro/
http://www.microelemente.ro/produse-si-servicii/
http://www.microelemente.ro/custom-software/

mail : florin@microelemente.ro

radiofm
Posts: 51
Joined: 22 Oct 2005 17:35
Location: Poznan, Poland

#27 Post by radiofm » 13 Nov 2007 13:23

yes i know :)

i only waiting for library to with ehernet (67j60 , 97j60 and etc.)
i have a board but without software i do nothig :)
and you can set in this lib - mask and gateway.

but ok - i waiting
:D

yo2lio
Posts: 1878
Joined: 19 Sep 2006 12:57
Location: Romania, Arad City
Contact:

#28 Post by yo2lio » 26 Nov 2007 21:18

This library (ethernet part) is full source code :!:
Aditional String Library is not open source.

You find ethernet source code in Eth_V3_3_lib folder.

Code: Select all

{Ethernet library V3.3 and example for LV18FJ board.
 
 ARP, ICMP, UDP, NTP, TCP, HTTP

 Author of this project : Florin Andrei Medrea
 Copyright (c) 2007 - YO2LIO - All Rights Reserved
 24-Nov-2007
 
User Functions and Procedures:

 Available types :
   IpHeader : array[4] of byte;
   MacHeader : array[6] of byte;
   
(AddrPacket is address of received packet, TXSTART is start address of transmited packet)

- Procedure Eth_SetParameters;
  // Set your IP, Mac, Mask, Gateway ... etc... here.
  // Str2Ip('192.193.194.14',eth_ip_addr);
  // Str2Ip('85.120.220.254',eth_ntp_addr);
  // Str2Ip('192.193.194.1',eth_gateway);
  // Str2Ip('255.255.255.0',eth_mask);
  // Str2Mac('0004A300809A',eth_mac);
  // Str2Ip('192.193.194.4',user_ip_addr);
  // eth_port := 10001;
  // dest_port := 10001;

- Procedure Eth_Init;
  // Init MCU Ethernet.

- Procedure Eth_Reset;
  // Reset MCU Ethernet.

- Procedure Eth_DoPacket;
  // Process incoming packets.

- Function Eth_UserTCP(var dest_ip_addr_T : IpHeader; var source_port_T, dest_port_T, len_T : word) : word;
  // This function is called by library. Put your TCP response for WEB server parameters here. See example.

- Function Eth_UserUDP(var dest_ip_addr_U : IpHeader; var dest_port_U, source_port_U, len_U : word) : word;
  // This function is called by library. Put your UDP response here. See example. ( ECHO example )

- Function CopyFlashToEthMem_CP(start_Flash_address : longint): word;
  // Copy Const from flash to Eth Memory and return length of Const data.
  // Const data must be defined as STRING. (and must be zero terminated)
  // Ex. len := CopyFlashToEthMem_CP(@httpHeader);

- Function Eth_SendARP(var ip_dest : IpHeader) : Boolean;
  // Get ARP request. Return True if Mac exist.
  // Return dest. mac address in var dest_mac : MacHeader;.
  // Return dest. ip address in var dest_ip_addr : IpHeader;.
  // Ex. bol := Eth_SendARP(user_ip_addr);
  // First function search in ArpCache (size of 9) ...

- Procedure SendUDP(dest_port_S, source_port_S, len_data : word; var data_udp : array[1472] of byte);
  // Send UDP mesage. Max 1472 bytes.
  // Ex. If Eth_SendARP(user_ip_addr) then SendUDP(dest_port, eth_port, 10, 'Test Test ');

- Procedure Eth_SendPing(SlotState : boolean; PingSlot : Byte);
  // Have 8 Slots available 0 .. 7 and PingCache size of 8.
  // Ex. Eth_SendPing(Eth_SendARP(user_ip_addr),0); Send Ping at user_ip_addr and put result in Slot 0.
  // PingCache format :
  // PingCache[Slot].IpP : IpHeader;
  // PingCache[Slot].MacP : MacHeader;
  // PingCache[Slot].Time : word;
  // PingCache[Slot].TTL : byte.

- Function Send_Ping(var ip_address : IpHeader) : word;
  // Send ping at specified ip_address and return response time.
  // Ex. PingTimeResponse := Send_Ping(user_ip_address);

- Function Send_UDP(var ip_address : IpHeader; dest_port_S, source_port_S, len_data : word; var data_udp : array[1472] of byte) : boolean;
  // Send UDP mesage, max 1472 bytes, at specified ip_address and return true if success.
  // Ex. Success := Send_UDP(user_ip_addr, 10001, 9999, 10, 'data data ');

- Function Send_ARP(var ip_address : IpHeader; var mac_address : MacHeader) : boolean;
  // Get MAC for specified ip_address, put result in mac_address variable and return true if success.
  // Ex. Success := Send_ARP(user_ip_addr,reply_mac_addr);

- Procedure Firewall(ICMP, TCP, UDP : boolean);
  // Default all false, allow all type of packets.
  // If ICMP = true, ignore ICMP request. Ex. Firewall(true, false, false);
  // If TCP = true, ignore TCP packets. Ex. Firewall(false, true, false);
  // If UDP = true, ignore UDP packets. Ex. Firewall(false, false, true);
  
- Function Ntp_query : Boolean;
  // Syncronize time.
  // Ntp address must me stored in eth_ntp_addr (see Eth_SetParameters)
  // If syncronization was successfully Ntp_sync flag will be true.

- Procedure Get_Time;
  // Transform NTP time in day/month/year ...
  // Data will be stored in :
  // TTime.Rfc   = Time in RFC format
  // TTime.Unix  = Time in UNIX format
  // TTime.Year  = Year (ex. 2007)
  // TTime.Month = Month (ex. 07)
  // TTime.Day   = Day (ex. 31)
  // TTime.Hour  = Hour(ex. 12)
  // TTime.Min   = Min (ex. 59)
  // TTime.Sec   = Sec (ex. 32)
  // TTime.Str   = String format max. 32 ('2007-11-24 14:25:00')
  
- Procedure Eth_PutByte(value : byte);
  // Put one byte in ETH memory.

- Function Eth_GetByte : byte;
  // Get one byte from ETH memory.

- Procedure CopyEthMemToRam(start_eth_address, dest_ram_address, length_w : word);
  // Ex. CopyEthMemToRam(AddrPacket+6,@dest_mac_addr,6);

- Procedure CopyEthMemToRam_Inv(start_eth_address, dest_ram_address, length_w : word);
  // Ex. CopyEthMemToRam(AddrPacket+6,@data_dWord,4);
  
- Procedure CopyEthMemToEthMem(start_eth_address, dest_eth_address, length_w : word; where : byte);
  // where = 0 copy from Eth RxBuf to Eth TxBuf
  // where = 1 copy from Eth TxBuf to Eth TxBuf
  // Ex. CopyEthMemToEthMem(AddrPacket+38,TXSTART+28,4,0);
  
- Procedure CopyRamToEthMem(start_ram_address, dest_eth_address, length_w : word);
  // Ex. CopyRamToEthMem(@eth_mac,TXSTART+22,6);

- Procedure CopyRamToEthMem_Inv(start_ram_address, dest_eth_address, length_w : word);
  // Ex. CopyRamToEthMem(@data_dWord,TXSTART+22,4);
  
- Procedure CopyRamToEthMem_CP(start_ram_address, length_w : word);
  // Copy var data to Eth Memory.
  // Ex. CopyRamToEthMem_CP(@data,46);
  
- Procedure CopyRamToEthMem_CP_Inv(start_ram_address, length_w : word);
  // Ex. CopyRamToEthMem_CP(@data_dWord,4);
  
- Function CopyRamStringToEthMem_CP(var s : string[255]): word;
  // Copy var data to Eth Memory and return length of var data.
  // Var data must be defined as String. (must be zero terminated)
  // Ex. len := CopyRamStringToEthMem_CP('data data data');
  
- Procedure CopyFlashToEthMem(start_Flash_address : longint; dest_eth_address, length_w : word);
  // Ex. CopyFlashToEthMem(@httpHeader,TXSTART+54,30);

- Procedure CopyFlashToEthMem_CP(start_Flash_address : longint; length_w : word);
  // Ex. CopyFlashToEthMem(@httpHeader,30);

- Function CopyFlashStringToEthMem(start_Flash_address : longint; dest_eth_address : word): word;
  // Copy Const from flash to Eth Memory and return length of Const data.
  // Const data must be defined as STRING. (must be zero terminated)
  // Ex. len := CopyFlashToEthMem_CP(@httpHeader,TXSTART+54);
  
- Function CopyFlashStringToEthMem_CP(start_Flash_address : longint): word;
  // Copy Const from flash to Eth Memory and return length of Const data.
  // Const data must be defined as STRING. (must be zero terminated)
  // Ex. len := CopyFlashToEthMem_CP(@httpHeader);
  
- Procedure WriteToEthMem(dest_eth_address : word; value : byte);
  // Ex. WriteToEthMem(TXSTART+12,$08);

- Function ReadFromEthMem(start_eth_address : word) : byte;
  // Ex. data := ReadFromEthMem(AddrPacket+38);

- Function EthMemCompareWithRam(start_eth_address, start_ram_address, length_w : word) : boolean;
  // Ex. bol := EthMemCompareWithRam(AddrPacket+30,@eth_ip_addr,4);

- Function EthMemCompareWithFlash(start_eth_address : word; start_Flash_address : longint; length_w : word) : boolean;
  // Ex. bol := EthMemCompareWithFlash(AddrPacket+54, @httpHeader, 30);
}

{ Aditional String Library

- procedure mem_Set(addr : word; chr : char; n: word);

- procedure mem_Cpy(addr1,addr2,n : word);

- procedure mem_Move(addr1,addr2,n : word);

- function mem_Cmp(addr1,addr2,n : word): integer;

- function mem_Chr(addr:word; chr : char; n : word) : word;

- function Str_Len(var data_Str : string[4095]) : word;

- procedure Str_Cat(var data_Str1,data_Str2 : string[4095]);

- procedure Str_AppendSuf(var data_Str:string[4095]; chr  :char);

- procedure Str_AppendPre(var data_Str : string[4095]; chr : char);

- procedure Str_Cpy(var data_Str1,data_Str2 : string[4095]);

- procedure Str_CutChr(var idata_Str : string[4095]; chr : byte);

- function Str_Chr(var data_Str : string[4095]; chr : char) : word;

- procedure Str_ReplChr(var data_Str : string[4095]; chr1,chr2 : char);

- function Str_Cmp(var data_Str1,data_Str2 : string[255]) : integer;

- Procedure Byte2StrWithZeros(data_in : byte; var data_Str : String[3]);
  // Convert byte value to String[3].
  // Ex. Byte2StrWithZeros(10, data1); // data1 will be '010'

- Procedure Byte2Str(data_in : byte; var data_Str : String[3]);
  // Convert byte value to String, lenght of String is variable from 1 to 3.
  // Ex. Byte2Str(10, data1); // data1 will be '10'

- Procedure Short2StrWithZeros(data_in : short; var data_Str : String[4]);
  // Convert short value to String[4].
  // Ex. Short2StrWithZeros(-10, data1); // data1 will be '-010'

- Procedure Short2Str(data_in : short; var data_Str : String[4]);
  // Convert short value to String, lenght of String is variable from 1 to 4.
  // Ex. Short2Str(-10, data1); // data1 will be '-10'

- Procedure Word2StrWithZeros(data_in : word; var data_Str : String[5]);
  // Convert word value to String[5].
  // Ex. Word2StrWithZeros(645, data1); // data1 will be '00645'

- Procedure Word2Str(data_in : word; var data_Str : String[5]);
  // Convert word value to String, lenght of String is variable from 1 to 5.
  // Ex. Word2Str(645, data1); // data1 will be '645'

- Procedure Int2StrWithZeros(data_in : integer; var data_Str : String[6]);
  // Convert integer value to String[6].
  // Ex. Int2StrWithZeros(-645, data1); // data1 will be '-00645'

- Procedure Int2Str(data_in : integer; var data_Str : String[6]);
  // Convert integer value to String, lenght of String is variable from 1 to 6.
  // Ex. Int2Str(-645, data1); // data1 will be '-645'

- Procedure dWord2StrWithZeros(data_in : dWord; var data_Str : String[10]);
  // Convert dWord value to String[10].
  // Ex. dWord2StrWithZeros(11645, data1); // data1 will be '0000011645'

- Procedure dWord2Str(data_in : dWord; var data_Str : String[10]);
  // Convert dWord value to String, lenght of String is variable from 1 to 10.
  // Ex. dWord2Str(11645, data1); // data1 will be '11645'

- Procedure Long2StrWithZeros(data_in : longint; var data_Str : String[11]);
  // Convert longint value to String[11].
  // Ex. Long2StrWithZeros(-11645, data1); // data1 will be '-0000011645'

- Procedure Long2Str(data_in : longint; var data_Str : String[10]);
  // Convert longint value to String, lenght of String is variable from 1 to 11.
  // Ex. Long2Str(-11645, data1); // data1 will be '-11645'

- Procedure Float2Str(data_in : Real; var data_Str : String[17]; digits : byte);
  // Convert Real value to String, lenght of String is variable from 1 to 17.
  // Ex. Float2Str(-116.12345, data1, 0); // data1 will be '-116'
  // Ex. Float2Str(-116.12345, data1, 3); // data1 will be '-116.123'
  // Ex. Float2Str(-116.12345, data1, 5); // data1 will be '-116.12345'

- Procedure Byte2Hex(data_hex : byte; var hex : String[2]);
  //Convert Byte to Hex
  //Ex. Byte2Hex(255,data_out);

- Function Hex2Byte(var hex : String[2]) : byte;
  //Convert Hex String format (must be String[2]) into Byte
  //Ex. res_8 := Hex2Byte('AA');

- Function Str2Byte(var byte_in : String[3]) : byte;
  //Convert Byte String format (must be String[1] to String[3]) into Byte
  //Ex. res_8 := Str2Byte('6');
  //Ex. res_8 := Str2Byte('66');
  //Ex. res_8 := Str2Byte(' 66');
  //Ex. res_8 := Str2Byte('  6');

- Function Str2Word(var word_in : String[5]) : word;
  //Convert Word String format (must be String[1] to String[5]) into Word
  //Ex. res_16 := Str2Word('9');
  //Ex. res_16 := Str2Word(' 669');
  //Ex. res_16 := Str2Word('96');
  //Ex. res_16 := Str2Word('  669');

- Function Str2dWord(var byte_in : String[10]) : dWord;
  //Convert dWord String format (must be String[1] to String[10]) into dWord
  //Ex. res_32 := Str2dWord('1234567890');

- Function Str2Short(var byte_in : String[4]) : short;
  //Convert Short String format (must be String[1] to String[4]) into short
  //Ex. res_8s := Str2Short('-6');

- Function Str2Int(var word_in : String[6]) : integer;
  //Convert Word String format (must be String[1] to String[6]) into integer
  //Ex. res_16s := Str2Int('-12345');

- Function Str2Long(var byte_in : String[11]) : Longint;
  //Convert Longint String format (must be String[1] to String[11]) into Longint
  //Ex. res_32s := Str2dLong('-1234567890');

- Function Str2Float(var byte_in : String[17]) : real;
  //Convert Float String format (must be String[1] to String[17]) into Float,  sign + 10bytes + '.' + 5 bytes
  //Ex. res_float := Str2Float('-123.12345');

- Procedure IP2Str(var user_IPaddr : array[4] of byte; var Str_out : String[15]);
  //Convert IP ( array[4] of byte ) into String. Lenght of String is variable from 7 to 15.
  //Ex. IP2Str(IP_address,data_out);

- Procedure MAC2Str(var MAC_address : array[6] of byte; var Str_out : String[12]);
  //Convert MAC ( array[6] of byte ) into String[12].
  //Ex. MAC2Str(MAC_address, data_out);

- Procedure Str2IP(var Str_in : String[15]; var user_IPaddr : array[4] of byte);
  //Convert String (lenght of String must be from 7 to 15 and must include 3 '.') to array[4] of byte
  //Ex. Str2IP('192.168.1.155', IP_address);

- Procedure Str2MAC(var Str_in : String[12]; var MAC_address : array[6] of byte);
  //Convert String (lenght of String must be 12) to array[6] of byte
  //Ex. Str2MAC('00AA80FF457F', MAC_address);

- Function Bcd2Dec(number : byte) : byte;

- Function Bcd2Dec16(number : word) : word;

- Function Dec2Bcd(number : byte) : byte;

- Function Dec2Bcd16(number : word) : word;
}
You can download library from : http://www.microelemente.ro/MikroPascal ... amples.zip

Unfortunately DNS not work yet !!! Sorry !
Last edited by yo2lio on 27 Jan 2008 21:24, edited 1 time in total.
Best regards, Florin Andrei Medrea.

http://www.microelemente.ro/
http://www.microelemente.ro/produse-si-servicii/
http://www.microelemente.ro/custom-software/

mail : florin@microelemente.ro

kayh
Posts: 63
Joined: 22 Apr 2005 03:12

#29 Post by kayh » 12 Jan 2008 20:44

yo2lio wrote: About ENC28J60 , I decide to rewrite this library also for ENC28J60. I don't know when, but I think this will happened this year.
I would love to see that, but even more with dspic family.

yo2lio
Posts: 1878
Joined: 19 Sep 2006 12:57
Location: Romania, Arad City
Contact:

#30 Post by yo2lio » 12 Jan 2008 21:10

Will be for DSPIC family.

Unfortunately I have a lots of projects in work and switch from one project to another ...
Best regards, Florin Andrei Medrea.

http://www.microelemente.ro/
http://www.microelemente.ro/produse-si-servicii/
http://www.microelemente.ro/custom-software/

mail : florin@microelemente.ro

Post Reply

Return to “mikroPascal General”