Is coding an Arduino considered real embedded programming? - Page 1
Forum section: electronics / beginners

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 14, 2016, 06:52:28 pm
content: I need to get a new jobI live in a town where there are loads of jobs available in the Wireless/Telecomms sectorThere are loads of jobs for embedded software programming and presumably all the technical jobs in these companies require some ability to programI have a PhD in Power ElectronicsMy 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.

author: Len
author_rank: Frequent Contributor
timestamp: July 14, 2016, 07:08:25 pm
content: 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 alotof 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."

author: metrologist
author_rank: Super Contributor
timestamp: July 14, 2016, 07:08:42 pm
content: 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.

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 14, 2016, 07:20:57 pm
content: Quote from: Len on July 14, 2016, 07:08:25 pmI will have to learn everything in any job they give meIm not good at anything really

author: suicidaleggroll
author_rank: Super Contributor
timestamp: July 14, 2016, 07:28:54 pm
content: 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.

author: danadak
author_rank: Super Contributor
timestamp: July 14, 2016, 07:36:22 pm
content: 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 manipulatingHW, you are making C calls to prewritten f()'s written by chip manufacturer. So learningcurve is frankly nowhere what it was 20 - 30 years ago. Where everything was written byprogrammer and often they would do assembly language HW interface programming ontop 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 easychair (better if you stand all day) and create solutions that you can also debug and testthat make us all so much more productive. And if you have ADD it allows you to quicklysolve one problem and move onto another. No boredom.Regards, Dana.

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 14, 2016, 07:42:39 pm
content: 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?

author: metrologist
author_rank: Super Contributor
timestamp: July 14, 2016, 07:53:54 pm
content: Quote from: AQUAMAN on July 14, 2016, 07:42:39 pmschool and volunteer work.

author: Kilrah
author_rank: Unknown
timestamp: July 14, 2016, 08:15:29 pm
content: It is programming, but not so muchembedded 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.

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 14, 2016, 08:17:43 pm
content: In the end I havent bothered mentioning itI will just mention it in the interview if I ever get oneOne 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

author: Len
author_rank: Frequent Contributor
timestamp: July 14, 2016, 08:34:17 pm
content: Quote from: Kilrah on July 14, 2016, 08:15:29 pmWhen 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.

author: rstofer
author_rank: Super Contributor
timestamp: July 14, 2016, 09:06:08 pm
content: Quote from: AQUAMAN on July 14, 2016, 08:17:43 pmThat 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.htmlEVERYBODY 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 towww.jcwren.com/armand 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!

author: rstofer
author_rank: Super Contributor
timestamp: July 14, 2016, 09:17:07 pm
content: 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.

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 14, 2016, 09:19:02 pm
content: Thanks for all he advice but I can't go back to schoolI've got a mortgage to pay

author: Ice-Tea
author_rank: Super Contributor
timestamp: July 14, 2016, 09:21:29 pm
content: For any project with any programming done by me or anyone else where I was involved someone, at some point hasalwayssaid: hey, we have a blinking LED, we're halfway there.So, you should be on the right track

author: dmills
author_rank: Super Contributor
timestamp: July 14, 2016, 09:29:14 pm
content: 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.

author: alsetalokin4017
author_rank: Super Contributor
timestamp: July 14, 2016, 09:59:23 pm
content: Quote from: AQUAMAN on July 14, 2016, 07:20:57 pmDon'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.

author: rstofer
author_rank: Super Contributor
timestamp: July 14, 2016, 10:13:46 pm
content: Quote from: Ice-Tea on July 14, 2016, 09:21:29 pmAnd 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/676Maybe 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 devicehttps://www.sparkfun.com/products/765I 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.htmlI could spend a lot of time getting up to speed on this board!

author: TheAmmoniacal
author_rank: Unknown
timestamp: July 14, 2016, 10:33:41 pm
content: 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!

author: CatalinaWOW
author_rank: Super Contributor
timestamp: July 14, 2016, 10:42:14 pm
content: 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.

author: suicidaleggroll
author_rank: Super Contributor
timestamp: July 14, 2016, 11:04:15 pm
content: 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.

author: Brumby
author_rank: Unknown
timestamp: July 14, 2016, 11:11:01 pm
content: Quote from: TheAmmoniacal on July 14, 2016, 10:33:41 pmI don't.Quote from: CatalinaWOW on July 14, 2016, 10:42:14 pmThat's better.Quote from: suicidaleggroll on July 14, 2016, 11:04:15 pmThis I would recommend.

author: NivagSwerdna
author_rank: Super Contributor
timestamp: July 14, 2016, 11:20:59 pm
content: Quote from: AQUAMAN on July 14, 2016, 06:52:28 pmIf 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!

author: MosherIV
author_rank: Super Contributor
timestamp: July 14, 2016, 11:52:07 pm
content: HiI 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.

author: f5r5e5d
author_rank: Frequent Contributor
timestamp: July 15, 2016, 01:30:10 am
content: QuoteI 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 schoolYou 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 projectI would expect you to be using Matlab/Maple/R..., designing/supervising experiments, interpreting results - showing the math of how to control thingseven 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

author: bitwelder
author_rank: Super Contributor
timestamp: July 15, 2016, 05:16:24 am
content: Quote from: AQUAMAN on July 14, 2016, 07:20:57 pmBut then, how good are you at *learn* new things?Let's say your Atmel knowledge is enough to get you the job, but soon your employer want to start a team to work e.g. on ARM and put you to the task. Can you take an active stance and get yourself informed or do you need constant hand-holding?

author: ez24
author_rank: Super Contributor
timestamp: July 15, 2016, 05:54:41 am
content: Watch Youtube videos on micro-controllers in your spare time.

author: JPortici
author_rank: Super Contributor
timestamp: July 15, 2016, 06:08:33 am
content: Quote from: AQUAMAN on July 14, 2016, 08:17:43 pmone way to say that it is that it took youonly 10 days of your spare time to go from knowing nothing about the subject to a working prototypeand this makes you valuable as it is a real world example of you being able to learn things by yourself/being proactive/some other crap

author: charlespax
author_rank: Regular Contributor
timestamp: July 15, 2016, 08:07:14 am
content: When I hire an engineer I always look for people who learn on their own and work on their own projects. It tell me they can figure out what they need to learn, learn it, and implement that knowledge. In general, I'm less interested in people who have only ever done work for their school program or for a job.If I were looking at two otherwise interchangeable candidates, I would always choose the person who has the internal drive to learn a bit of programming and make a helicopter. Put it on your resume.

author: MosherIV
author_rank: Super Contributor
timestamp: July 15, 2016, 08:50:06 am
content: HiQuoteYou could do what some of my ex-colleagues did:when working on a project, divert the project so that it uses what ever you are interested learning.So for you, start doing projects which require control by micro controllers, such as Atmel, PICs and ARM Cortex M0, M3 or M4.(I do not like doing that, the engineer in me wants to pick the right solution for the problem)I said before that mentioning Arduino work is not going to get you noticedYou mentioned that you have worked on 8051, PICs and DSPs - these are the things that are going to get you noticed.The way recruitment works today is that it is out sourced to Recruitment Agencies. All they do is play match the job spec key words to the CV key words. So, if you put the right keywords on your CV, you will get lots of interest from the agents. Sad but trueWhat are the keywords?Embedded, Driver, SPI, I2C, UART, Real Time, some popluar RTOS such as VxWorks or FreeRTOSI have only had 1 job in telecoms which I am no longer in. I am affraid I am not familiar with what keywords are good for embedded telecomms.Once again, Good Luck

author: Kilrah
author_rank: Unknown
timestamp: July 15, 2016, 09:01:07 am
content: If I was looking at that resume with the bit about the quad I'd want more details, becasue given the number of related open source projects nowadays "I programmed that Arduino for the remote control and reciever of the Quadrotor in about 10 days" could very well actually be "I downloaded code from Github and loaded it on a board I bought which took me 2 days" - with the other 8 days being spent hooking things up and configuring the application as a user, not actually programming it. There may be a couple of #defines to change in the code and reflash the board, but even though that's already a little something that's by no means "programming", and anyone useful as a programmer should be able to figure that part out in a matter of minutes, not days.So be careful of what you put, if the person on the other side happens to know about the field they might switch into "suspicious" mode when they read such a thing because with the state of things there would be very few incentives to roll your own given there are many offerings that each have accumulated years of development. On the other hand it means that if you really made your own independent project, and got something to fly in 10 days then you're a genius so sure go for it and be ready to explain it in detail.But if you just went with an existing project as a user by all means don't, because you'd look like a tool who doesn't know what he's talking about unless you actually programmed new features or contributed bugfixes to the project you're using and can attest it.

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 15, 2016, 09:37:53 am
content: Quote from: MosherIV on July 15, 2016, 08:50:06 amMy CV is only 1 pageThere is not much room to list buzzwords that I am not really good at anywayI suppose I could leave out the jobs I had in civil engineering and in finance in London and change it to put some keywords on like from projects I did at university from 2007-2011 like the 8051, PICs, embedded C, TI DSPs etc, Altium designer

author: SL4P
author_rank: Super Contributor
timestamp: July 15, 2016, 11:14:41 am
content: Rather than specifically sayingArduinoin an interview...(some like to look down their nose at hobbyists), simply mention that you have experience developing hardware and software solutions on small micro-controllers... if they ask (or know), you can elaborate with PIC, 8051, and Atmel 8-bit processors.Don't commit too hard, if you understand their questions, you'll have a chance of dealing with them.The biggest challenge after the actual languages is the choice of toolchains, and their internal 'processes'.

author: MosherIV
author_rank: Super Contributor
timestamp: July 15, 2016, 11:23:16 am
content: QuoteRecruitment has turned into a bit of a game now a days, at least in the UK.As I said before the agents play the buzz word matching game.You definitely want to be tayloring CVs for EACH job specifically.Emphasis the relevant experience to match the job specification, down play any work that is less/not relevant.Do 1 CV for each job that you are targeting. Sadly the job market is so competitive now that this is often the only way to stand out from the crowd.You can add your experience in personal or hobbies section if it is not related to work but it looks better if it is part of your work.As I said, try to use projects at work to build up the experience you need. Manager usually do not care how you do something, just that it gets done.

author: luxfx
author_rank: Contributor
timestamp: July 15, 2016, 04:16:00 pm
content: Quote from: AQUAMAN on July 14, 2016, 06:52:28 pmUnless you're expecting to start a new job tomorrow, this would be an ideal time to expand knowledge on anything you want to use in a resume.Find some Arduino tutorial projects online. Make them. Find some Arduino projects in Make magazine or similar. Make them. Find an open source project or two that's under active development, find ways to contribute to their code (at a minimum, OSS projects always welcome help with documentation). You've now got new real-world experience to add to your resume! (the last couple of jobs I've been in, the interview process included asking me about what open source projects I've contributed to)There won't be a better time to learn!

author: rx8pilot
author_rank: Super Contributor
timestamp: July 15, 2016, 04:21:26 pm
content: Quote from: charlespax on July 15, 2016, 08:07:14 amMe too. No academic credential represents internal drive and it seems to be a rare personality trait these days.

author: metrologist
author_rank: Super Contributor
timestamp: July 15, 2016, 05:31:50 pm
content: How about check out Dave's latest you tube video on the STm something dev board and get a tad more insight. It's only $13 if you want to play with something a bit more challenging. Video picks up more relevance for you around the 30 min mark - he kind of gives you a peak at what you probably didn't know you didn't know...https://www.eevblog.com/forum/blog/eevblog-900-stm32-arm-development-board/?topicseen

author: CatalinaWOW
author_rank: Super Contributor
timestamp: July 15, 2016, 05:51:11 pm
content: Quote from: rx8pilot on July 15, 2016, 04:21:26 pmActually a PhD is largely about internal drive. The ability to stick to the goal through grad school politics, the use as underpaid labor, sometimes inadequate resources and actually think and implement a thesis topic. That is not to say that all PhDs are useful and effective in industry. Many cannot deal with real world problems, or feel that they are somehow above others (see some of the posts above) and above the problems that your organization needs solve. But all in all PhDs have demonstrated drive and ability to learn, two important qualities in an employee. The inability to deal with real world problems, and the feeling of being above or better than the problems and people around them is not confined to PhD holders.So as always, ditch the HR formulas and evaluate each candidate on their own merits. It is a difficult skill, one I don't claim to own much of, but which I have observed in action. Those who are good at it do wonderful things for their organizations.

author: Red Squirrel
author_rank: Super Contributor
timestamp: July 15, 2016, 06:05:26 pm
content: Find a tutorial on how to setup Arduino without an Arduino, basically, get the Atmega chip, crystal and other components and breadboard it. You can still use the arduino software to code in the arduino framework, so you're still skipping a lot of the hard stuff but it's a good start to be able to say you programmed the chip directly vs just plugging in an Arduino.I was looking into coding the chips without Arduino, but there isn't very many tutorials out there so it's harder to find info for. Like what command do I use to flip a certain pin, etc. What variable, what bit, etc. There's tidbits of info here and there though that you can eventually put it all together. There's also things like fuses (not the current limiting kind) that you don't really get to touch with Arduino.I would not recommend lying on a resume, if they catch wind of that, it would be really bad. It may even possibly be illegal, but don't quote me on that. Imagine you say you are very proficient in a certain language and your first day on the job they get you to code/troubleshoot a life safety device that uses said language and it fails. Just something to think about.

author: rstofer
author_rank: Super Contributor
timestamp: July 15, 2016, 10:29:29 pm
content: Quote from: SL4P on July 15, 2016, 11:14:41 amThe problem with all we have said (all of us) is that, sooner or later, they're going to sit the OP at a desk with a development board and a toolchain and expect results. Like right now! If you haven't programmed an NVIC, you simply do not know how to do it. But you're expected to know how. "Hey, is FreeRTOS running yet?" "How many tasks?"In the end, you can't fake experience. You either have it or you don't and most employers expect results. They're not usually in business to provide training. The only way to get that experience is to sit down with a couple of development boards for various incantations of hardware, presumably ARM, and write code. Lots and lots of code.One reason I keep pointing tohttp://www.jcwren.com/arm/is that his demo code, for the ARM7, demonstrates the use of every peripheral on the chip. Now, this particular platform is trivial compared to something like the STM32F4 and there is no CSMIS or company provided obfuscation of the hardare but it is complete. It would be useful to port the ideas to a more fully featured ARM Cortex Mx avoiding all the code provided by others.It's all about writing a ton of code!

author: CatalinaWOW
author_rank: Super Contributor
timestamp: July 16, 2016, 03:45:37 am
content: Quote from: rstofer on July 15, 2016, 10:29:29 pmWere this strictly true virtually no one could get a first job. What you are describing is the experience and knowledge required for a top paying lead position, or a consultant or sole programmer at a small shop or similar. Folks with the skills you describe generally have no trouble finding employment, but are in short supply. Thus the openings for lesser talents that may eventually become one of the artists.

author: JacquesBBB
author_rank: Frequent Contributor
timestamp: July 16, 2016, 10:36:07 am
content: yes, coding an Arduino is real embedded programming. There is no doubt about that.But this is not the real question you may want to ask. You want to apply for a job requiring embedded programming.Then you need to meet your employer expectation, and in this case arduino programming is probably not sufficient,as your employer may expect that you will be able to handle any kind of MCU at a lower level programminginvolving the configuration of the registers, and the debugging capabilities in a professional environment thatmay be the one used in the company.To be able to meet some of this requirements, it is then essential that you have a better idea of the expectation of thecompany you are aiming for, and to be prepared to at least partially fulfil these requirements. No one expect that you will beable to do everything, but if at least you show that you can rapidly adapt to the company environment, it will be very positive.To step out from the arduino environment and get a grasp of a professional setting, I strongly recommendto follow the free online course of MIT"Embedded systems shape the world"https://www.edx.org/course/embedded-systems-shape-world-utaustinx-ut-6-03xIt is now open for registration in the "Take courses when you want and at your own pace" form with no deadlines.This is a very enjoyable course andwill probably be the quickest way to put you on level with your expectations and those of your potential employer.

author: rstofer
author_rank: Super Contributor
timestamp: July 16, 2016, 01:36:58 pm
content: Quote from: CatalinaWOW on July 16, 2016, 03:45:37 amThat's why new employees normally have an education in CS or EE. They will be able to demonstrate college level capabilities in a wide range of topics related, in some way, to the tasks at hand. I suspect that most CS programs include a course in embedded programming.Right off the bat, I have to concede that I have never worked a day in the fields of electronics or embedded programming (although I did make some money writing BIOS code for CP/M, let's skip that...). My work career was in electrical, construction and project management. In all those years, I can't recall ever hiring someone for a specific position who didn't have at least some kind of experience. I was working for a business that was in the business to make money.I can't imagine what a newhire would do, sitting at their desk, if they didn't at least have the equivalent of a CS degree. Where would they start? Furthermore, the only way to write good looking C code is to write a ton of ugly looking C code and work up.The problem with being highly educated in another field is that, on one level, you are overqualified for entry level positions, should such even exist. Employers are reluctant to hire people who are overqualified. It was so bad back in the '70s here in California that they passed a law that said it was OK to understate your qualifications because PhDs couldn't get a job anywhere.Given the situation that returning to college for a few targeted courses is not feasible, there are only a couple of alternatives: First, try some of the online courses like the one linked above from MIT. There are others but MIT Open Courseware is pretty famous. The other way is to sit down with a board and toolchain and write a bunch of code. Spend time writing bottom level code for all of the gadgets in the chip. Use of the C library is fine, no other manufacturer hardware level code allowed. It's ok to port FreeRTOS (or equal) and the TCP/IP stack but the bottom level code is original. Oh, and it should be for an ARM processor.Working in embedded means writing code. A lot of code...

author: Kalvin
author_rank: Super Contributor
timestamp: July 16, 2016, 02:39:11 pm
content: Of course Arduino can be considered as real programming, depending on what you are doing with it. I simple hello world or a simple led blinking may not qualify, but something more complex can be considered as real programming independent of the processor.Arduino is typically considered as a hobby platform, but the Atmega328 MCU itself is a real microcontroller which contains some nice peripherals and in the hands of a capable programmer can perform some really cool stuff within the limits of the Flash and RAM size.One good thing about Arduino is that there are tons of example code snippets that can be used as a part of a project. The quality of those code snippets vary from terrible to very good, so I typically rewrite those snippets to suit my purpose and try to improve the quality as well. It won't be too hard to port the ideas of the code snippets to other target platforms later. For example, if you have some peripherals connected to the Arduino, you can prototype with the peripherals first in order to get the feeling how the peripherals behave and perform before you start the design for the actual platform, like STM32.So, I would do one or two projects using Arduino in order to get started and then move to STM32 controllers. Dave's latest video #900https://www.eevblog.com/2016/07/14/eevblog-900-stm32-arm-development-board/features one example of a very inexpensive STM32 evaluation board. There are other boards containing STM32F4 in about 20 Euro range, containing very powerful ARM Cortex M4 core with floating point capabilities, some SIMD instructions for the accelerated DSP capability and quite a lot of RAM and Flash.Try to select a board that is supported by ST so that you can get sample applications up and running as fast as possible without too much of a frustration. There are some free and commercial IDEs for the STM32 development, and it may take some time to decide what to use. When you have decided on the IDE, you can try out the sample applications. After that, you can start developing our own stuff.If you want get into some mixed signal development, you may also want to try the $10 PSoc 5 LP evaluation kit from the Cypress which contains quite a lot software-configurable mixed signal/analog blocks that can be used to create very nice measurement and control applications with very few external components.

author: ez24
author_rank: Super Contributor
timestamp: July 16, 2016, 06:26:29 pm
content: My cheap two centsTake a look at thishttps://leanpub.com/mastering-stm32You can read a sample and take a look at chap 1. In my opinion, chap 1 is what you should know by the time you finish the book.The goal of the book is to learn STM32 (uses the F401) with totally free tools. Tools that can be used on Windows, Linux, or Mac.Tools are what will kill you. Most tools are not free, and if free commercial then there are conditions. If you have extra money then commercial is probably the best way to go.In chap 2 the author shows how to install (by my count 7) free tools. Each tool has options. My guess there are about 50 steps to install software. But I made it and I do not have a PhD. I am starting Chap 3 (blink LED) today after I pick up my 465b.The board (F401) costs about $17. Nucleo board So for less than $40 you can get started with the STM32 and learn something that should help you.Also the board uses Arduino connections so Arduino shields can be used.If you get the book, you may want to look into another career. It is hard.

author: stevenhoneyman
author_rank: Regular Contributor
timestamp: July 16, 2016, 07:18:30 pm
content: (just my opinion)Not really, since the "hard work" has all been done for you already. Stating "arduino" or "raspberry pi" on a CV will likely get nothing more than some eye-rolling from whoever is reading it.My advice would be to spend a little time working with something a bit more advanced to show that you don't just "follow the crowd" - go bare metal on an LPC or STM32 etc. for example.

author: Kalvin
author_rank: Super Contributor
timestamp: July 16, 2016, 07:30:23 pm
content: Quote from: stevenhoneyman on July 16, 2016, 07:18:30 pmProgramming in Linux or Windows platform using the Posix libraries or Qt framework, or creating an application running on the FreeRTOS and using its services and device drivers, are not real programming in similar criteria? I see.

author: IanB
author_rank: Super Contributor
timestamp: July 16, 2016, 07:53:47 pm
content: Quote from: AQUAMAN on July 14, 2016, 06:52:28 pmThe challenge for you is that programming is hard. There is a large gap between "knowing how to code" and "being able to create a well organized, maintainable, reliable, bug-free program with complex logic". Even for people with aptitude I think it takes a couple of years of practice to get reasonably proficient.So if you see this as a potential career move, you need to start now, in your own time, doing some learning. Download and install some development kits or IDEs and learn how to use them, writing programs both for embedded development boards and for the desktop. Both aspects contribute to good programming experience. If you have an Arduino board try programming the micro directly rather than using the Arduino environment. That way you will get a much better idea of how the chip works.If your domain is power electronics, think about an application of micro control in that field that you can design and build. It's not my area so I don't know details, but maybe something like a charge controller and power management system for a green energy source like a micro-turbine or solar power? It's not wireless/telecomms, but maybe you can fold in some of that by including wireless telemetry?Frankly, you are probably overqualified for an entry level job where they will train you. Those positions will be offered to graduate trainees or interns. Do you really want to step down to that level? As a PhD with prior job experience you should be aiming much higher, and demonstrating an ability to come in as a contributor not a trainee.

author: stevenhoneyman
author_rank: Regular Contributor
timestamp: July 16, 2016, 09:49:19 pm
content: Quote from: Kalvin on July 16, 2016, 07:30:23 pmThat's on a different scale - judge it based on whether it's commonly marketed towards kids & noobs!

author: m98
author_rank: Frequent Contributor
timestamp: July 18, 2016, 09:31:30 pm
content: Quote from: stevenhoneyman on July 16, 2016, 09:49:19 pmUhm, how could that be a good indicator? Assembler was also once used by kids & noobs...

author: AQUAMAN
author_rank: Regular Contributor
timestamp: July 20, 2016, 08:31:57 pm
content: So what is the difference between ARMmbed and an Arduino?

author: MosherIV
author_rank: Super Contributor
timestamp: July 20, 2016, 08:50:40 pm
content: QuoteArduino is based on 8bit Atmel micro controller.Arduino is a complete development system, with complier, downloader and open source board designs.Arduino emphasis is on user friendly, especially to get up and running quickly.Aimed soley at hobbiestsEmbedded ARM is based on Cortex M series of processors.( Cotrex A series are the processors used in mobile phones, tablets and sort of the Raspberry Pi)There are at least 5 development platforms for the Cortex M seires (editor, compiler, downloader and debugger).There are something like 4 main chip vendors (NXP, TI, ST, Freescale - have been bought by NXP so do not know how much longer fs devices will be around) that make M seriex processors (note I say main because there are many more that produce Cortex M devices but are lower volume or niche products, note that Atmel has joined the fray and now produce M series microcontrollers)People working on Cortex M are expected to know what they are doing (there is not so friendly initial code framework unlike the Arduino) and develop the boot up infrastructure (Arduino this ia all done and no need to worry about it)Much wider variety of development boards with different levels of device integratio and debug support.No concept of 'shield' adapters for most development boards, users are expected to be expert electronics developers and make their own adapter boards.Aimed mainly at commercial market for product development, though there is some effort to capture the hobby market particularly by NXP and STI could go on

author: MLXXXp
author_rank: Frequent Contributor
timestamp: July 20, 2016, 11:05:46 pm
content: Quote from: MosherIV on July 20, 2016, 08:50:40 pmIt should be noted that Arduino isn't just for the 8bit Atmel AVR series. For example, theArduino Zerois an Atmel ARM Cortex M0+ (32bit) based board which is fully supported in the Arduino environment.

author: Galenbo
author_rank: Super Contributor
timestamp: July 23, 2016, 01:41:01 am
content: Quote from: AQUAMAN on July 14, 2016, 06:52:28 pmInstead of mentioning the name someone put on that board with the Atmel, describe what YOU did in that project.What are the measurements, how did you put together code parts, witch structure did you use, what were the peripherals, how did you select them...Nobody shoud care if you did this on arduino/AVR/PIC or TI.

author: System Error Message
author_rank: Frequent Contributor
timestamp: July 23, 2016, 03:04:29 am
content: If you're using C to code something you will be able to access hardware. So yes it is considered real embedded programming when you start managing the hardware with the code such as the memory, hardware features inside the cpu chip and so on. I mean you could be adding shift registers and coding for them so that would be included or pulsing the LED through code. Lesser things have been considered embedded programming such as coding the flash memory of a chip.

author: Rick Law
author_rank: Super Contributor
timestamp: July 29, 2016, 02:54:26 am
content: Quote from: suicidaleggroll on July 14, 2016, 11:04:15 pmThe two categories suggested above is a good idea. Don't forget "working knowledge with..." This is useful to let the employer knows when they talk about X, at least you have some idea.One thing will get in the way of categorization. Some companies switched to using on-line forms with drop down choices.This "describe your 15 or 50 years of different experiences via drop down choices" but "make sure you select the next choice before time-out" is not exactly user friendly.

author: Galenbo
author_rank: Super Contributor
timestamp: July 29, 2016, 08:41:52 am
content: Quote from: Rick Law on July 29, 2016, 02:54:26 amOn my linkedin, I called the categories: Professional experience and Experimental experience.