ENC28J60 Ethernet Controller AVR/ARM Driver

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

ENC28J60 Ethernet Controller AVR/ARM Driver

Free Pascal - General mailing list

Hi,

  I started to write a driver ( https://github.com/dioannidis/fp_ethernet_enc28j60.git ) for this chip ( ENC28J60 Ethernet Controller ) first for the AVR platform, ( heavily inspired from the UIPEthernet library ( https://github.com/UIPEthernet/UIPEthernet.git )) and I want to ask the community, of course, is there anyone that already done it ?

  My goal is to made the free pascal users able to use a very low cost solution Arduino Nano / UNO  development board with a ENC28J60 module for a little IoT ( and not only ) fun, learning e.t.c. ...

  I managed to configure the chip and the driver receives packets ( broadcast packets configured to allow only ARP ).

  Now, because I'm not embedded developer I'm thinking that I would need help / advices to take some decisions so here I am.

  First and more important, in the new FPC version, will the AVR platform review / resolve the following issues :

    "AVR - incorrect stack error checking" (https://bugs.freepascal.org/view.php?id=35332)
    "AVR - Assembler routines for 8, 16 & 32 bit unsigned div (code contribution)" ( https://bugs.freepascal.org/view.php?id=32103 )
    "AVR - invalid address used when evaluating a variable in gdb" ( https://bugs.freepascal.org/view.php?id=33914 )
    "AVR - Incorrect SPI clock rate bit constant names in some microcontroller units" ( https://bugs.freepascal.org/view.php?id=32339 )
    and add support for the avrxmega3 subarch, atmega 3208, 3209, 4808, 4809 ( from Christo Crause's repository https://github.com/ccrause/freepascal.git ) ?

  Except from Laksen's ethernet stack ( https://github.com/Laksen/fp-ethernet.git ) is there other, more lightweight, ethernet stack library written in Object Pascal ?

  As I'm not a compiler guy, is the "volatile" intrinsic supported in AVR platform ( I didn't find it in intrinsics unit ) ?

  In FPC embedded world/platforms, is the Object approach more SRAM hungry ( my tests are inconclusive ) from the procedure / function approach ?

  What's more embedded "friendly" ?

this :

interface

type
  TUART = Object
  private
    FBaudRate: DWord;
    function Divider: Integer;
  public
    procedure Init(const ABaudRate: DWord = 57600);
    procedure SendChar(c: char);
    function ReadChar: char;
    procedure SendString(s: ShortString);
    procedure SendStringLn(s: ShortString = '');
  end;

or this :

interface

  var
    FBaudRate: DWord;
    function Divider: Integer;
    procedure Init(const ABaudRate: DWord = 57600);
    procedure SendChar(c: char);
    function ReadChar: char;
    procedure SendString(s: ShortString);

    procedure SendStringLn(s: ShortString = '');


And of course anyone who wants to help is welcome .

regards,

--

Dimitrios Chr. Ioannidis


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal