Atmega328P UART Levels

Can somebody help me to find UART level voltages on this chip that can accept UART signals.

Does this UART Reciever pin act like a schemitt trigger Input? Whats the voltages accepts?

It runs at 5V so expect UART signal levels from 0-5V nominal.

Vil = 0.3xVcc (1.5V for a 5V Vcc) maximum and Vih = 0.6xVcc (3V for a 5V Vcc) minimum.

The Atmega328p uses TTL level signals.

Schmitt trigger is not applicable here.

For future posting please read the first topic telling how to get the best from this forum. Your mother is not one of the helpers.

The pin input diagram of the 328P has a built-in schmitt-trigger.

No need to bother.

That's right if it means you don't need it externally.

Agreed.

The UART voltage levels and high or low voltages are a percentage of Vcc.

image

Thank you everybody. I asked because I have a doubt how this SIM800L module directly connects to Atmega 328p..!

Module

SIM800L VOH = 2.7V! can this voltage detect by Atmega 328p?

This won't work with a 328p at 5V, but if you can run the 328p at 3.3V then I believe you can use it. If I understand the datasheet snippet posted by @JohnRob , then the minimum voltage for the 328p to read a '1' is 0.7*Vcc, which at 3.3V works out at around 2.31V.

VOH = 2.7V (for SIM800l): It means that this is the minimum voltage that the SIM800L Module will assert as Logic High (Output).

VIH = 3.3V (for ATmega328P): It means that this is the minimum voltage level that ATmega328P MCU will reliably detect as Logic HIgh (Input).

As 2.7V (VOH) of SIM800L is less that 3.3V (VIH) of ATmega328P, their direct interfacing will not work. The solution is to use level sifter of Fig-1.

levelSifter-4
levelshifetr-3
Figure-1;

Unless I misunderstood, the datasheet snippet at #9 says it's 0.7*Vcc?

I accept my typo mistake.

Your referral of Post-9 syas (at Vcc = 5V) : VIH = 07xVcc = 0.7x5 = 3.5 V.

The following page has specified (at Vcc = 5V) : VIH = 0.6xVcc = 3.0 V

Actually post #9 did not specify a specific Vcc and your post (the same numbers) applies to any voltage from 2.7 to 5.5V.

I wish you would not use that misleading term! It does not. :astonished:

It uses CMOS logic levels as per #9, not TTL. :roll_eyes:

1 Like

I started using TTL 50 years ago. Then came the 74HCT and 74HC families. They all used 5 volt level signaling. CMOS levels, in the past, was up to 15 volt. In that perspective talking about CMOS signals nowdays would really be misleading.
Skip the chemistry and focus on the voltage being used. You know pretty well how often newbies connect RS232 to Arduinos. What do name that signal level?
No, using the old name TTL for 5 volt signals is correct for me.

But that was 15 years ago, not now.

All very well to be stuck in the past, but please be considerate of current users! :grin:

I haven't checked the specs for 4000 CMOS family recently but I would be suprised if it is cut down to 5 volt levels.
Now and then members try to reuse various old circuitry. Knowing what TTL stand for is handy sometimes..
Look at the old converter between RS232 and whatever You prefer to name it. It's still named RS232 to TTL converter.
CMOS is the fysical technology down inside the curcuit. It's not specifying any voltage level.
What to name the 3.3 volt family? There You might be on a thinkable track.
Caring about users.... You do the opposite....

Those are the figures for running the ATmega328 at less than 2.4V, not applicable to the Arduino. The V_IH is 0.6 Vcc, ie 3.0V for a 5.0V supply, just compatible with 3.3V logic (although a bit too close for comfort, it should work if the 5V supply isn't drooping).

Is "VIH = 0.6xVcc" to make compatible with 3.3V logic or to take care of "Electrical Road Noise"?