element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum how to code microprocessors and microcontrollers in python or do I need to learn assembly
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 9 replies
  • Subscribers 394 subscribers
  • Views 1022 views
  • Users 0 members are here
Related

how to code microprocessors and microcontrollers in python or do I need to learn assembly

the_future
the_future over 11 years ago

Hi everyone i just wanted to know if learning assembly is really

needed and how to code other microcontrollers and microprocessors

like arduino and raspberry pi but are not arduino and raspberry pi or

in case I wanted to design my own circuit board

  • Sign in to reply
  • Cancel

Top Replies

  • michaelkellett
    michaelkellett over 11 years ago in reply to Former Member +2
    I'm sorry to be contrary S142857 but your statement "If you wan to program a 8-bit or 16-bit microcontroller, it is essential to learn assembly language, It mainly because assembly is faster(Than C) and…
Parents
  • Former Member
    0 Former Member over 11 years ago

    If you wan to program a 8-bit or 16-bit microcontroller, it is essential to learn assembly language, It mainly because assembly is faster(Than C) and easier to debug.

    Knowing python is good because you can use it to interface with serial.

    Here is a tool that might work.

    https://code.google.com/p/python-on-a-chip/

    If you only want to use 32bit mcu like the ARM Cortex based then you need not learn assembly.

    Sorry  for the late reply

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 11 years ago in reply to Former Member

    I'm sorry to be contrary S142857 but your statement "If you wan to program a 8-bit or 16-bit microcontroller, it is essential to learn assembly language, It mainly because assembly is faster(Than C) and easier to debug." just isn't correct.

     

    The TI MSP430 is a 16 bit controller which is almost always programmed in C and the Atmel AVR 8 bit processor was designed to be programmed in C.

     

    The usually recommended practice is to write all your code in C and then, if required, optimise those small sections of it that are running too slowly. Optimization may include using assembler but more often requires algorithmic improvement. There are occasions when assembler can be written to go faster than even a good compiler can manage but most of the time it just doesn't matter.

     

    There are a few very small 8 processor where there is no C compiler available and it may be necessary to code them in assembler but unless production volumes are large it will be cheaper to use a more powerful processor and code it in C.

     

    Debugging in C is much simpler than in assembler with the tools typically available for each.

     

    I don't use 8 bit AVRs any more but when I did a few years ago all the code was written in C.

     

    It is useful to understand the assembly language of the processor you are using because every now and again you will suspect the compiler of misbehaving (and one time in 100 it will be mis-behaving) and then it's good to look at the code it made.

     

    MK

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • michaelkellett
    0 michaelkellett over 11 years ago in reply to Former Member

    I'm sorry to be contrary S142857 but your statement "If you wan to program a 8-bit or 16-bit microcontroller, it is essential to learn assembly language, It mainly because assembly is faster(Than C) and easier to debug." just isn't correct.

     

    The TI MSP430 is a 16 bit controller which is almost always programmed in C and the Atmel AVR 8 bit processor was designed to be programmed in C.

     

    The usually recommended practice is to write all your code in C and then, if required, optimise those small sections of it that are running too slowly. Optimization may include using assembler but more often requires algorithmic improvement. There are occasions when assembler can be written to go faster than even a good compiler can manage but most of the time it just doesn't matter.

     

    There are a few very small 8 processor where there is no C compiler available and it may be necessary to code them in assembler but unless production volumes are large it will be cheaper to use a more powerful processor and code it in C.

     

    Debugging in C is much simpler than in assembler with the tools typically available for each.

     

    I don't use 8 bit AVRs any more but when I did a few years ago all the code was written in C.

     

    It is useful to understand the assembly language of the processor you are using because every now and again you will suspect the compiler of misbehaving (and one time in 100 it will be mis-behaving) and then it's good to look at the code it made.

     

    MK

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • johnbeetem
    0 johnbeetem over 11 years ago in reply to michaelkellett

    Michael Kellett wrote:

     

    Debugging in C is much simpler than in assembler with the tools typically available for each.

    Absolutely.  I'll take a printf over single-stepping with a binary console any day.

    It is useful to understand the assembly language of the processor you are using because every now and again you will suspect the compiler of misbehaving (and one time in 100 it will be mis-behaving) and then it's good to look at the code it made.

    Sometimes the compiler behaves correctly, but you think it's doing the wrong thing because of something you forgot or didn't know about.  My favorite example of this is when we ported 100K lines of C from 68000 to PowerPC.  The original code was not careful about shared variables used by interrupt service routines.  One thing it did was to increment and decrement buffer size variables.  Well, it turns out on the 68000 you could increment a memory variable in a single, uninterruptable instruction.  However, PowerPC is a RISC machine required three instructions: load, increment register, and store.  If an interrupt occurred in the middle of this sequence, the interrupt service routine might decrement that same variable using its old value instead of its new value, and suddenly data would appear in or disappear from a buffer for no apparent reason, with low probability of occurrence.  Looking at the ASM made it clear that the compiler was doing this new behavior (which is entirely correct for a PowerPC) and gave a clue what the problem was.

     

    What chance would you have of figuring out this problem without ASM?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube