Возникла таже самая проблема. Нашёл в документе "AVR053: Internal RC Oscillator Calibration for tinyAVR and megaAVR Devices": Точность заводской калибровки обычно находится в пределах ±3% или ±10%, в зависимости от
устройства.
А для корректной работы последовательного интерфеса нужно не больше 3%, а лучше меньше.
Нужно при запуске устанавливать подобранное значение регистра OSCCAL, как вариант прошивка может прочитать это значение из EEPROM, если оно установлено.
В моему случае я решил проблему установкой старой 328p из Arduino UNO. Она откалибрована лучше, чем новую, чтоя купил.
У меня похажая плата. Пришлось её доработать для нормальной работы CP2102. Надеюсь мои изменения кому-то помогут. Пишите, если что не так, я только учусь...
После внесённых изменний удалось вылечит Atmega8/Atmega328p в SMD корпусе при помощи прошивки Геннадия 2.14c
Изменения:
1. Via пришлось отделить от земли, хотя на сайте разработчика на плате этой ошибки нет.
2. Добавлен 10k резистор в зоне 2 для подтяжки RST CP2102 к +5V. Может и не нужен, но отпаивать уже не буду.
3. Судя по документации резистор R29 4.7k опционеальный и в этом случае не нужен. Я его убрал. А к освободившейся площадке перепаял C5. По документации он доложен быть между VDD и GND.
4. Конденсаторы C1 и C8 я не припаивал. Они на мой взгляд не нужны. Насколько я помню C1 приводит к автозапуску лечения сразу при подключении USB порта, а не по кнопке RESET...