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

 
 
 
Reply to this topicStart new topic
Veg@
сообщение Nov 19 2009, 10:15
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416



На ATMega16 реализуются:
1. 3 прерывания (2 из которых внешние) и их обработки
2. сбор данных с 8 датчиков температуры (DS18B20) по интерфейсу 1-Wire

Интерфейс общения с датчиками реализован программно, поэтому в некоторых случаях прерывания прекращают реализацию интерфейсных задержек, в результате чего иногда приходят неверные значения температур. Для решения можно было бы запретить выполнение прерываний на время общения с датчиками, но их фиксирование является довольно важным. С другой стороны, прерывания возникают довольно часто и фильтрация неверных значений температур не спасет.
Возможно ли решение этой проблемы программно или же необходимо использовать контроллеры с аппаратной реализацией 1-Wire или доп. микросхемы, например SPI->1-Wire ? Спасибо.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Nov 19 2009, 10:22
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Уже тысячу раз обсуждалось, что можно использовать UART.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 19 2009, 23:45
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(HARMHARM @ Nov 19 2009, 12:22) *
Уже тысячу раз обсуждалось, что можно использовать UART.

UART жалко сливать на такую муру. Как по мне выгоднее рядом поставить какую-нить tiny13, пусть она обслуживает 1-wire, а основной контроллер решает свои задачи.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Nov 20 2009, 05:23
Сообщение #4


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Veg@ @ Nov 19 2009, 14:15) *
..Интерфейс общения с датчиками реализован программно..



Юзаю 1Wire всегда на основном кристале. На 51 ядре в основном цикле. Буквально недавно переносил под АВР в фоновую обработку - кварц на 16 позволяет без проблем. Собственно надо выдержать достаточно точно только интервал в 1 мкс - что выполнимо без запрета внешних прерываний в большинстве случаев.

Правда вот от 1820 пришлось отказаться (думал заюзать CRC - в силовой электронике актуально). Они хуже чем 1821 которые применял и раньше. Не та точность и дольше по общению на шине. Но это чиссо из практики. А контроль данных решаемо - снизошло озарение smile.gif

удачи Вам
(круглый)
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 20 2009, 09:08
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



для программного 1-wire достаточно запрещать прерывания в критические моменты приема одного БИТА - что-то около 15 микросекунд, ну 20 с запасом. промежутки между БИТАМИ могут быть любой длительности и вряд ли смогут помешать остальным процессам.

из всего обсуждения единственное, с чем могу безоговорочно согласиться: все уже обсуждалось великое множество раз!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Veg@
сообщение Nov 20 2009, 17:54
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416



Цитата(ARV @ Nov 20 2009, 12:08) *
для программного 1-wire достаточно запрещать прерывания в критические моменты приема одного БИТА - что-то около 15 микросекунд, ну 20 с запасом.

По-мойму, во-первых, для сигнала RESET нужно удерживать линию в низком уровне ~480us. Во-вторых, отправка байт данных в интерфейсе происходит жесткоограниченными по времени тайм-слотами по ~120us; только между тайм-слотами возможна произвольная задержка.

Цитата(kolobok0 @ Nov 20 2009, 08:23) *
удачи Вам

Спасибо )

Цитата(HARMHARM @ Nov 19 2009, 13:22) *
Уже тысячу раз обсуждалось, что можно использовать UART.

Использование UART, с моей точки зрения, является довольно громоздким решением (с аппаратной и программной точек зрения), по крайней мере у меня сложилось такое впечатление после прочтения этой статьи. Видимо, гораздо более универсальным будет использование дополнительного контроллера.

Цитата(defunct @ Nov 20 2009, 02:45) *
UART жалко сливать на такую муру. Как по мне выгоднее рядом поставить какую-нить tiny13, пусть она обслуживает 1-wire, а основной контроллер решает свои задачи.

Возможно это и будет единственный выход. Можно поподробнее разъяснить, какие могут возникнуть проблемы в данном случае при связи контроллеров по SPI? Передача по этому интерфейсу также, кажется, требует реализации прерываний.
Go to the top of the page
 
+Quote Post
Андрей Лютько
сообщение Nov 25 2009, 08:25
Сообщение #7





Группа: Участник
Сообщений: 6
Регистрация: 26-09-07
Пользователь №: 30 853



Цитата(Veg@ @ Nov 20 2009, 21:54) *
По-мойму, во-первых, для сигнала RESET нужно удерживать линию в низком уровне ~480us. Во-вторых, отправка байт данных в интерфейсе происходит жесткоограниченными по времени тайм-слотами по ~120us;

Длительность удержания шины в низком уровне должна быть не менее 480uS (см. даташит) больше - можно.
Go to the top of the page
 
+Quote Post
xemul
сообщение Nov 25 2009, 12:00
Сообщение #8



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Андрей Лютько @ Nov 25 2009, 11:25) *
Длительность удержания шины в низком уровне должна быть не менее 480uS (см. даташит) больше - можно.

Удержание шины в низком уровне более 960 мкс ванварные слейвы воспринимают как hard-reset.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 27 2009, 19:00
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(defunct @ Nov 20 2009, 02:45) *
UART жалко сливать на такую муру. Как по мне выгоднее рядом поставить какую-нить tiny13, пусть она обслуживает 1-wire, а основной контроллер решает свои задачи.

Поздно , конечно , но вдруг пригодится DS2482-100 или 101


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 28 2009, 03:30
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Veg@ @ Nov 20 2009, 19:54) *
Возможно это и будет единственный выход. Можно поподробнее разъяснить, какие могут возникнуть проблемы в данном случае при связи контроллеров по SPI? Передача по этому интерфейсу также, кажется, требует реализации прерываний.

На tiny13 реализовать SPI мастер (программный SPI) и прерываний непотребуется.
Основной контроллер сделать SPI слейвом, уже как Вам будет удобно, можно и с прерываниями. Проблема будет только одна - сообщить тиньке когда основной контроллер захочет что-то передать. Решения стандартные - или постноянный опрос со стороны тиньки, или отдельная сигнальная линия.
Go to the top of the page
 
+Quote Post

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

 


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


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