Does Arduino Uno have max 8-bit or more resolution?

Also, please don’t cross-post.

Moderator edit: emphasis added.

And doesn't that mean voltage is divided 256 steps?

If it had then it would but it hasn't so it doesn't.

Don't mix it up with the 8 bit resolution of the PWM accessed through the badly named analogWrite call. It can only be considered an analog output once you filter it with and external circuit. See this for information about PWM:-

I don't know why the tutorial calls this an "obfuscation"

No nor do I, unless they are trying unsuccessfully to be friendly.

AWOL, another website says: "8 bit means that this controller can process only 8-bits of data at a time". Does it mean each time Arduino sends a 8-bit chunk? But I thought serial protocol is one bit at a time always? How can one wire send 8 bits instantly? Another tutorial says: "The serial communications protocol sends data in 8-bit chunks, or 1-byte at a time." How can "at a time" a wire can carry 8 different states???

You're confusing a whole load of concepts there. Serial frames consist normally of ten bits - start bit, eight data bits and a stop bit, all transmitted one after the other. Internally, the processor works on units of eight bits, fetched from memory in parallel along eight bit wide data paths.

So why do all tutorials say "at a time". Aren't the bits being sent one after another which means there is nothing as a chunk in real. Or am I still wrong??

edit: So this "8 bit at a time" is about internal chips?? I thought it is about sending data from Arduino to PC for example(serial communication or usb).

So why do all tutorials say "at a time"

Which tutorials, please?

Still wrong. You are confusing serial data - one bit at a time. With the width of the data bus inside the processor 8 bits at a time.

1 byte (at a time) = 8 bits (at a time). Don't confuse byte versus bits.

Grumpy_Mike many thanks. I think now I started to understand a bit. So bit thing is as follows:

8-bit micro-controller means the chips inside sending 8-bits to each other at a time. Chunk is meaningful here.

Serial data is "1 bit" at a time.

10-bit is the resolution of the ADC converter.

8-bit also accounts for the resolution of the DAC converter.

Did I pass the exam now??:)

Almost; there is no DAC.

Last question: Is that because analogWrite is not outputting continuous signal and should be smoothed ? You should write a tutorial btw, your explanations are very clear. 8)

The PWM signal output and modified by analogWrite is continuous. You can smooth it with a low pass filter to produce a DC analogue voltage.

Threads merged.

You should write a tutorial btw,

Well I did write to one I linked to plus all the others on that site.

Threads merged

Don’t we just hate time-wasting cross-posters?
(Don’t bother to answer that, it was a rhetorical question)

Exam number two:

The ATmega328 is a 8-bit chip. Draw a big rectangular on a paper, that is the ATmega328. Draw an 8-bit data bus inside. Draw all the parts inside with the number of bits. Serial port (8-bit register access), serial data going in or out can be 8 or 7 bits. A single ADC of 10-bit, and a mux to select the analog input. Three timers, two of 8-bit, one of 16-bit. EEPROM, 8-bit. I2C (wire), 8-bit. Serial data going in or out is a number of 8-bit data. TWI, 8-bit. Serial data going in or out is 8-bit (not always).

Question 1: If the ATmega328 chip is internal 8-bit, how can it do calculations with 16-bit or 32-bit integers, and how with 32-bit floating point numbers ?

Question 2: What is the best way to send the 10-bit ADC value via an serial port ? How many bytes would probably be needed ?

Erdin, I think I have answer to your 2nd question. I believe that 10 bits will be stored in two 8 bits in computers(16 bits in total for each sample). It seems like 6 bits will be wasted for each sample. 16 bit ADC would be more efficient but more expensive(also slower?). What do u think? My answer is 2 byte. Is that true?

Also regarding 8 bit topic; can we say that 8 pins of ATMEGA chip is sending 8 bits at a time?? If so which pins are they?

Your first question is beyond my knowledge.

Don’t confuse what the compiler does with what the underlying chip instructions can do! The compiler works in 2-byte ints. It combines multiple bytes as necessary to make it transparent to you. That is why using bytes can sometimes be faster than using ints on these machines.

For the SPI, I2C (called TWI), and Serial pins, see the page about the Uno,

Answer to question 1: Everything beyond 8 bit is done in software. The microcontroller shifts/adds/shuffles the 8-bit data until it finally gets the result. The compiler generates that code.

Answer to question 2: Yes, 10 bits are stored in two bytes (that is 16 bit). But.... With the serial port (also called UART), often readable text is used. So the text "0" or "1023" could be transmitted. It is easier to use a character to start and to stop. Let's use '<' to start, and '>' indicates a stop. So the text becomes "<0>" or "<1023>". That is often followed by CarriageReturn and LineFeed. The result is 5 to 8 byte. Assuming one startbit and one stopbit per byte for the serial protocol, makes the total is 50 to 80 bits. The 10 bit of the ADC are transmitted over the serial line as 50 to 80 bits. And it is perfectly normal.

Does "32-bit operating system computer" mean that the communication between the ICs inside the computer is actualized with '32-bit information at a time'? For example:

Let's say we have a computer and its micro-processor's clock rate is 1GHz. What I understand is that: In 1/1000.000.000 of a second (in a billionth of a second) an IC sends out 32-bit information(with its 8 pins) "at a time" to other ICs.

Did I get the big picture?