По началу и не думал об этом, а потом как глянул форумы: частенько пишут - низяяя!!!
UART без кварцевого резонатора
UART без кварцевого резонатора
Реально ли в обычных условиях, при комнатной температуре, без калибровок и подстроек использовать встроенный UART без кварцевого резонатора в МК AVR Tiny...?
По началу и не думал об этом, а потом как глянул форумы: частенько пишут - низяяя!!!
Хотелось бы узнать ваше мнение и опыт.
По началу и не думал об этом, а потом как глянул форумы: частенько пишут - низяяя!!!
Не променяю медь на ржавую несгорайку!
Re: UART без кварцевого резонатора
Точность заводской калибровки встроенных RC-генераторов у большинства современных МК составляет 1% и меньше.
Поэтому если правильно подобрать НЕдробный коэффициент под какую-то конкретную скорость обмена - да, можно.
На практике же и при ошибке в 2-3% в скорости UARTа обмен данными происходит без ошибок.
Напр, PIC16F688 с тактовой 8MHz абсолютно нормально "летает" на 115200.
Поэтому если правильно подобрать НЕдробный коэффициент под какую-то конкретную скорость обмена - да, можно.
На практике же и при ошибке в 2-3% в скорости UARTа обмен данными происходит без ошибок.
Напр, PIC16F688 с тактовой 8MHz абсолютно нормально "летает" на 115200.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Re: UART без кварцевого резонатора
abc писал(а):Точность заводской калибровки встроенных RC-генераторов у большинства современных МК составляет 1% и меньше.
Пример в студию! Типа ссылку на datasheet!
А производитель обещает +-10% для ATtiny13. И +- 2% при User Calibration. Т.е. при посылке одиночных байтов еще как-то поработает, а иначе облом. Уж не говоря о целесообразности подкручивания к 8-лапой мелюзге UART. Проще на FT232 bitbanging юзать.
Человек - это звучит гордо, а обезьяна - объективно...
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: UART без кварцевого резонатора
Проще на FT232 bitbanging юзать
сейчас проще и дешевле решение есть: http://tqfp.org/stm32/novoe-semeystvo-s ... varca.html
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: UART без кварцевого резонатора
Для той же Tiny13

Как можно видеть, частота зависит не только от температуры, но еще и от напряжения питания. Но. +/- 5% от температуры 25 град - это реальный разброс. Так человек сказал, что температура комнатная - и меняться не будет. Т.е. можно считать, что частота стабильна.
А +/- 10%, которые прозвучали - так это точность заводской калибровки. Если есть осцилл - можно откалибровать кристалл самому - на то есть специальные ячейки. А чтобы исключить накопление ошибки в следствие неточности выставления частоты - то можно (и желательно) вводить небольшую программную задержку после передачи определенного количества байт (например, отправлять пакетами не более 8 байт).
Как можно видеть, частота зависит не только от температуры, но еще и от напряжения питания. Но. +/- 5% от температуры 25 град - это реальный разброс. Так человек сказал, что температура комнатная - и меняться не будет. Т.е. можно считать, что частота стабильна.
А +/- 10%, которые прозвучали - так это точность заводской калибровки. Если есть осцилл - можно откалибровать кристалл самому - на то есть специальные ячейки. А чтобы исключить накопление ошибки в следствие неточности выставления частоты - то можно (и желательно) вводить небольшую программную задержку после передачи определенного количества байт (например, отправлять пакетами не более 8 байт).
- Вложения
-
- 12345.png
- (29.3 КБ) 2424 скачивания
Fucking static initialization order fiasco
Re: UART без кварцевого резонатора
Реально ли в обычных условиях, при комнатной температуре, без калибровок и подстроек использовать встроенный UART без кварцевого резонатора в МК AVR Tiny...?
Да. На tiny13 успешно использовал самописный софтовый UART; в серии ATmega у меня тоже никогда проблем с UART'ом (тут уже с аппаратным) без кварца не было. Тем не менее, в устройства с UART'ом, предназначенные для продажи, я от греха подальше ставлю кварцы.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: UART без кварцевого резонатора
Лично у меня при комнатной температуре проблем не было, работал с тини2313, тини24 (программно-аппаратный через USI), мега8535, мега48, в основном 9600 или 38400 бит/с, но знаю пару человек, у которых возникала проблема с приемом-передачей у конкретного экземпляра (2313), лечилось минимальным подкручиванием OSCCAL. Для самоделок, работающих в комнатных условиях ИМХО можно не заморачиваться. Правда как минимум у одного из устройств всегда был кварц (или это был комп), для случая, когда с обоих сторон интерфейса кварца нет, у меня статистика отсутствует, теоретически ситуация может быть хуже...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Re: UART без кварцевого резонатора
Как говорят на забугорном - it depends...abc писал(а):...нормально "летает" на 115200.
Зависит он приёмника на другой стороне, например.
По своему опыту могу сказать, что с мегой16 от кварца на 16МГц в паре с FT232R на 115200 было что сбоило, ошибка по спецификации -3.5%. Пришлось двойную скорость включать в меге, тогда ошибка +2.1% - в моём случае помогло. Если оно при таких ошибках работает, то если подобрать скорость (делитель) с ошибкой не более 0.5%. Изменение частоты встроенного генератора в пределах 20 градусов даст около 2% разброса (картинку тут уже привели), т.е., грубо, всего около 2.5%.
Если обратить внимание на то, что на малых скоростях ошибка, как правило достаточно мала, то можно подобрать делитель с малой ошибкой. Тогда при условии вышеизложенного, даже при нестабильном тактировании можно использовать UART на малых скоростях. Когда ошибка делителя UART и ошибка генератора суммарно не превысят 2-3%. Более 5%, если память не изменяет, нельзя. IMHO, как то так.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: UART без кварцевого резонатора
По своему опыту могу сказать, что с мегой16 от кварца на 16МГц в паре с FT232R на 115200 было что сбоило, ошибка по спецификации -3.5%.
Да, значения бодрейта желательно выбирать так, чтобы теоретическая ошибка (та, что в таблице в даташите) не превышала 0.5 - 1%.
У меня есть проект, в котором через UART загружается содержимое внешней флешки на 10 МБайт (реально было от трех до семи мегабайт). Поскольку процедура выполняется в процессе производства одноразово, кварц я для удешевления не ставил. Там стоит ATmega48, работающая от внутреннего генератора на 8 МГц. Данные загружаются на скорости 250 кБод. При этом ни на одном из произведенных устройств ошибок из-за рассинхронизации я не отмечал (загрузчик их контролирует и сообщает в случае обнаружения). Ошибки, кстати, были, когда я в процессе передачи данных паяльник из розетки вынимал.
Правда как минимум у одного из устройств всегда был кварц (или это был комп)
Ценное замечание. У меня, кстати, аналогично.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: UART без кварцевого резонатора
SergeBS писал(а):abc писал(а):Точность заводской калибровки встроенных RC-генераторов у большинства современных МК составляет 1% и меньше.
Пример в студию! Типа ссылку на datasheet!
а, сорри, я ж не думал, что у атмела так все запущено )
Я пользую PIC-и, там все чОтко :
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Re: UART без кварцевого резонатора
abc писал(а):Я пользую PIC-и, там все чОтко :
Ну просто Microchip раздвигает пальцы, что на заводе калибрует с точностью 1% (T=25 С, Vdd=3.5 V) а реально - примерно как у Atmel. Маркетинг.
Человек - это звучит гордо, а обезьяна - объективно...
Re: UART без кварцевого резонатора
эм, ну хорошо, 2%
во всем диапазоне питающих напряжений и при температуре от 0 до 85
но не 5 и не вышеозвученные 10
во всем диапазоне питающих напряжений и при температуре от 0 до 85
но не 5 и не вышеозвученные 10
Re: UART без кварцевого резонатора
abc писал(а):эм, ну хорошо, 2%
во всем диапазоне питающих напряжений и при температуре от 0 до 85
но не 5 и не вышеозвученные 10
Ну все-таки не во всем диапазоне. Во всем будет 5% (2 V). Реально одни (Microchip) пишут: "поимеете 1%!", при этом скромно умалчивая, что в тепличных условиях. Другие (Atmel) пишут: "поимеете не хуже 10%", не важно при каких условиях. По факту - так одинаково получается, если графики и цифирки сравнить. Маркетинг разный, а технология одна.
А по сути уже озвучено - на низких скоростях и в хороших условиях без кварца на МК потянет. Другой вопрос, что у меня дома, например, кондея нет. Ну и днем +30 легко. А во всяких Крымах и т.п. - до +40 легко долетит. С соответствующим обломом...
Человек - это звучит гордо, а обезьяна - объективно...
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: UART без кварцевого резонатора
Посвежее тини микроконтроллеры Атмел содержат внутри температурный сенсор и также можно измерить напряжение питания без внешних схем, поэтому можно легко ввести корректировку частоты внутреннего генератора.
Re: UART без кварцевого резонатора
SergeBS писал(а):Ну просто Microchip раздвигает пальцы, что на заводе калибрует с точностью 1% (T=25 С, Vdd=3.5 V) а реально - примерно как у Atmel.
Та не надо ля-ля... Есть разные применения... с разными температурными диапазонами...
"Я не даю готовых решений, я заставляю думать!"(С)
- SlovachevskyDV
- Родился
- Сообщения: 4
- Зарегистрирован: Чт май 21, 2015 13:54:40
Re: UART без кварцевого резонатора
А у меня проблема возникла.
Девайс на меге8
Скорость мизерная: 2400
Сбои заметил когда похолодало. Причем принимает данные четко. А отправляет бред. Если температура воздуха падает ниже 20. Ткнешь паяльником в проц, работает какое-то время нормально. Через 15-20 мин опять сыплет мусор.
Девайс на меге8
Скорость мизерная: 2400
Сбои заметил когда похолодало. Причем принимает данные четко. А отправляет бред. Если температура воздуха падает ниже 20. Ткнешь паяльником в проц, работает какое-то время нормально. Через 15-20 мин опять сыплет мусор.
-
Самсусамыч
Re: UART без кварцевого резонатора
[uquote="Upgrader",url="/forum/viewtopic.php?p=2079938#p2079938"]без калибровок и подстроек использовать встроенный UART без кварцевого резонатора в МК AVR Tiny...?[/uquote]
Про все tiny не скажу, а вот с ATtiny2313 были засады с аппаратным UART… одни без кварца по UART работали без сбоя, другие не хотели ни в какую нормально работать пока не поставишь кварц. С ATtmega8, ATtmega48, ATtmega88, ATtmega168, ATtmega328, ATtmega8535, ATtmega32, такого не наблюдалось.
Про все tiny не скажу, а вот с ATtiny2313 были засады с аппаратным UART… одни без кварца по UART работали без сбоя, другие не хотели ни в какую нормально работать пока не поставишь кварц. С ATtmega8, ATtmega48, ATtmega88, ATtmega168, ATtmega328, ATtmega8535, ATtmega32, такого не наблюдалось.
Re: UART без кварцевого резонатора
Оскалом нужно играться. Потому как одни (m8, m32, m8515) калибруются при 5, а другие (t2313, mХ8) при 3 вольтах, не знали?
- GoldenAndy
- Поставщик валерьянки для Кота
- Сообщения: 1925
- Зарегистрирован: Чт июл 28, 2016 07:58:37
- Откуда: Kyiv, UA
- Контактная информация:
Re: UART без кварцевого резонатора
У меня была мега8, которая при 5 вольтах, комнатной температуре работала на частоте 8.55 МГц (проверил, запустив таймер и посмотрев, чего на выходе таймера).
В принципе, если это два своих устройства и протоколы данных, пересылаемых по уарт, под них вы пишете сами, то можно заморочиться с автодетектом скорости на слейве.
Тут несколько вариантов:
1. Циклическая посылка заранее известного приемнику синхробайта. Приемник крутит делитель УАРТа, пока не пошлучит устойчивое чтение синхробайта, после чего отвечает мастеру - что ок, настроился.
2. отслеживать перепад на приемном пине, далее тупым подсчетом определять длительность сигнала, после чего вычислять делитель для уарт, включать уарт и сообщать, что готовы принимать данные. Требует отдельного синхробайта перед данными.
3. Софтовый уарт с автосинхронизацией. Либо по первому синхробайту, либо сильно думать алгоритм и сразу ловить данные (но это тяжелее).
ПС. Почитайте тему https://radiokot.ru/forum/viewtopic.php?f=57&t=160816 - там у человека была проблема подружить мелкую тиню и большой МК.
Я в голове человеку придумал алгоритм софтового уарта с синхронизацией по первому байту 0х55 - на страничке 6.
Dimon456 на восьмой страничке по алгоритму накидал код, тестировал - +/-1 МГц получился разброс. На 10 странице - то, что у Dimon456 после всех оптимизаций получилось в результате.
В принципе, если это два своих устройства и протоколы данных, пересылаемых по уарт, под них вы пишете сами, то можно заморочиться с автодетектом скорости на слейве.
Тут несколько вариантов:
1. Циклическая посылка заранее известного приемнику синхробайта. Приемник крутит делитель УАРТа, пока не пошлучит устойчивое чтение синхробайта, после чего отвечает мастеру - что ок, настроился.
2. отслеживать перепад на приемном пине, далее тупым подсчетом определять длительность сигнала, после чего вычислять делитель для уарт, включать уарт и сообщать, что готовы принимать данные. Требует отдельного синхробайта перед данными.
3. Софтовый уарт с автосинхронизацией. Либо по первому синхробайту, либо сильно думать алгоритм и сразу ловить данные (но это тяжелее).
ПС. Почитайте тему https://radiokot.ru/forum/viewtopic.php?f=57&t=160816 - там у человека была проблема подружить мелкую тиню и большой МК.
Я в голове человеку придумал алгоритм софтового уарта с синхронизацией по первому байту 0х55 - на страничке 6.
Dimon456 на восьмой страничке по алгоритму накидал код, тестировал - +/-1 МГц получился разброс. На 10 странице - то, что у Dimon456 после всех оптимизаций получилось в результате.


