Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2019-06

ENC28J60 Ethernet Controller AVR/ARM Driver

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Dimitrios Chr. Ioannidis

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 theavrxmega3 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, isthe "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

Reply by email