Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 14.06.2009, 01:30   #1
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию USART AVR MODBUS

Привет.
Колупаю Атмегу128.
Постал вопрос о реализации на ней Модбаса.
Прочитал инфу и т.д., проблемно... не нашел рабочих исходников, буду писать все сам...

И так - задача.
В меня вся система построена на прерыванию. По возникновению его от таймера, выводим на єкран инфу. И так по кругу.

Возник вопрос в том, как все же принимать информацию от USART, т.е. по прерыванию от него.

Пока находимся в прерыванию от таймера и печатаем на экране обработать возникновение прерывания от УАПП не можем... ибо нету механизма приоритета прерываний. О том что приняли узнаем по завершению вывода на экран и возвращение с прерывания от таймера. Типо сначала выводим текст - потом понимаем что что-то приняли.

Как быть?
Ставить еще 1 МК, который по SPI будет быстро передавать инфу, а дальше второй медленно будет передавать все в "мир" на скорости 9600?

P.S. В кого есть исходники Modbus RTU поделитесь плиз
Реклама:
ua_gruzin вне форума  
Непрочитано 14.06.2009, 01:58   #2
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: USART AVR MODBUS

Сообщение от ua_gruzin
Привет.
Колупаю Атмегу128.
Постал вопрос о реализации на ней Модбаса.
Прочитал инфу и т.д., проблемно... не нашел рабочих исходников, буду писать все сам...

И так - задача.
В меня вся система построена на прерыванию. По возникновению его от таймера, выводим на єкран инфу. И так по кругу.

Возник вопрос в том, как все же принимать информацию от USART, т.е. по прерыванию от него.

Пока находимся в прерыванию от таймера и печатаем на экране обработать возникновение прерывания от УАПП не можем... ибо нету механизма приоритета прерываний.

P.S. В кого есть исходники Modbus RTU поделитесь плиз
http://freemodbus.berlios.de/index.php
Но нужен ли модбас? Тем более RTU - 3.5 байтовых интервала отслеживать не самая приятная вещь.
По поводу приема - либо разрешайте вложенные прерывания, либо делайте нормальную логику в программе - в прерывании минимальная обработка данных, типа поместить в буфер, и установка флага. А в основном цикле разгребайте события по соответствующим флагам. Еще вариант - использовать ОС.
kison вне форума  
Непрочитано 14.06.2009, 02:04   #3
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да, с ссылкой знаком.
Лазил, перелазил, скачал архив с файлами.
Пытался собрать в CVAVR - ничего путевого не вышло (2 дня лазил).

Можете посоветовать в чем собирать, или как это правильно сделать.
ua_gruzin вне форума  
Непрочитано 14.06.2009, 02:27   #4
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Сообщение от ua_gruzin
Пытался собрать в CVAVR - ничего путевого не вышло (2 дня лазил).

Можете посоветовать в чем собирать, или как это правильно сделать.
Собирать в WinAvr. Почти все исходники в сети именно под этот компилятор. Западные так вообще все. Там в порте авровском ридми файл есть, где компилятор указан. Собирать или через make all, или создать в студии проект и указать в его параметрах внешний мейкфайл. Через студию проще будет модифицировать проект. Демо в чистом виде большого смысла не имеет.
И все же - модбас обязателен? Кроме стандартности у него плюсов перед самописным протоколом нет. И если в сеть не планируется подсоединять чужие устройства, то проще и лучше написать свой протокол.
kison вне форума  
Непрочитано 14.06.2009, 03:24   #5
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию

Цитата:
Пока находимся в прерыванию от таймера и печатаем на экране обработать возникновение прерывания от УАПП не можем... ибо нету механизма приоритета прерываний.
Ну почему же не можем... Если в самом начале обработчика прерывания для ЖКИ разрешить прерывания (sti), то можно будет обрабатывать и другие прерывания без проблем, и ничего не произойдет незамеченным.
alexgap вне форума  
Непрочитано 14.06.2009, 10:27   #6
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
baiderin на пути к лучшему
По умолчанию

Програмируется таймер на величину защитного интервала.
При приеме каждогосимвола таймер сбрасывается и запускается снова,не давая ему срабатывать до тех пор,пока передача не кончится.
В таймере и происходит обработка.
baiderin вне форума  
Непрочитано 14.06.2009, 16:42   #7
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да в том проблемка с прерываниями, и именно с приоритетом...

Параллельно выводу на экран происходит срабатывание от других источником, при чем они устанавливают флаги. По завершению вывода на экран, данные события будут обработаны после появления sei (reti).

Была бы возможность убирать вызов прерывания с
установкой флага, проблем бы не было.

Типо сначало установили флаг при разрешённом прерывани например от таймера1, но не вызвали обработку, а обработали - потом, когда дали разрешение на их выполнению по флагу.

За WinAVR, спасибо, буду пробовать.
ua_gruzin вне форума  
Непрочитано 14.06.2009, 23:05   #8
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от ua_gruzin
Пока находимся в прерыванию от таймера и печатаем на экране обработать возникновение прерывания от УАПП не можем...
Очень даже можем, зависит от скорости USART. Если скорость не большая, то:
У меня драйвер ЖКИ работает по прерыванию таймера от 60-120 микросекунд(в зависимости какой период требуют остальные задачи).

За один проход драйвер выводит только ОДИН байт в ЖКИ, а не ВСЮ строку. Рулится флагами. МЕГА128 будет тратить на это около 3-10 микросекунд(от частоты). За это время успеет проскочить только часть бита на скорости 9600

Так же работают драйверы 1wire, SOFT USART, USART BUFER клавиатуры, итд.. и всё паралельно работает )))) и успевает одновременно считывать и iButton, и DS18B20 и выводить в ЖКИ и принимать передавать 2-4 USART 9600(два из них SOFT) и клавиатура и ....процентов 30-50 времени остаётся...
picavr вне форума  
Сказали "Спасибо" picavr
JhonLaboratory (21.04.2012)
Непрочитано 21.04.2012, 22:35   #9
JhonLaboratory
Временная регистрация
 
Регистрация: 11.11.2006
Адрес: Свердловск UA
Сообщений: 60
Сказал спасибо: 8
Сказали Спасибо 19 раз(а) в 17 сообщении(ях)
JhonLaboratory на пути к лучшему
По умолчанию Re: USART AVR MODBUS

Сообщение от picavr Посмотреть сообщение
Очень даже можем, зависит от скорости USART. Если скорость не большая, то:
У меня драйвер ЖКИ работает по прерыванию таймера от 60-120 микросекунд(в зависимости какой период требуют остальные задачи).

За один проход драйвер выводит только ОДИН байт в ЖКИ, а не ВСЮ строку. Рулится флагами. МЕГА128 будет тратить на это около 3-10 микросекунд(от частоты). За это время успеет проскочить только часть бита на скорости 9600

Так же работают драйверы 1wire, SOFT USART, USART BUFER клавиатуры, итд.. и всё паралельно работает )))) и успевает одновременно считывать и iButton, и DS18B20 и выводить в ЖКИ и принимать передавать 2-4 USART 9600(два из них SOFT) и клавиатура и ....процентов 30-50 времени остаётся...
Я тоже так стараюсь делать. Могу твердо заверить что работаетъ !!!!
JhonLaboratory вне форума  
Непрочитано 22.04.2012, 00:00   #10
kittec
Гражданин KAZUS.RU
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: USART AVR MODBUS

Сообщение от JhonLaboratory Посмотреть сообщение
Я тоже так стараюсь делать.
Лучше поздно чем никогда JhonLaboratory, Вы дату создания темы посмотрите.
kittec вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с USART AVR mega169 Archer07 Микроконтроллеры, АЦП, память и т.д 20 28.07.2009 15:02
Настройка USART AVR на DMX512 anton_avr Микроконтроллеры, АЦП, память и т.д 1 16.07.2009 13:13
Протокол modbus. Вопросы по интерфейсу Phunt-ik Микроконтроллеры, АЦП, память и т.д 32 25.12.2008 00:56
OPC Server MODBUS vilich Автоматика и аппаратура связи 1 13.10.2008 10:03
MODBUS для AVR-ов nerozero Микроконтроллеры, АЦП, память и т.д 2 13.01.2008 12:42


Часовой пояс GMT +4, время: 18:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot