[fpc-pascal] ENC28J60 Ethernet Controller AVR/ARM Driver
Dimitrios Chr. Ioannidis
d.ioannidis at nephelae.eu
Sat Jun 1 15:37:38 CEST 2019
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20190601/876c884c/attachment.html>
More information about the fpc-pascal
mailing list