Author Topic: Is coding an Arduino considered real embedded programming?  (Read 19976 times)

0 Members and 1 Guest are viewing this topic.

Offline AQUAMANTopic starter

  • Regular Contributor
  • *
  • Posts: 101
  • Country: gb
Is coding an Arduino considered real embedded programming?
« on: July 14, 2016, 06:52:28 pm »
I need to get a new job

I live in a town where there are loads of jobs available in the Wireless/Telecomms sector
There are loads of jobs for embedded software programming and presumably all the technical jobs in these companies require some ability to program

I have a PhD in Power Electronics

My only experience in programming (and for anything wireless) is using an Arduino to make a remote control helipcopter. I always thought this was never worth mentioning because its an Arduino and I thought it was not real programming.
Other than that I have programmed PICs loads in my teenage years, 1 small robot project with an 8051 at university, and DSPs for controlling a converter including monitoring its behaviour.

I barely have any idea how to start a program but is it worth mentioning in a cover letter for example that I have programmed microcontrollers before? Ill be applying for any job they will give me in these companies.
« Last Edit: July 14, 2016, 06:55:47 pm by AQUAMAN »
 

Offline Len

  • Frequent Contributor
  • **
  • Posts: 547
  • Country: ca
Re: Is coding an Arduino considered real embedded programming?
« Reply #1 on: July 14, 2016, 07:08:25 pm »
It's a program written in C++, if you wrote it then it's programming. (Yes, the "Arduino language" is C++ compiled by the GCC compiler.)

[Edited to add:] You probably want to be careful about claiming that you have a lot of programming experience.

I like to follow Ferguson's Rule of Resumé Writing: "Never claim anything on your resumé that you can't learn in two weeks." :)
« Last Edit: July 14, 2016, 07:10:41 pm by Len »
DIY Eurorack Synth: https://lenp.net/synth/
 

Online metrologist

  • Super Contributor
  • ***
  • Posts: 2212
  • Country: 00
Re: Is coding an Arduino considered real embedded programming?
« Reply #2 on: July 14, 2016, 07:08:42 pm »
I would consider experience programming Arduino's a plus for an entry level position, but I would not consider an electronics related PhD. That Rossman fellow had something to say about that.
 

Offline AQUAMANTopic starter

  • Regular Contributor
  • *
  • Posts: 101
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #3 on: July 14, 2016, 07:20:57 pm »
It's a program written in C++, if you wrote it then it's programming. (Yes, the "Arduino language" is C++ compiled by the GCC compiler.)

[Edited to add:] You probably want to be careful about claiming that you have a lot of programming experience.

I like to follow Ferguson's Rule of Resumé Writing: "Never claim anything on your resumé that you can't learn in two weeks." :)
I will have to learn everything in any job they give me
Im not good at anything really
 

Offline suicidaleggroll

  • Super Contributor
  • ***
  • Posts: 1453
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #4 on: July 14, 2016, 07:28:54 pm »
It is programming, but since all of the "hard" work is done for you, its value towards an embedded career is limited.  For an entry level position, any experience is better than no experience though.

I'd consider it similar to using TI's Webench software to design a DC/DC converter vs actually going out and calculating and selecting all of the components yourself, testing, tuning, etc.  It's certainly a valuable tool and it's great for getting in and out and moving on with the project, but you don't learn a whole lot by using it, and experience with Webench doesn't do much towards a career in power system design.
 
The following users thanked this post: Kilrah

Offline danadak

  • Super Contributor
  • ***
  • Posts: 1875
  • Country: us
  • Reactor Operator SSN-583, Retired EE
Re: Is coding an Arduino considered real embedded programming?
« Reply #5 on: July 14, 2016, 07:36:22 pm »
I am not sure there is any Galactic definition of embedded programming (EP).

But I would think that programming that leads to CPU control, human interface,
and manipulating hardware would be a minimalist definition.

That being said today if a person is writing in C, C++, most of the time, when manipulating
HW, you are making C calls to prewritten f()'s written by chip manufacturer. So learning
curve is frankly nowhere what it was 20 - 30 years ago. Where everything was written by
programmer and often they would do assembly language HW interface programming on
top of any higher level language programming.

Don't put yourself down pal, there is plenty of people around that will try to do that for you.

And welcome to the world of embedded programming, where you can sit in an easy
chair (better if you stand all day) and create solutions that you can also debug and test
that make us all so much more productive. And if you have ADD it allows you to quickly
solve one problem and move onto another. No boredom.

Regards, Dana.
Love Cypress PSOC, ATTiny, Bit Slice, OpAmps, Oscilloscopes, and Analog Gurus like Pease, Miller, Widlar, Dobkin, obsessed with being an engineer
 

Offline AQUAMANTopic starter

  • Regular Contributor
  • *
  • Posts: 101
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #6 on: July 14, 2016, 07:42:39 pm »
Do any of you have any ideas how I can make myself more employable while not being able to advance any of these skills in my current job?
 

Online metrologist

  • Super Contributor
  • ***
  • Posts: 2212
  • Country: 00
Re: Is coding an Arduino considered real embedded programming?
« Reply #7 on: July 14, 2016, 07:53:54 pm »
Do any of you have any ideas how I can make myself more employable while not being able to advance any of these skills in my current job?

school and volunteer work.
 

Offline Kilrah

  • Supporter
  • ****
  • Posts: 1852
  • Country: ch
Re: Is coding an Arduino considered real embedded programming?
« Reply #8 on: July 14, 2016, 08:15:29 pm »
It is programming, but not so much embedded programming... Because on embedded systems the algorithm and actual application is only a part of the job, sometimes even quite minor. A lot of it is understanding the tools and dealing with low level things, drivers, hardware constraints/limitations etc.
As suicidaleggroll says the limitation in frameworks like arduino is that they hide all of that from you so much that you don't even know those important things exist.
 

Offline AQUAMANTopic starter

  • Regular Contributor
  • *
  • Posts: 101
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #9 on: July 14, 2016, 08:17:43 pm »
In the end I havent bothered mentioning it
I will just mention it in the interview if I ever get one

One thing I do know is that every time I have programmed I always start getting it to do the smallest possible thing - like switch an LED on and off and then work gradually in small steps from there.
Don't know if that is how it is done in the real world but that is how I have always done it.

I programmed that Arduino for the remote control and reciever of the Quadrotor in about 10 days - starting from knowing literally nothing and getting the Arduino to print 'Hello world' and then flash an LED. That is how every project has gone for me. I am not sure if this sort of process is acceptable in a real job though
 

Offline Len

  • Frequent Contributor
  • **
  • Posts: 547
  • Country: ca
Re: Is coding an Arduino considered real embedded programming?
« Reply #10 on: July 14, 2016, 08:34:17 pm »
It is programming, but not so much embedded programming... Because on embedded systems the algorithm and actual application is only a part of the job, sometimes even quite minor. A lot of it is understanding the tools and dealing with low level things, drivers, hardware constraints/limitations etc.
As suicidaleggroll says the limitation in frameworks like arduino is that they hide all of that from you so much that you don't even know those important things exist.

When I do an Arduino project it seems like I always end up dealing with that stuff anyway. There's always some control register that has to be twiddled to make it do what I want, and of course all the same hardware constraints exist - it is an 8-bit microcontroller after all.
DIY Eurorack Synth: https://lenp.net/synth/
 

Offline rstofer

  • Super Contributor
  • ***
  • Posts: 9890
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #11 on: July 14, 2016, 09:06:08 pm »
In the end I havent bothered mentioning it
I will just mention it in the interview if I ever get one

One thing I do know is that every time I have programmed I always start getting it to do the smallest possible thing - like switch an LED on and off and then work gradually in small steps from there.
Don't know if that is how it is done in the real world but that is how I have always done it.

I programmed that Arduino for the remote control and reciever of the Quadrotor in about 10 days - starting from knowing literally nothing and getting the Arduino to print 'Hello world' and then flash an LED. That is how every project has gone for me. I am not sure if this sort of process is acceptable in a real job though

That process of working up has a legitimate technical description: "Stepwise Refinement" and it is a key approach to writing software (or just about anything else).  It was coined by Niklaus Wirth, one of the great luminaries of computer science:

http://sunnyday.mit.edu/16.355/wirth-refinement.html

EVERYBODY does it that way.  You buy a board, you install the toolchain, you blink an LED, you get the UART to send "Hello World!" and then you are on your way.

OK, in the Arduino world, a lot of the low level hardware oriented code is given.  Fine...  But you don't have to use it.  You can take bits and pieces of their code out of your code and reinvent it.  Why?  Because you gain experience and you already have the crib notes.

Today, I would guess that the majority of embedded processing is being done with ARM chips.  So, buy a development board, maybe something like the STM32F4 Discovery Board and, using the tools provided, recreate your helicopter project.  But instead of using the STM provided libraries, write your own code.  Actually, I might start with a simpler ARM like the LPC2148 because, while it is slower, you will also deal directly with the hardware because there are no particular libraries.  Then you will go to www.jcwren.com/arm and get some great sample code to use and study.

Yes, Arduino programming is embedded programming.  True, it often turns out that the programmer doesn't touch the ports directly but the overall flow of the project is still embedded programming.

Go back to school and take a course in embedded programming?  I see that is actually a course these days.  Since you already know about C++, at least superficially because, actually, Arduino programming seldom uses anything other than C, you should be able to pick this stuff up pretty quick.

Good luck!
« Last Edit: July 14, 2016, 09:08:10 pm by rstofer »
 

Offline rstofer

  • Super Contributor
  • ***
  • Posts: 9890
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #12 on: July 14, 2016, 09:17:07 pm »
Case in point:  I have an mbed and that board uses an ARM LPC1768 and can be programmed with an online toolchain - very slick!  Highly recommended...  I see that they now support STM32F boards.  I have used it a couple of times to code for my STM32F4-Nucleo board.  Works well...

The very first project required an SPI Slave port running at nearly 12.5 MHz.  Clearly, it had to be interrupt driven because, in the foreground, I had to packetize that stream and send it out over TCP/IP.  Well, the mbed doesn't have SPI Slave code in the library and there were no examples of dealing with the NVIC (interrupt controller) or writing interrupt handlers.  So, it took a bit longer.  I had to spend some time with the datasheet and user manual (get used to that!) and I wrote a couple of functions.  It's been working for a very long time...

Even in the mbed world, there is no requirement to use the provided libraries.  I will certainly use the provided TCP/IP library, I'm not crazy enough to want to rewrite lwIP, but I am perfectly happy writing code to directly touch the hardware.

 

Offline AQUAMANTopic starter

  • Regular Contributor
  • *
  • Posts: 101
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #13 on: July 14, 2016, 09:19:02 pm »
Thanks for all he advice but I can't go back to school
I've got a mortgage to pay
 

Offline Ice-Tea

  • Super Contributor
  • ***
  • Posts: 3070
  • Country: be
    • Freelance Hardware Engineer
Re: Is coding an Arduino considered real embedded programming?
« Reply #14 on: July 14, 2016, 09:21:29 pm »
For any project with any programming done by me or anyone else where I was involved someone, at some point has always said: hey, we have a blinking LED, we're halfway there.

So, you should be on the right track ;)

Offline dmills

  • Super Contributor
  • ***
  • Posts: 2093
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #15 on: July 14, 2016, 09:29:14 pm »
As to things that look good for employment, a github account with loads of shiny things you wrote in it is good (Include the details in your CV), a full ham radio ticket carries more weight then it probably should these days and is easy to obtain, published stuff is good (even if only in Radcom/Dubus), a good rep on the forums is useful, and membership of appropriate professional bodies is good.

5 Years ago I leveraged a ham license, some old software experience and some DIY audio electronics experience into a junior engineering job at a sonar company (Having decided that touring as a roadie was a young mans game), two years later I moved into broadcast electronics for an ~80% pay rise and not that long after that got the senior hardware position, so it can be done, but every day is still very much a schoolday. 

Regards, Dan.
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #16 on: July 14, 2016, 09:59:23 pm »
It's a program written in C++, if you wrote it then it's programming. (Yes, the "Arduino language" is C++ compiled by the GCC compiler.)

[Edited to add:] You probably want to be careful about claiming that you have a lot of programming experience.

I like to follow Ferguson's Rule of Resumé Writing: "Never claim anything on your resumé that you can't learn in two weeks." :)
I will have to learn everything in any job they give me
Im not good at anything really

Don't put yourself down.

You can certainly say that you are "familiar with the C/C++ programming language". If you got your quadcopter to work, you learned a lot doing that much.

Of course for programming other than in the Arduino IDE you will have to learn to use the appropriate toolchain for what you are doing, something that is separate from the programming itself.

One thing that I learned from "real programmers" is that people nowadays rarely write programs from scratch. They find existing programs that do something like what they need, and change things, add things, subtract things until the program does what is needed. "Hello World" while blinking an LED -- that's a start. Now make it interactive, control colored LEDs with variable brightness.... etc etc. You get the idea.

Don't put yourself down. "I'm not good at anything really" is something you do _not_ want to put on your resume or say in an interview. It's probably not even true anyway.
The easiest person to fool is yourself. -- Richard Feynman
 
The following users thanked this post: 3db

Offline rstofer

  • Super Contributor
  • ***
  • Posts: 9890
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #17 on: July 14, 2016, 10:13:46 pm »
For any project with any programming done by me or anyone else where I was involved someone, at some point has always said: hey, we have a blinking LED, we're halfway there.

So, you should be on the right track ;)

And that is because a number of things need to work just to blink that LED.  The IDE allows editing, the compiler generates code, the linker puts it in the right place and some tool loads it onto the device.  The clock(s) are working, the code is executing from the correct address and the port is reachable.  That's a LOT of stuff going right!

The rest is just details...

A couple of things will be different than with the Arduino.  First of all, we almost never poll for input.  The UART should have an interrupt handler that puts chars into a circular queue.  The same for output.  The UART should grab chars if they are available whenever the FIFO runs dry.  It should grab all the chars that will fit in the hardware FIFO.  Clearly, the output routine has to be able to kickstart the transmit operation if the FIFO has run dry.

There will  almost always be a hardware clock - interrupt driven, of course.

There will be extensive use of timers.  A simple application is in generating PWM for H-bridge motor drivers.  Another application might be driving RC servos.  All of this should be automated and run off the interrupt system.

Experience with an RTOS is always required.  FreeRTOS is a very capable package and, like its name, FREE!  It turns out that most of the code at jcwren.com revolves around FreeRTOS.  This is the board the code is written for:

https://www.olimex.com/Products/ARM/NXP/LPC-P2148/

This might be workable:

https://www.sparkfun.com/products/676


Maybe hang an LCD on the board for some kind of graphics.  Maybe even a touch screen - that'd be cool.

Because, in the end, embedded projects will have an RTOS, they'll have a touch screen, they'll use counters and timers.  They may, or may not, use the UARTs.  If not, get used to porting lwIP.  It's pretty easy, given the right Ethernet device

https://www.sparkfun.com/products/765

I know this device works with uIP - written by the same author but a much more limited stack.  I really don't know that lwIP will even fit in an LPC2148.

Of course, I could make the same list of topics for the mbed (LPC1768) and it's a much more current chip.

A much higher level development board would be the STM32F746G-Disco board.  It's a lot like Barbie, it has everything.  A color touch screen, Ethernet, a provision for a camera,  USB and a lot of other stuff:

http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f746gdiscovery.html

I could spend a lot of time getting up to speed on this board!
 

Offline TheAmmoniacal

  • Supporter
  • ****
  • Posts: 1188
  • Country: no
Re: Is coding an Arduino considered real embedded programming?
« Reply #18 on: July 14, 2016, 10:33:41 pm »
I do recommend lying a bit on your resumé, just make sure you become a very dedicated learner once you get the job. Worst case they'll just fire you, and you'll be back to where you started - at least you gave it a try!
 

Online CatalinaWOW

  • Super Contributor
  • ***
  • Posts: 5231
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #19 on: July 14, 2016, 10:42:14 pm »
While it is an absolute no no to lie, you can tell the truth in a way that sounds better.

For professional experience describe what you have done in your PhD field.  Your thesis project and any jobs you have captured since.

It is also appropriate to list the skills you have developed.  Programming languages, analysis tools, project management tools and skills.

Then go on to mention your hobby experiences, which include programming an Atmega controller to control a drone vehicle.

If any of these skills interest them they will ask you about them and assess how useful you can be to them, both with your existing skills and those you can learn quickly.

Whether Arduino programming counts as embedded programming depends entirely on what you did.  If you downloaded something from one of the libraries and managed to get it to load and run it doesn't count at all.  But if you prototyped in the Arduino environment and then recoded the whole thing in assembly to run on the Arduino hardware platform it absolutely does count.   There is a fairly smooth evolution from these two ends of the spectrum.
 

Offline suicidaleggroll

  • Super Contributor
  • ***
  • Posts: 1453
  • Country: us
Re: Is coding an Arduino considered real embedded programming?
« Reply #20 on: July 14, 2016, 11:04:15 pm »
I've always found it nice when people are listing their technical skills on a resume, that they separate them into two categories: "proficient in" and "experience with".  That means you don't have to lie about being an expert in languages/fields you know little about, while still allowing you to list things you have some experience with so they know you're not coming in fresh.
 

Offline Brumby

  • Supporter
  • ****
  • Posts: 12298
  • Country: au
Re: Is coding an Arduino considered real embedded programming?
« Reply #21 on: July 14, 2016, 11:11:01 pm »
I do recommend lying a bit on your resumé
I don't.

While it is an absolute no no to lie, you can tell the truth in a way that sounds better.
That's better.

I've always found it nice when people are listing their technical skills on a resume, that they separate them into two categories: "proficient in" and "experience with".  That means you don't have to lie about being an expert in languages/fields you know little about, while still allowing you to list things you have some experience with so they know you're not coming in fresh.
This I would recommend.
 

Offline NivagSwerdna

  • Super Contributor
  • ***
  • Posts: 2495
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #22 on: July 14, 2016, 11:20:59 pm »
I always thought this was never worth mentioning because its an Arduino and I thought it was not real programming.
If you don't say it they won't know will they?
All these things are about level and you should expect any interview to validate those skills by level... so... have you programmed a microcontroller?  if arduino do you understand the abstraction it has over the hardware, have you programmed the registers directly or just called arduino functions, do you understand how your C maps to assembler, what about ISRs, and then the hardware... timers? up, down, compare? how do those registers relate to the pins, PWM? and then hardware... how about the external crystal? layout?
FWIW I stumbled across some fun videos on assembly...
Good luck!
 

Offline MosherIV

  • Super Contributor
  • ***
  • Posts: 1530
  • Country: gb
Re: Is coding an Arduino considered real embedded programming?
« Reply #23 on: July 14, 2016, 11:52:07 pm »
Hi

I am a professional embedded/real time software engineer.

I would say that it depends on the job that you are going for. If it is more of a junior role or hardware interfacing to software, then you may have a chance. As some of the others have said, you need more experience in structured coding, abstraction, hw/sw interfacing and knowledge of operating systesm (real time and multi tasking).

In my opinnion, if you were to go for a embedded job and mentiined that you have Arduino experience  - you would not even get considered.

Also, bear in mind that you will have to do a technical test during an interview. This is basically showing you some code and you will be expected to figure out what is wrong with it (I have never been to a job interview and not have to do one)

Good luck.  :-+
 

Offline f5r5e5d

  • Frequent Contributor
  • **
  • Posts: 349
Re: Is coding an Arduino considered real embedded programming?
« Reply #24 on: July 15, 2016, 01:30:10 am »
Quote
I have a PhD in Power Electronics

I suppose some companies would waste a PhD on BS/Masters EE engineering positions - but why would you want to work for one?

employers shouldn't view PhD as cheap labor like your Professor may have during grad school

You should, at the lowest level of applying your PhD in industry, be developing algorithms for the embedded programmer to implement, providing the expertise in your research field to the project

I would expect you to be using Matlab/Maple/R..., designing/supervising experiments, interpreting results - showing the math of how to control things

even if your thesis doesn't directly apply, a PhD should still be working at a higher level of developing new knowledge for potential employers - not as some over credentialed engineer
« Last Edit: July 15, 2016, 01:45:40 am by f5r5e5d »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf