реклама на сайте
подробности

 
 
> 1-wire slawe на МК, у кого такое получилось?
Шалапут:-)
сообщение Nov 27 2008, 15:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 11-01-07
Пользователь №: 24 303



Всем доброе время суток!
Пытаюсь сделать подобие 1-wire сети на МК.
С реализацией Ведущего проблем не возникло, он успешно генерит ресет импульс, и таймслоты тоже, и считывать всё тоже умеет.
Но проблема возникла с Ведомым. В интернете всего полно по реализации ведущего, и "кот наплакал" про Ведомого. за то есть много документации о том, как должны себя вести ведомые устройства в сети.
Решил придельно упростить интерфейс до такого:

1) Мастер:отправляет ресет импульс
2) Ведомый: отправляет импульс присутствия
3) Мастер: Проверяет, отправил ли кто то импульс присутствия?, если нет, к п.1
4) Мастер: генерит начало таймслота, переменная BIT_COUNT_M=0;
5) Ведомый: после начала слота опускает линию, или оставляет в лог "1"
6) Мастер: ждет малость и считывает значение с шины, записывая его. BIT_COUNT_M=BIT_COUNT_M+1
7) Ведомый: ждет и отпускает линию
8) Мастер: Если BIT_COUNT_M<8 переход к см. п 4, иначе, отпускаем линию и возвращаем значение

Т.е. как видим, мастер просто оправшивет устройство.
Но ведомый иногда не распознаёт начала тайм слота, а ресет импульс - один из трёх раз.
Частота ошибок при передаче данных, примерно 1 бит на 10 байт.
Почему так? как устранить это?

Вся программа ведомого работает в обработчике таймера, который работает с периодом 10 мкс,
Связываю две ATmega-16, использую АВР студию 4.14 билд 589, GCC компилятор 20080610.
Для опускания шины в ведомом использую _delay_us().

На графиках видно, о чем я говорю...
Может, кто то сталкивался с подобным? Помогите, плиз)
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Роботы делают роботов - предел автоматизации
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Nov 27 2008, 15:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Для реализации 1W slave у МК должна быть быстрая реакция на прерывание от вывода, т.к. успеть выставить данные нужно в течение 10мкс после начала слота. А уж чем у Вас слейв так занят - Вам виднее.
Go to the top of the page
 
+Quote Post
Шалапут:-)
сообщение Nov 28 2008, 08:44
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 11-01-07
Пользователь №: 24 303



Цитата(aaarrr @ Nov 27 2008, 17:17) *
Для реализации 1W slave у МК должна быть быстрая реакция на прерывание от вывода, т.к. успеть выставить данные нужно в течение 10мкс после начала слота. А уж чем у Вас слейв так занят - Вам виднее.

Ноги МК под прерывания заняты. Снимаем значения с ног по таймеру, с интервалом 10 мкс при частоте 8 МГц, в таймере проверяем несколько условий, и записываем несколько переменных типа char


--------------------
Роботы делают роботов - предел автоматизации
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 28 2008, 08:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Шалапут:-) @ Nov 28 2008, 11:44) *
Ноги МК под прерывания заняты. Снимаем значения с ног по таймеру, с интервалом 10 мкс при частоте 8 МГц, в таймере проверяем несколько условий, и записываем несколько переменных типа char

С таким подходом ничего не выйдет: через 10 мкс после начала слота мастер должен уже считать данные, а у Вас слейв в лучшем случае только заметит спад на линии.

Увеличивайте времянки - это будет уже не 1W, зато будет работать.
Go to the top of the page
 
+Quote Post
Шалапут:-)
сообщение Nov 28 2008, 10:28
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 11-01-07
Пользователь №: 24 303



Цитата(aaarrr @ Nov 28 2008, 10:50) *
Увеличивайте времянки - это будет уже не 1W, зато будет работать.

Временные интервалы увеличил приверно в 10 раз... и на графиках с увеличенными временными интервалами

Цитата(MrYuran @ Nov 28 2008, 11:52) *
Кстати, если подумать, можно это всё и по одной линии сделать.
Получится 1-Wire-UART

Уже думал над этим.. понял, что лучше сделать эдакий 1-wire софтверный..
Аппаратный UART уже занят, к сожалению на нем есть устройство, с которым контроллер постоянно обменивается информацией... А если ещё к ним включить другие устройства, то боюсь, что они не подружаться при наличии в шине двух мастеров, которые могут одновременно что то передавать в линию, и тем самым себя заглушат вовсе, один будет тянуть вверх, другой вниз... Если бы его можно было применить, я бы так и сделал.
Причина редактирования: Излишнее цитирование.


--------------------
Роботы делают роботов - предел автоматизации
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Шалапут:-)   1-wire slawe на МК   Nov 27 2008, 15:05
|- - xemul   Цитата(Шалапут:-) @ Nov 28 2008,...   Nov 28 2008, 11:30
|- - Шалапут:-)   Цитата(xemul @ Nov 28 2008, 13:30) А ванв...   Nov 28 2008, 14:51
|- - Denis R. Akimov   У меня та же самая проблема. Пытаюсь строить 1-wir...   Mar 18 2009, 14:26
- - MrYuran   Основная фича 1-wire это питание слэйва через сигн...   Nov 28 2008, 09:52
- - QuickWitted   Цитата(Шалапут:-) @ Nov 27 2008,...   Mar 28 2009, 17:08
|- - asket   господа! Подскажите есть ли готовые решения мо...   Oct 3 2009, 11:23
|- - SasaVitebsk   Цитата(asket @ Oct 3 2009, 14:23) ... sla...   Oct 3 2009, 21:48
|- - asket   Цитата(SasaVitebsk @ Oct 4 2009, 01:48) Д...   Oct 4 2009, 19:40
|- - rezident   Цитата(asket @ Oct 5 2009, 01:40) Мне это...   Oct 4 2009, 19:48
|- - SasaVitebsk   Цитата(rezident @ Oct 4 2009, 22:48) Для ...   Oct 5 2009, 16:32
|- - asket   У нас CAN используется в качестве магистральной ши...   Oct 6 2009, 08:54
- - Rst7   Цитатаи мало того на 1 wire висят исполнительные у...   Oct 6 2009, 10:14
- - asket   Цитата(Rst7 @ Oct 6 2009, 14:14) И много ...   Oct 6 2009, 17:25
- - e-serg   Цитата(Rst7 @ Oct 6 2009, 19:14) И много ...   Nov 5 2009, 11:38


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.02335 секунд с 7
ELECTRONIX ©2004-2016