Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Post History

60%
+1 −0
Q&A I have to choose: Arduino or Raspberry pi.

This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers. Microprocessors and microcontrollers are intended to d...

posted 3y ago by Olin Lathrop‭  ·  edited 3y ago by Olin Lathrop‭

Answer
#6: Post edited by user avatar Olin Lathrop‭ · 2020-10-09T13:03:53Z (over 3 years ago)
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • <hr>
  • <blockquote>before ARM became mainstream</blockquote>
  • This presents a very narrow view, and is misleading at best. This statement makes it sound like most microcontrollers are ARM-based, but that's very far from the truth. ARM may have a large chunk of the 32 bit microcontroller market, but last I looked, that was still much smaller than the 8 and 16 bit worlds. There are also other 32 bit architectures, like MIPS used in the Microchip PIC32 line.
  • Some are apparently unaware of the large world of microcontrollers out there that only run a toaster, take input from a keypad and pass it on via UART, turn on a pump and flash a light when the a tank gets too full, etc. Even low end 8 bit cores have enough computational power to perform these tasks. When you're making 10,000 units, a 50 cent micro compared to a 2 dollar micro to do the same job matters. In fact, I'd say that this world is the large bottom unseen part of the microcontroller iceberg. Don't get fooled by the glitzy little peak that sticks out of the water.
  • Some of the comments here by others present a rather biased and narrow view of the microcontroller world. I was content to leave them alone in their own answer, but now that they have spilled over to comments to this answer, they need to be dealt with:
  • <blockquote>[Raspberry Pi, Arduino] hyped, dangerous and harmful hobbyist platforms</blockquote>
  • The language alone should make you suspicious. Both these platforms have legitimate purposes.
  • The RasPi is a very accessible and cheap single-board computer. As was correctly stated, it's basically a PC on a board. When you can get a PC for a few 10s of dollars, you can afford to dedicate it to a specific task. For hobbyists doing this one-off, that can make a lot of sense.
  • The Arduino is a microcontroller development board with enough software sugar-coating to allow getting things done relatively easily without having to know what it actually going on underneath. That can be harmful if you want to learn about microcontrollers, but it's very useful if you just want to get something done and NOT have to learn the details.
  • <blockquote>Modern 32 bit ARM Cortex M is what most professionals use nowadays</blockquote>
  • Just plain wrong.
  • Professionals chose the right micro for the job. ARM may be a popular choice for 32 bit micros, but again, that is a small part of the overall microcontroller world.
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • <hr>
  • <blockquote>before ARM became mainstream</blockquote>
  • This presents a very narrow view, and is misleading at best. This statement makes it sound like most microcontrollers are ARM-based, but that's very far from the truth. ARM may have a large chunk of the 32 bit microcontroller market, but last I looked, that was still much smaller than the 8 and 16 bit worlds. There are also other 32 bit architectures, like MIPS used in the Microchip PIC32 line.
  • Some are apparently unaware of the large world of microcontrollers out there that only run a toaster, take input from a keypad and pass it on via UART, turn on a pump and flash a light when the a tank gets too full, etc. Even low end 8 bit cores have enough computational power to perform these tasks. When you're making 10,000 units, a 50 cent micro compared to a 2 dollar micro to do the same job matters. In fact, I'd say that this world is the large bottom unseen part of the microcontroller iceberg. Don't get fooled by the glitzy little peak that sticks out of the water.
  • Some of the comments here by others present a rather biased and narrow view of the microcontroller world. I was content to leave them alone in their own answer, but now that they have spilled over to comments to this answer, they need to be dealt with:
  • <blockquote>[Raspberry Pi, Arduino] hyped, dangerous and harmful hobbyist platforms</blockquote>
  • The language alone should make you suspicious. Both these platforms have legitimate purposes.
  • The RasPi is a very accessible and cheap single-board computer. As was correctly stated, it's basically a PC on a board. When you can get a PC for a few 10s of dollars, you can afford to dedicate it to a specific task. For hobbyists doing this one-off, that can make a lot of sense.
  • The Arduino is a microcontroller development board with enough software sugar-coating to allow getting things done relatively easily without having to know what is actually going on underneath. That can be harmful if you want to learn about microcontrollers, but it's very useful if you just want to get something done and NOT have to learn the details.
  • <blockquote>Modern 32 bit ARM Cortex M is what most professionals use nowadays</blockquote>
  • Just plain wrong.
  • Professionals chose the right micro for the job. ARM may be a popular choice for 32 bit micros, but again, that is a small part of the overall microcontroller world.
#5: Post edited by user avatar Olin Lathrop‭ · 2020-10-09T13:00:38Z (over 3 years ago)
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • <hr>
  • <blockquote>before ARM became mainstream</blockquote>
  • This presents a very narrow view, and is misleading at best. This statement makes it sound like most microcontrollers are ARM-based, but that's very far from the truth. ARM may have a large chunk of the 32 bit microcontroller market, but last I looked, that was still much smaller than the 8 and 16 bit worlds. There are also other 32 bit architectures, like MIPS used in the Microchip PIC32 line.
  • Some are apparently unaware of the large world of microcontrollers out there that only run a toaster, take input from a keypad and pass it on via UART, turn on a pump and flash a light when the a tank gets too full, etc. Even low end 8 bit cores have enough computational power to perform these tasks. When you're making 10,000 units, a 50 cent micro compared to a 2 dollar micro to do the same job matters. In fact, I'd say that this world is the large bottom unseen part of the microcontroller iceberg. Don't get fooled by the glitzy little peak that sticks out of the water.
  • Some of the comments here by others present a rather biased and narrow view of the microcontroller world. I was content to leave them alone in their own answer, but not that they have spilled over to comments to this answer, they need to be dealt with:
  • <blockquote>[Raspberry Pi, Arduino] hyped, dangerous and harmful hobbyist platforms</blockquote>
  • The language alone should make you suspicious. Both these platforms have legitimate purposes.
  • The RasPi is a very accessible and cheap single-board computer. As was correctly stated, it's basically a PC on a board. When you can get a PC for a few 10s of dollars, you can afford to dedicate it to a specific task. For hobbyists doing this one-off, that can make a lot of sense.
  • The Arduino is a microcontroller development board with enough software sugar-coating to allow getting things done relatively easily without having to know what it actually going on underneath. That can be harmful if you want to learn about microcontrollers, but it's very useful if you just want to get something done and NOT have to learn the details.
  • <blockquote>Modern 32 bit ARM Cortex M is what most professionals use nowadays</blockquote>
  • Just plain wrong. Professionals chose the right micro for the job. ARM may be a popular choice for 32 bit micros, but again, that is a small part of the overall microcontroller world.
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • <hr>
  • <blockquote>before ARM became mainstream</blockquote>
  • This presents a very narrow view, and is misleading at best. This statement makes it sound like most microcontrollers are ARM-based, but that's very far from the truth. ARM may have a large chunk of the 32 bit microcontroller market, but last I looked, that was still much smaller than the 8 and 16 bit worlds. There are also other 32 bit architectures, like MIPS used in the Microchip PIC32 line.
  • Some are apparently unaware of the large world of microcontrollers out there that only run a toaster, take input from a keypad and pass it on via UART, turn on a pump and flash a light when the a tank gets too full, etc. Even low end 8 bit cores have enough computational power to perform these tasks. When you're making 10,000 units, a 50 cent micro compared to a 2 dollar micro to do the same job matters. In fact, I'd say that this world is the large bottom unseen part of the microcontroller iceberg. Don't get fooled by the glitzy little peak that sticks out of the water.
  • Some of the comments here by others present a rather biased and narrow view of the microcontroller world. I was content to leave them alone in their own answer, but now that they have spilled over to comments to this answer, they need to be dealt with:
  • <blockquote>[Raspberry Pi, Arduino] hyped, dangerous and harmful hobbyist platforms</blockquote>
  • The language alone should make you suspicious. Both these platforms have legitimate purposes.
  • The RasPi is a very accessible and cheap single-board computer. As was correctly stated, it's basically a PC on a board. When you can get a PC for a few 10s of dollars, you can afford to dedicate it to a specific task. For hobbyists doing this one-off, that can make a lot of sense.
  • The Arduino is a microcontroller development board with enough software sugar-coating to allow getting things done relatively easily without having to know what it actually going on underneath. That can be harmful if you want to learn about microcontrollers, but it's very useful if you just want to get something done and NOT have to learn the details.
  • <blockquote>Modern 32 bit ARM Cortex M is what most professionals use nowadays</blockquote>
  • Just plain wrong.
  • Professionals chose the right micro for the job. ARM may be a popular choice for 32 bit micros, but again, that is a small part of the overall microcontroller world.
#4: Post edited by user avatar Olin Lathrop‭ · 2020-10-09T12:57:53Z (over 3 years ago)
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • <hr>
  • <blockquote>before ARM became mainstream</blockquote>
  • This presents a very narrow view, and is misleading at best. This statement makes it sound like most microcontrollers are ARM-based, but that's very far from the truth. ARM may have a large chunk of the 32 bit microcontroller market, but last I looked, that was still much smaller than the 8 and 16 bit worlds. There are also other 32 bit architectures, like MIPS used in the Microchip PIC32 line.
  • Some are apparently unaware of the large world of microcontrollers out there that only run a toaster, take input from a keypad and pass it on via UART, turn on a pump and flash a light when the a tank gets too full, etc. Even low end 8 bit cores have enough computational power to perform these tasks. When you're making 10,000 units, a 50 cent micro compared to a 2 dollar micro to do the same job matters. In fact, I'd say that this world is the large bottom unseen part of the microcontroller iceberg. Don't get fooled by the glitzy little peak that sticks out of the water.
  • Some of the comments here by others present a rather biased and narrow view of the microcontroller world. I was content to leave them alone in their own answer, but not that they have spilled over to comments to this answer, they need to be dealt with:
  • <blockquote>[Raspberry Pi, Arduino] hyped, dangerous and harmful hobbyist platforms</blockquote>
  • The language alone should make you suspicious. Both these platforms have legitimate purposes.
  • The RasPi is a very accessible and cheap single-board computer. As was correctly stated, it's basically a PC on a board. When you can get a PC for a few 10s of dollars, you can afford to dedicate it to a specific task. For hobbyists doing this one-off, that can make a lot of sense.
  • The Arduino is a microcontroller development board with enough software sugar-coating to allow getting things done relatively easily without having to know what it actually going on underneath. That can be harmful if you want to learn about microcontrollers, but it's very useful if you just want to get something done and NOT have to learn the details.
  • <blockquote>Modern 32 bit ARM Cortex M is what most professionals use nowadays</blockquote>
  • Just plain wrong. Professionals chose the right micro for the job. ARM may be a popular choice for 32 bit micros, but again, that is a small part of the overall microcontroller world.
#3: Post edited by user avatar Olin Lathrop‭ · 2020-10-08T22:09:16Z (over 3 years ago)
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry setting to check, etc. Most system perform their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry settings to check, etc. Most system start performing their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system to start running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
#2: Post edited by user avatar Olin Lathrop‭ · 2020-10-08T17:42:34Z (over 3 years ago)
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry setting to check, etc. Most system perform their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microcontroller systems.
  • This site isn't appropriate for telling you what to choose. We can, however, give you information on microprocessors versus microcontrollers.
  • Microprocessors and microcontrollers are intended to different applications. As a result, they have different capabilities, and different tradeoffs of use.
  • <h3>Microprocessor</h3>
  • Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms. It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently. Since a user is assumed, user-interface hardware is usually expected to be present. This includes a standard way of driving a screen, keyboard, mouse, etc. It also generally includes connectivity, like ethernet, USB, and the like. Some form of local mass storage is also expected, which is used to implement a file system presented to the user.
  • Microprocessors are usually chip sets. The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry. The main chip implements I/O busses that other chips connect to. These other chips are often integral parts of the overall processor, and are often specific to particular processor families.
  • All the hardware peripherals, file system, and communications require a lot of software complexity. Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions. It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.
  • <h3>Microcontroller</h3>
  • Microcontrollers are intended for dedicated embedded applications. They are therefore optimized for cost, power, and ease of electrically integrating into a circuit. Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint. The program and data memory is built-in, as are other simplified peripherals. There are no I/O busses for hanging more memory or additional peripherals off of. You get what is built in. If you need more, you use a model with more. That will of course cost more, use more space, and probably more power.
  • The I/O pins are meant to control or sense external signals directly. Most pins can be driven or sensed individually under firmware control.
  • Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications. Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.
  • Products with dedicated embedded microcontrollers can be produced in large quantities. Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference. This is why there are so many more microcontrollers than more general purpose microprocessors.
  • <h3>Tradeoffs</h3>
  • Some microprocessor advantages:<ol>
  • <li>Can run arbitrary programs.
  • <li>Operating system support to abstract and virtualize hardware resources.
  • <li>High flexibility. You decide on the fly what to run.
  • <li>More advanced and wider choice of software development environments.
  • <li>Can support more resource-heavy execution environments. This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.
  • <li>Virtual memory, with physical memory expandable over a wide range.
  • <li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.
  • <li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.
  • </ol>
  • Some microcontroller advantages:<ol>
  • <li>low cost. There are many under 1 dollar, and just about all are under 10 dollars.
  • <li>Low power. Meaningful work can be done with 50 mW, and intermittent task many times less than that. 200 mW is "a lot" for a microcontroller.
  • <li>Small footprint. Some of the smallest have only 6 pins and come in the same package that individual transistors do. 64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.
  • <li>Direct I/O pins available intended for connection to the real world. Most pins can be directly controlled or sensed by firmware. There are no external I/O interface chips sitting on a bus required.
  • <li>Fast power up. There is no operating system to boot, drivers to install at run time, registry setting to check, etc. Most system perform their dedicated function in well under 1 second after power on. When it really matters, it's not too hard to get a system running its task in just a few ms.
  • <li>Meant to be included in ordinary circuits. Usually only a single supply voltage is required, and that can often vary over a significant range. Today's digital circuits mostly run on 3.3 or 5.0 V, which are both well supported by a wide range of microcontrollers. Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microprocessor systems.
#1: Initial revision by user avatar Olin Lathrop‭ · 2020-10-08T16:05:53Z (over 3 years ago)
This site isn't appropriate for telling you what to choose.  We can, however, give you information on microprocessors versus microcontrollers.

Microprocessors and microcontrollers are intended to different applications.  As a result, they have different capabilities, and different tradeoffs of use.

<h3>Microprocessor</h3>

Microprocessors (really just "processors", the "micro" part is no longer relevant since any credible processor needs to be on a single die for speed) are intended to support general purpose computing platforms.  It is expected that there is a user that can select many different operations arbitrarily, some of them concurrently.  Since a user is assumed, user-interface hardware is usually expected to be present.  This includes a standard way of driving a screen, keyboard, mouse, etc.  It also generally includes connectivity, like ethernet, USB, and the like.  Some form of local mass storage is also expected, which is used to implement a file system presented to the user.

Microprocessors are usually chip sets.  The main processor and some of its cache may be on a single chip, but that chip generally can't run by itself without significant support circuitry.  The main chip implements I/O busses that other chips connect to.  These other chips are often integral parts of the overall processor, and are often specific to particular processor families.

All the hardware peripherals, file system, and communications require a lot of software complexity.  Such systems were therefore generally used with an operating system that manages these, and provides hardware-independent abstractions.  It also handles virtual memory, multiple processes that must be assumed are hostile to each other, standard communications like TCP and USB, and many other things that are easy to take for granted.

<h3>Microcontroller</h3>

Microcontrollers are intended for dedicated embedded applications.  They are therefore optimized for cost, power, and ease of electrically integrating into a circuit.  Flexibility is sacrificed to be able to do a single task well, reliably, cheaply, and in a small footprint.  The program and data memory is built-in, as are other simplified peripherals.  There are no I/O busses for hanging more memory or additional peripherals off of.  You get what is built in.  If you need more, you use a model with more.  That will of course cost more, use more space, and probably more power.

The I/O pins are meant to control or sense external signals directly.  Most pins can be driven or sensed individually under firmware control.

Since the complexity and demands of dedicated embedded applications vary widely, there are a wide range of microcontrollers that include just enough to support the many different applications.  Microcontrollers range from something like a PIC 10 with as little as a dozen bytes of ram and a few hundred program memory words with a 1 MIPS processor, to chips with Mbytes of RAM/ROM and 100s of MIPS processors.

Products with dedicated embedded microcontrollers can be produced in large quantities.  Spending only a few 10s of cents on the minimum microcontroller for the job, versus a few dollars on an unnecessarily capable one can make a real difference.  This is why there are so many more microcontrollers than more general purpose microprocessors.

<h3>Tradeoffs</h3>

Some microprocessor advantages:<ol>

<li>Can run arbitrary programs.

<li>Operating system support to abstract and virtualize hardware resources.

<li>High flexibility.  You decide on the fly what to run.

<li>More advanced and wider choice of software development environments.

<li>Can support more resource-heavy execution environments.  This includes interpreters like Python, various "byte code" virtual architectures (Java, .Net) and languages that implicitly require heavy run-time support.

<li>Virtual memory, with physical memory expandable over a wide range.

<li>Generally faster, although some of that gets used up in the many layers of abstraction, runtime environments, and the like.

<li>Good math computation capability, wide floating point formats, some transcendental functions like sin, cos, sqrt and the like in hardware.

</ol>

Some microcontroller advantages:<ol>

<li>low cost.  There are many under 1 dollar, and just about all are under 10 dollars.

<li>Low power.  Meaningful work can be done with 50 mW, and intermittent task many times less than that.  200 mW is "a lot" for a microcontroller.

<li>Small footprint.  Some of the smallest have only 6 pins and come in the same package that individual transistors do.  64 pins is already "big", but still nowhere near the 100s of pins of a modern microprocessor.

<li>Direct I/O pins available intended for connection to the real world.  Most pins can be directly controlled or sensed by firmware.  There are no external I/O interface chips sitting on a bus required.

<li>Fast power up.  There is no operating system to boot, drivers to install at run time, registry setting to check, etc.  Most system perform their dedicated function in well under 1 second after power on.  When it really matters, it's not too hard to get a system running its task in just a few ms.

<li>Meant to be included in ordinary circuits.  Usually only a single supply voltage is required, and that can often vary over a significant range.  Today's digital circuits mostly run on 3.3  or 5.0 V, which are both well supported by a wide range of microcontrollers.  Microprocessors, in contrast, usually require multiple and specific power voltages, and these are often not "convenient" for ordinary circuits not intended for implementing microcontroller systems.