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

Обсуждаем контроллеры компании Atmel.
Ответить
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

тут хорошо подошел бы принцип протокола 1-wire.
там нет стабильной частоты и нет, соответственно, фиксированной длительности импульсов.
и при передаче и при приеме мастер инициирует передачу каждого бита. а после инициирующего короткого импульса через определенное время проверяется наличие нуля или единицы на линии.
и даже в описании этого протокола указываются огромные "ворота" для проверки пришедшего бита.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Несложен в реализации. Однажды подключал 16 ус-в с индикаторами 1602 на конце. С паразитным питанием! Правда, на каждое ус-во была своя пара.)
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

например, у датчика температуры DS18B20 в его рабочем диапазоне температур и диапазоне напряжения питания частота его генератора будет изменяться очень сильно, намного больше, чем у автора темы. и только протокол 1-wire с синхронизацией КАЖДОГО бита позволяет с ним общаться.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

А будет ли работать 1-wire при таком разбросе питания, как у меня (2,5 - 4,3В)? Там резистор подтягивающий на 4,7к должен быть вроде..
Реклама
Эиком - электронные компоненты и радиодетали
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

О резисторе забудьте. У вас то физика другая. Да и логика будет упрощённая.
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

подтяжка обязана быть. иначе как оптрон будет передавать уровень на вход.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

делал я както 1вире изолятор на 2х оптопарах - работало хорошо... (найти не смог... если надо, чуть позже заново нарисую)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="Starichok51",url="/forum/viewtopic.php?p=3589868#p3589868"]подтяжка обязана быть. иначе как оптрон будет передавать уровень на вход.[/uquote]
Железо не меняется - меняется софт!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

А скорость? Мне нужно отправить 2 байта запроса и получить 6 байтов ответа (возврат двух байтов запроса для контроля при совпадении, два байта результата АЦП, усредненного за 50 измерений и 2 байта коэффициента для пересчета и вывода на экран значения напряжения (float)). Последние 2 байта по сути являются калибровочной константой ИОН для каждой тиньки (я так придумал). И так 24 раза в цикле. Сейчас я все-таки уменьшил скорость УАРТ до 2400, повысив при этом надежность работы оптронов (при 2,0В питания уже устойчиво работает). Так вот, весь цикл опроса 24 тинек занимает чуть меньше секунды, что меня вполне устраивает. Вечером проведу эксперимент с нагревом, придумал как осуществить измерение температуры тиньки.
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Если вы хотите иметь результирующую 2400, то UART должен работать на 24000. Но, у нас будет только 3 длительности: 0 - ресет, F0 - 0, FF - 1. Т.е. это будет тот же UART только с побитной синхронизацией. По длительности они отличаются друг от друга на 100%. То есть, частота ваших ведомых может изменяться в 2 раза.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

Combatos писал(а):Мне нужно отправить 2 байта запроса
зачем? достаточно одного байта адреса.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

Для синхронизации и уменьшения кол-ва ошибок.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

как я уже сказал, протокол 1-wire с синхронизирует КАЖДЫЙ бит. какая еще синхронизация нужна?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

Провел испытания с нагревом и контролем температуры. МикроУарт работает устойчиво до 45 градусов. Выше 45 и до 70 - лезут ошибки почему-то только во втором байте из 6. Пробовал охлаждать спиртом и феном с холодным воздухом - работает без ошибок (капель 10 спирта капнул).
В принципе, устраивает такой температурный диапазон устойчивой работы. Но, в любом случае, придется настраивать задержку или калибровать OSCCAL или и то, и другое делать для каждой тиньки, что не особо радует. Что ж, можно повоевать с подобием 1-wire интерфейса (без изменения схемы). Влез бы только код в 1 кБ памяти..
Ну, или есть запасной, железный вариант: перейти на Attiny44 с внешним кварцем (на Ali стоит дешевле, чем в Украине тини13).
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

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

1-wire через два оптрона, боюсь, медленно будет. Я бы скорей в сторону манчестерского кодирования смотрел.
Для начала, можно взять за основу AppNote для меги: http://ww1.microchip.com/downloads/en/A ... n-Note.pdf
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Мой вам совет. Добейтесь работоспособности с обычным uart-ом. А затем уже играйтесь чем угодно.)
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

Так добился же! МикроУарт работает на ура!
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Combatos писал(а):Так добился же! МикроУарт работает на ура!
Ну что сказать, молодец.

То же добились кое каких результатов.
Первый вариант был на си написан, но компилятор постоянно пытался оптимизировать код, как только с ним не боролся, по этому пришлось за второй вариант браться.
Прога на asm (приемник вместе с передатчиком) весит 378 байт, можно малость еще подсократить байт 10-15 выжать.
Широкий выбор частот и скоростей.
Надо понимать, что счетчик однобайтный

Код: Выделить всё

Значение счетчика                         71      143
#define F_CPU 9600000UL   //9600000      19200   9600
#define F_CPU 4800000UL   //4800000       9600   4800
#define F_CPU 1200000UL   //9600000 / 8   4800   2400         
#define F_CPU  600000UL   //4800000 / 8   2400   1200
К примеру, изменение частоты

Код: Выделить всё

#define F_CPU 9600000UL   9,600000         19200   71
         9600000UL*2=     19,200000        19200   143
         9600000UL/2=     4,800000         19200   36
отклонение частоты +100% -50% и даже более.
В 378 байт удалось уместить код управления ядерным реактором, главное что бы ядро не начало плавиться.
Вот, протеус (в терминале надо отправить UA)
ATiny_13_uart.rar
(11.42 КБ) 193 скачивания
.
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн дек 29, 2014 21:29:32

Сообщение Combatos »

А в какой среде вы пишете программы? Код С можно посмотреть?
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Не хилый разброс получается
СпойлерИзображение
В данном алгоритме
СпойлерИзображение
Ответить

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