Обсуждаем контроллеры компании Atmel.
Ответить

не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 06:42:06

Добрый день! использовал мк atmega8. по неопытности использовал внутренний осциллятор, выставил частоту на 8мгц. отправляются данные по uart, изредка приходили кракозябры. скорость обмена 9600. В то время наступили холода, и начал замечать что данные приходят не верно. т.к. в офисе все работало. из 10 сделанных плат около 5 работает не верно. Видимо придется колхозить кварц дополнительно? или уменьшить частоту осциллятора до 1мгц? по какой причине это могло произойти, изза холода начала меняться частота осциллятора? или же у атмег начала плавать частота?

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 06:47:57

ты сам ответил - из-за холода начала меняться частота внутреннего осциллятора.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 07:20:24

У мега8 только 1 мгц генератор калиброван. Или калибруйте 8, или спускайтесь на 1.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 08:01:39

да, можно в программаторе прочитать калибровочное число для 8 МГц и потом в прошивке вписать его в калибровочный регистр.
но температурная зависимость частоты останется. и хватит ли ее для устойчивой синхронизации всей телеграммы?
самое надежное - поставить кварц.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 08:12:09

Человеку как то делал ручную подстройку внутреннего генератора. Т.е., заказчик имел возможность ручками подстраивать частоту по uart.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 08:18:39

Можно простую програмку написать, где в OSCCAL значения записывать и выводить на UART, будет типа:
Спойлермусор, еще мусор, куча мусора...
ж═≤Иж░ІХ▒≥║Жж═≤Иж░ІХ▒≥║Жж═≤И├ж░ІХ▒≥║Жж═≤И√жvy▒Y≥vI║AИV2
it works with OSCCAL=173
it works with OSCCAL=174
it works with OSCCAL=175
it works with OSCCAL=176
it works with OSCCAL=177
it works with OSCCAL=178
it works with OSCCAL=179
it works with OSCCAL=180
it works with OSCCAL=181
it works with OSCCAL=182
it works with OSCCAL=183
it works with OSCCAL=184
it works with OSCCAL=185
it works with OSCCAL=186
it works with OSCCAL=187
it works with OSCCAL=188
it works with OSCCAL=189
it works with OSCCAL=190▀K╨zK

мусор...

потом взять среднее значение...
Можно припаять часовой кварц - у меня на меге48 без конденсаторов работает и изучить апликейшн AVR055

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 08:35:05

Именно так и делал. И даже это можно автоматизировать.
Делал и второй вариант - там был асинхронный кварцевый генератор на 32 кгц.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 09:35:19

У современных AVR RC осциллятор имеет очень хорошую термокомпенсацию. Если МК принимает пакеты извне, то можно по ним сделать коррекцию.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 12:11:54

Да тут не важно, какой кварц. ЮАРТ кварцевать надо. А будет это 32768 и расчет OSCCAL или BAUDRATE, или это будет кварц на 1/4/8/16МГц - не важно.
Важно, что у Меги8 должны быть свободны PORTB6/7.
А если они заняты - то тут уже только пляски с бубном.
Например, если ПО позволит - софтовый уарт с подстройкой скорости передатчика по принимаемым данным.
Что то похожее изобретали тут в одной из веток форума...

Добавлено after 1 hour 3 minutes 32 seconds:
вдогонку.
Вот тут обсуждалась стабильность юарта без кварца.
https://radiokot.ru/forum/viewtopic.php ... 0#p3942250

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 12:36:40

ЮАРТ кварцевать надо.

Всё прекрасно работает без всяких кварцев. Причём в широком диапазоне температур.

Re: не корректно приходят данные c uart в компьютер

Пт сен 10, 2021 13:05:30

parovoZZ, или пример прекрасно работающего юарт на меге8 (см. вопрос ТС), или сообщение не соответствует действительности.
Если есть пример - научите ТС и остальных, как .
А то сказанули, абы сказануть?

Re: не корректно приходят данные c uart в компьютер

Ср янв 25, 2023 18:17:12

Добрый день, Друзья.
Пытаюсь из меги8 по uart организовать передачу на комп. Пытался передавать на разных скоростях от 2400 до 115200, с одним стопом и с двумя.
Сначала пытался передавать строку, потом одиночный символ или число в UDR передавать.
Но терминал мне пишет либо <break> либо <0x80><break> Подскажите куда копать.

атмега8а кварц 8Мгц, прошиваю с верефикацией. В качестве приемника USB_UART CH340G

Добавлено after 3 hours 31 minute 8 seconds:


Пока ждал премодерации сообщения, решил посмотреть что у меня с кварцем происходит.
А там тишина полная. Хотел уже кварц перепаивать. Но вспомнил что другая мега у меня в отладочную плату воткнута :))
Мегу то я прошил, а вот записать фьюзы как то и не сообразил.
Я конечно вычитал что <break> в консоли может возникать от несоответствия скоростей приемника и передатчика.
Но я то был полностью уверен что мега использует скорость которую я выставил, а она похоже была в 8 раз ниже. :))

Вот и получил себе пол дня мучений с <break>ами в консоли.

Re: не корректно приходят данные c uart в компьютер

Ср янв 25, 2023 18:32:20

В даташите есть раздел, где указаны параметры кварц(ев), рекомендуемых к применению с USART при соответствующих настройках.
Смотрим режимы с минимальной погрешностью.
Для 8 МГц в моем (даташит на атмегу 8А - 8159D)погрещность в 0% там только от скорости 250к, для скорости 9600 - 0,2%...
:roll:

Re: не корректно приходят данные c uart в компьютер

Ср янв 25, 2023 18:39:59

Спасибо.
Разобрался. Дело было во фьюзах по умолчанию.
То есть атмега работала не на 8Мгц, а на 1Мгц. А я то все выставлял по таблице для 8Мгц.
Вот и выходило что скорость атмеги и скорость терминала не соответствуют.
Ответить