in a microcontroller that has a 16 bit data bit width, this means that I can transmit 16 bits data at once.. what are the instances in which higher data bit is needed in a single transmission? does it has something to do with the type of data?
Hi,
it means that internal registers of CPU , instruction Sets , ALU (which do the math operation) all are 16 bit wide. This also affect your variable (type of Data).For example :
8 bit microcontroller - it mean all of registers , memory , ..etc are 8 bit wide.
when you writing your program , you may have different type of variables for example : Byte (8bit) , int (16bit) , ... etc.it affects memory and speed of execution of your program.
let assume A,B are 8 bit variables. if you do C=A+B , your result will be 8 bit wide + a Carry bit (for overflow if the result is more than 255) and CPU usually does this in One clock cycle.
but if of the A,B are 16 bit wide , if you do C=A+B , your result will be 16 bit wide, but for doing this in a 8 bit microcontroller , CPU needs more clock cycle like between 10 to 20 depend on architecture and also moving the data between registers and memory takes more clock cycles. The result will be a much slower execution of your program.
if your microcontroller is 16 bit , for 8 bit & 16 it variables, usually there will be no speed problem, but for 32bit variables (like Log int , Float , ..etc) you will have same problem.
In a 32bit microcontroller , usually there will be no speed problem between 8 , 16 or 32 bit variable operations , but there will be in calculation using Floating point.In that case and if you really need a large amount of floating point operations there are 32bit microcontrollers with FPU unit for floating point operation at high speed.
You can start with a simple microcontroller (AVR or 8051 family or PIC) and trying and getting familiar with microcontroller concepts and after that ,move to more advanced microcontrollers.
BTW, you should really see what do you need in your project, you may think that you should go with 16bit or 32 bit HIGH SPEED microcontrollers , but the Speed or type of microcontroller (16 bi t , 32 bit) isn't the main factor, main factor is your requirements : Like what peripherals you need? Is Power usage is a problem or not (specially in battery powered applications)? what sort of calculation do you need? and how often? and ..... This may result using a simple 8 bit microcontroller without any problem. Because when you use more advanced microcontrollers (Like ARM), The learning curve will be much longer , and each family of these advanced microcontrollers are getting more more complicated than previous family.