Передача данных из множества ATtiny13A в один ATmega328P

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Еще раз - подумайте в сторону отключаемого делителя и питания тни непосредственно от батареи.
возьмите тиньку, напишите на ней тупой ногодрыг, что бы он вам делал 1 кгц на выходе.
И посмотрите на него осциллографом. И покрутите питание от 2.5 до 5.5 вольта. И посмотрите, насколько изменится частота. А потом при константном питании нагрейте тиню феном/паяльником.... И опять последите, как меняется частота.

Добавлено after 22 minutes 3 seconds:
Вот только что попробовал провернуть с мегой 8... :(

Тупой ногодрыг, 500 мкс 0, 500 мкс 1.

при 5 вольтах период сигнала 0,986 мс, частота 1015 гц
при 2.75 вольтах - период 1.113 мс, а частота - 898 гц...

Поднял до 5 вольт, погрел мегу зажигалкой.... период ... увеличился! до 0.997 мс (1003 гц....)
Вот теперь сижу и думаю... почему по графикам ДШ частота сильно зависит от температуры и слабо от питалова, а в жизни наоборот ?
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

Соберу схему, протестирую, обязательно отпишусь по результатам!
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

повесил прищепкой-биндером на плату-переходку тиню85, завел на ней ногодрыг на килогерц.
На 2.2 вольта частота ногодрыга 994 гц, на 3 вольтах - 1001 гц, 4 вольта - 1008 гц, 5 вольт - 1015 гц. К сожалению, под прищепкой погреть зажигалкой не получилось.
Т.е. во всем диапазоне питания частота меняется от -0,5% и до +1,5%....
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Вон какие люди у нас примерные! Половину работы за ТС сделали, ну надо же!) А ТС только носом крутит.(
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

[uquote="OKF",url="/forum/viewtopic.php?p=3578123#p3578123"]Вон какие люди у нас примерные! Половину работы за ТС сделали, ну надо же!) А ТС только носом крутит.([/uquote]
Не только. Разработал платку, сегодня вытравлю и начнутся эксперименты. А примерным людям огромное спасибо!
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

OKF писал(а):А ТС только носом крутит
Не крутит. А ставит натурный эксперимент.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Combatos писал(а):...431 нужен для стабилизации скорости UART...
Если использование именно UART не указано в ТЗ - смените протокол посылок на тот, где можно синхронизироваться по каждому биту. Вариантов - море.
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

[uquote="Albert_V",url="/forum/viewtopic.php?p=3578272#p3578272"]
Combatos писал(а):...431 нужен для стабилизации скорости UART...
Если использование именно UART не указано в ТЗ - смените протокол посылок на тот, где можно синхронизироваться по каждому биту. Вариантов - море.[/uquote]

В принципе, не обязательно UART. ТЗ я сам себе устанавливаю, подскажите пожалуйста оптимальный практический вариант из этого моря.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="Combatos",url="/forum/viewtopic.php?p=3578807#p3578807"]подскажите пожалуйста оптимальный практический вариант из этого моря.[/uquote]
Например, RLL (или его частные варианты FM/MFM) или манчестерский код
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

попробуйте сделать стартовую синхронизацию. Например, вот так:

Мастер у вас кварцованый. Проблема только в скорости слейвов. Неактивный уровень линии - 1. Активный - 0 (прижиманием линии к земле, как и в UART)

Мастер отправляет "Старт" импульс, прижимая линию к 0 на 15мс. Слейвы просыпаются и отсчитывают на своей скорости время прижатия. Если время прижатия линии не попадает в старт-окно (10..20мс) - слейвы считают это помехой и засыпают.
Если попадает - слушаем дальше.
Мастер через 5 мс после отпускания линии отправляет в линию несколько (8..16) импульсов длительностью 1 мс. Слейвы калибруют свою скорость по этим импульсам.

Далее, не более чем через 10 мс после последнего калибровочного импульса мастер включает свой железный uart и начинает по вами определннному протоколу обмена, используя стандартный физический протокол uart отправлять адресные запросы, как и раньше. тот слейв, к кому обратились - отвечает, используя только что вычисленные тайминги, остальные засыпают.

На скорости 9600 длина одного бита 1000/9600=0.103 мс; самое длинное прижатие к 0 - это стартбит и 8 бит нуля. Т.е. (1000/9600)*9 = 0.93 мс. Поскольку эти импульсы не подходят как старт синхронизации (10..20мс) - все слейвы, кроме избранного, будут считать это помехой и тут же засыпать.

Указанные выше тайминги - не догма. Протокол придуман на месте, вы можете придумать что то свое. Например, старт - импульс 20-30 мс, лог. 1 импульс 8-16 мс, лог 0 - импульс 2-6 мс.... И без UARTa

И да, в конце обмена лучше добавить байт контрольной суммы. Что бы сумма всех принятых байт плюс этот контрольный была равна 0х00.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="goldenandy",url="/forum/viewtopic.php?p=3578822#p3578822"]попробуйте сделать стартовую синхронизацию.[/uquote]
Стартовая синхорнизация в асинхронном UART есть аппаратная, по длительности стартового бита (читаем про asynchronous clock recovery в datasheet). Но она требует стабильности суммарной синхронизации приемника и передатчика для 8 бит данных порядка +-4% (например, если передатчик +-1%, то приемник должен быть +-3%).
Тогда как побитовая синхронизация того же манчестерского кода или FM/MFM допускает +-40%
Подозреваю, что ТС достаточно даже асинхронного UART. Но, уважая паранойю, допускаю выбор побитовой синхронизации.
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

Спасибо большое всем! Выбрасываю из схемы 431, понижаем потребление! И можно приступать к софту.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

ПростоНуб писал(а):Стартовая синхорнизация в асинхронном UART есть аппаратная
Нету. Просто сам формат позволяет вести обмен при +/-3% изменения скорости.

Я игрался с восьмой мегой и 85й тинькой.
Мега 8 - плывет от питания сильно. И от температуры тоже немного плвыет.
Тинька от питания плыла гораздо слабее.

Я уже предлагал ТС - нарисовать на его тинке ногодрыг 1 кгц и погонять ее по питанию и температуре, контролируя этот килогерц осциллографом либо частотомером. Если эксперимент покажет дельту частоты до +/-2% - то вообще ничего не нужно изобретать.

По скорости УАРТа.
Я из этой меги в комп слал простую строку, порядка 10 символов.
Строка на терминале ПК читалась без ошибок от +2,5% скорости и -4%.

С тинькой не проводил опытов, влом писать было софтовый уарт.

По подстройке скорости.
Как вариант - мастер ничего отдельно не шлет.
А начинает обмен с передачи какого то символа, например "U" - это 0x55 = 0b01010101. С учетом того, что передача идет от младшего бита к старшему, а стартовый бит - ноль, слейвы ловят длительность "нолика" - и дальше используют этот тайминг для чтения всех остальных бит и для передачи данных мастеру.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Combatos писал(а):...подскажите пожалуйста оптимальный практический вариант из этого моря.
Как наиболее простой вариант, можно сделать на основе посылок для светодиодов WS2812B. В отличие от манчестера, тут можно вообще обойтись без стартовой синхронизации. Главное, обозначить начало посылки.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="goldenandy",url="/forum/viewtopic.php?p=3578896#p3578896"]
ПростоНуб писал(а):Стартовая синхорнизация в асинхронном UART есть аппаратная
Нету. Просто сам формат позволяет вести обмен при +/-3% изменения скорости.[/uquote]
А почитать datasheet?
The USART includes a clock recovery and a data recovery unit for handling asynchronous data reception. The
clock recovery logic is used for synchronizing the internally generated baud rate clock to the incoming
asynchronous serial frames at the RxDn pin.

Мега 8 - плывет от питания сильно. И от температуры тоже немного плвыет.
Тинька от питания плыла гораздо слабее.
Мега, как я понимаю, будет синхронизироваться от кварцевого резонатора. А ATtiny ТС сам может откалибровать под выбранное им напряжение питание. Заводская калибровка на 3В.

Добавлено after 11 minutes 39 seconds:
[uquote="Albert_V",url="/forum/viewtopic.php?p=3578907#p3578907"]можно сделать на основе посылок для светодиодов WS2812B[/uquote]
Можно, но битрейт будет в полтора раза ниже, чем у манчестера для той же частоты передачи.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

ПростоНуб писал(а):А почитать datasheet?
Еще раз.
Почитайте не описание, а принцип действия этого data recovery unit.
На каждый бит, включая стартовый, идет три выборки в предполагаемой середине бита. И значение бита определяется мажоритарным голосованием. Этот механизм позволяет корректно прочитать переданный байт при разнице скоростей до +/-3%.
И не более.
А нормальная синхронизация должна автоматически корректировать делитель UBRR, подстраиваясь под частоту передатчика.
А это без измерения длительности тактовых сигналов сторонним инструментом (например, одним из таймеров) невозможно. Ибо не предусмотрено.
Ну и, кроме всего прочего - на принимающем конце стоит тня13, у которой uart'а вообще нет. А есть софтовый. Который в симплексном режиме вообще делается ногодрыгом по задержкам для передачи и периодическим чтением линии для приема. Никаких множественных выборок и подстроек там, скорее всего, нет. Хотя настройку софтовых задержек по длине стартового бита можно попробовать сделать.

Добавлено after 11 minutes:
И, кстати. Чем короче посылка, тем больше есть времени для накопления погрешности.
Можно использовать 5-битный режим, при этом использовать только младшие 4 бита. один байт передавать двумя посылками. При игнорировании старшего, пятого, бита максимальная погрешность частот может лежать в пределах +/-7%... При передаче этот пятый бит нужно устанавливать в 1, что бы контроль стоп-бита не сходил с ума.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="goldenandy",url="/forum/viewtopic.php?p=3578930#p3578930"]Почитайте не описание, а принцип действия этого data recovery unit.[/uquote]
Да в курсе я. С разумной синхронизацией было бы 10-12%, а не 3-4%.
Но откалиброванная тинька то плавает в пределах 1%. Чего, в принципе, достаточно, если, конечно, нет значительных колебаний температуры.
В противном случае - тот же манчестерский код в помощь.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

У человека - электромобиль.
Т.е. температура - от -30° и до +80°...
И питание от 2.4 до 4.5 вольт.
И выбрана самая дешевая тня13, у которой места под софт мало.

Вариантов остаться на ЮАРТе выше было предложено.
Было предложено и свой протокол написать. Даже идей народ насыпал.

Дальше ТС думает. Паяет плату. И спасет его потом только мастерство программиста :)
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

[uquote="goldenandy",url="/forum/viewtopic.php?p=3579088#p3579088"]У человека - электромобиль.
Т.е. температура - от -30° и до +80°...
И питание от 2.4 до 4.5 вольт.
И выбрана самая дешевая тня13, у которой места под софт мало.

Вариантов остаться на ЮАРТе выше было предложено.
Было предложено и свой протокол написать. Даже идей народ насыпал.

Дальше ТС думает. Паяет плату. И спасет его потом только мастерство программиста :)[/uquote]

Не, у меня электроскутер и электромотоцикл будет (сейчас в процессе изготовления). Но какая разница, если все получится, можно будет применять и на электровелосипеде, и на электромобиле. А вообще огромное спасибо, вдвойне приятно, что земляк помогает (я живу в Петропавловском под Борисполем).
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Дальше - будет интереснее...
Тут ещё не заостряли внимание на том, что задержки по фронтам и спадам (по документации на FL817) могут быть около 18µS (в реальном изделии, думаю что от 30µS) /эти времена могут быть разными для фронта и спада/...
Ответить

Вернуться в «AVR»