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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 04.09.2013, 14:41  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Обработчик USART, Atmega8, CVAVR

Всем привет.

MCU: Atmega8
IDE: CV AVR

Задача состоит в следующем:

Есть комп, на котором крутится прога, на которой есть куча кнопок. По нажатию на кнопку, на контроллер по USART'у засылается соответствующее сообщение, контроллер его хавает и включает соответствующую нагрузку.

Обработка приёма сообщений должна быть асинхронной, потому что в этот момент на контроллере крутится его основная прога, которая шимит сигнал, читает показания датчиков и т.п.

Сообщение которое комп засылает в МК 8 байт = заголовок, команда, параметры и контрольная сумма, всё как полагается.

Я написал прогу, которая выполняет данные действия, в прерываниях проверяет какой байт пришёл, а затем сравнивает с форматом команды.
Теперь встал вопрос о переносимости данного функционала на другие устройства. А у них может быть другая архитектура. поэтому чтобы не заниматься копипастой, я хочу написать что-то типа модуля, где будут необходимые мне функции.

Как прототип я бы хотел взять одну из функций модуля twi.h

Код:
void twi_slave_init(
     bool match_any_addr,
     unsigned char addr,
     unsigned char *rx_buffer,
     unsigned char rx_buffer_size,
     unsigned char *tx_buffer,
     bool (*slave_rx_handler)(bool rx_complete),
     unsigned char (*slave_tx_handler)(bool tx_complete)
     );
мне нужен совет как создать глобальную функцию, в которую я бы мог передать ссылку на обработчик, так чтобы она вызывалась всякий раз когда байт приходит по шине данных, по типу приведённой выше функции.

Кто подскажет как это сделать, буду очень благодарен.
Реклама:
deeman30rus вне форума  
Непрочитано 04.09.2013, 15:26  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Обработчик USART, Atmega8, CVAVR

Сообщение от deeman30rus Посмотреть сообщение
Кто подскажет как это сделать, ...
А чем не подходит приведённый пример? Почему не сделать также?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 04.09.2013, 16:29  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Re: Обработчик USART, Atmega8, CVAVR

Сообщение от tempora Посмотреть сообщение
А чем не подходит приведённый пример? Почему не сделать также?
хотя бы потому что нет *.с файла с реализацией, в противном случае я бы не спрашивал =)

меня интересует сам подход и реализация функций.
deeman30rus вне форума  
Непрочитано 04.09.2013, 16:41  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Обработчик USART, Atmega8, CVAVR

Ах, вон оно что... Всё ясно. Удачи.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 04.09.2013, 19:30  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Re: Обработчик USART, Atmega8, CVAVR

я слишком многого прошу ?
deeman30rus вне форума  
Непрочитано 10.09.2013, 01:52  
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию Re: Обработчик USART, Atmega8, CVAVR

В разных IDE типы данных могуть отличаться, поэтому надо их привести к стандартным, типа int16_t. А это кучу дефайнов с условиями надо писать, лучше тупо портировать. Или делать обработчик типа void polling (void). Прерывания тоже по разному обрабатываются. Это тоже надо учитывать. DMA может появиться, грех не использовать. И всё в таком духе...Тут даже вопрос не протокола, а больше вопрос переноса из одной IDE в другую и с одной архитектуры в другую.

Последний раз редактировалось kosmos440o; 10.09.2013 в 02:05.
kosmos440o вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных по USART в CVAVR himik131 Микроконтроллеры, АЦП, память и т.д 6 12.03.2011 00:12
Передача данных с ATmega8 на COM порт ПК sergx1300 Микроконтроллеры, АЦП, память и т.д 32 20.04.2010 14:19
Проблема с USART в Atmega8 tvilsa Микроконтроллеры, АЦП, память и т.д 21 14.01.2009 16:27
Помогите разобраться с USART в CodeVisionAVR vendim Микроконтроллеры, АЦП, память и т.д 20 26.07.2007 16:42
Вопрос по мультипроцессорному обмену USART MEGA8 vikont-s Микроконтроллеры, АЦП, память и т.д 0 10.08.2006 14:55


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


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