Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Learning to program hardware

  1. Sep 7, 2010 #1
    I know several languages (C++, Python, FORTRAN, etc..), but most of the programming I have done never has had any real/physical interaction with hardware.

    I've never used micro-controllers, and would like to start tinkering around in the robotics field.

    Can anyone suggest any good books to get me up and running? I have an Aerospace Engineering and Physics background.

  2. jcsd
  3. Sep 8, 2010 #2
    I'm not sure about books, but what worked well for me was getting a simple FPGA board to play around with (Xilinx has some great stuff, e.g. the "spartan 3" board). Any books on 'verilog' would be helpful as well. I'm not sure why, but I found hardware languages to be much easier to learn by experimentation (as apposed to just reading a book), than software languages like C, etc.
  4. Sep 8, 2010 #3
    I would advise against starting with FPGAs, since as a beginner the only thing you can probably do is run the demos. Also there aren't many cheap FPGAs, the cheapest I know of is the Altera Bemicro (also, they are not so easy to interface with arbitrary real hardware unlike microcontrollers) :

    FPGAs are more flexible but they require a knowledge of an HDL language (VHDL or Verilog) and a good understanding of the hardware and the evaluation board.

    Microcontrollers are much simpler, of the books that I used, I found this one to be good (based on Assembly, not C/C++):


    So if you have a simple and cheap 8051 based microcontroller, you can start with that book (or any other book) and look for recipes online to do some projects later.

    This is my view, other folks may have different opinions.

    note: by a good book, I mean that it sufficed for the course/lecture I was having.
  5. Sep 8, 2010 #4
    FPGAs are all wrong for intro robots stuff, as they teach you to describe the hardware, not talk to it.

    For intro robotics, I really can't rec the various Arduino boards enough. Simple C like syntax that gets you talking to a board fast, thinking about port i/o, and doing all sorts of shiny things. Plus there's a great community for it.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook