Programming in C

Right through from my childhood, my introductions & interests in engineering and concequently my education up until this point have all been in a mechanical discipline.

I'm in my final year of my Bachelors in an Automotive Mechanical degree right now actually - but over the last two and half years, my work has all been data & engine control engineering in motorsport with both a winning British GT team & BTCC team, and truthfully - my interests in a mechanical career are fading somewhat whilst an electronics career is looking ever more appealing.

I'm working as we speak on the hardware for a 2 cylinder ECU based around a 1284P, that supports dual wideband lambda, dual thermocouples, fly by wire throttle, extensive GP I/O, inductive & smart coil drive, saturated and peak & hold injector drive, USB - Serial etc... Most of the hardware knowledge has come from work, but as a personal project - I'm looking to first run a 2 cylinder generator as the test bed (by the time I get to the stage of working code I'll have left uni and won't have access to small dynos anymore) before running a 2 cylinder or twin engined kart with it, incorporating traction control, multi-mapping etc. Future hardware plans include comms protocols such as CAN etc.

Most of my work on clients vehicles has been with Pectel ECUs, second only to the likes of McLaren's TAG ECUs - so have extensive knowledge of how specific strategies are implemented for real world motorsport use, but am now incredibly interested in actually developing the code behind such strategies - as every now and then, would have liked the option of a somewhat different approach with a specific strategy, certainly for transient conditions.

Apologies for the life story, but hopefully it'll allow a better understanding of what I'm trying to learn for future use.

For a successful career in embedded programming, you need two things:

  1. a good understanding of C: structure and write bug-free code;
  2. ability to read and understand datasheets: 90% of programming a mcu is to operate those registers.

The stock C-functions are not that helpful.

When you say C: structure, are you referring to the structure of a typical C: drive on a PC? The colon makes me think so.