njt
njt

Reputation: 521

Arduino in pure C

I've attempted this myself by compiling the Arduino libraries into their own standalone library and linking to a project in Eclipse, but have had a couple of issues along the way.

Is there a decent guide on how to get this up and running? I've been hard pressed to find one online that actually works... The arduino.cc guide has a couple of flaws in, and troubleshooting drove me insane.

I'm on Mac OS X 10.5 with an Uno board.

Edit: Might be worth noting that most Arduino C guides don't specify the baud rate necessary, just the MCLK frequency (16 MHz). Make sure you've changed this or AVRDude won't understand how to flash your IC.

Upvotes: 6

Views: 2385

Answers (2)

rjha94
rjha94

Reputation: 4318

Arduino will not work in pure C setup as it requires a C++ compiler. However if you want to include arduino core and other libraries inside your project then read on. Here we can see how to use Arduino Ethernet Library with our code.

STEP BY STEP GUIDE

  1. Get Arduino cores and variants/ files.
  2. Get relevant library, e.g. Arduino Ethernet library
  3. The directory structure is

    • /
      • lib/arduino/cores
      • lib/arduino/variants//pins_arduino.h
      • lib/arduino/makefile
      • lib/arduino/build
      • lib/
  4. The sample make file can be downloaded from: https://gist.github.com/rjha/b7cda6312552c3e15486

  5. First create Arduino core as a static library. To do so:

    • $cd to lib/arduino folder
    • $ make clean
    • $ make lib
  6. This will create lib/arduino/build/libarduino.a static library file.

  7. Next we goto main project Makefile. There we can define any Arduino library,e.g. Arduino SPI or Arduino Ethernet as a make target that compiles against Arduino core library.

  8. Inside our own make target, we can include Arduino Target that in turns include Arduino core.

For (7) and (8) example, see this gist

https://gist.github.com/rjha/e7b123d3dc4346b5830c

(9) when creating Hex and general linking, link using -larduino and keep the libarduino.a in the search PATH. @see above Gist for an example.

(10) Using this structure you can use any Arduino libraries inside your own code.

Most of the Arduino libraries are a mess dependencies wise and the code quality is also poor. The only benefit is that you can get some ready made libraries to link against your code.

Upvotes: 0

Matthew Murdoch
Matthew Murdoch

Reputation: 31463

Other people have had some success using the guide Using Eclipse with Arduino Duemilanove.

Upvotes: 4

Related Questions