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

 
 
> Структура программы (AVR studio)
pistoletov
сообщение Mar 1 2013, 20:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 17-02-12
Из: Донецк
Пользователь №: 70 323



Привет всем. Пытаюсь сделать проектик на xmega. Устройство представляет собой торговый автомат. Задача стоит периодической отправки данных
по гпрс каналу. Работа с модемом требует ожиданий ответов, очень бы не хотелось тормозить работу периферии на эти моменты. С RTOS не хочется связываться пока сложнова-то для меня и много кажется ртос для такой задачи. Я вижу решение что всю перефирию-клавиатуру, датчики итп..повесить на прерывания у xmega их хватает. Нормальное ли это решение или есть какие-о варианты на фоне основного цикла в фоне работает функция отправки данных по гпрс-модему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Misile_Inc
сообщение Mar 17 2013, 10:08
Сообщение #2


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

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



pistoletov решать Вам, но мне не очень понравилась такая архитектура в применении к простой (как Вы сказали) задаче.
Особенно не понравилось выполнение чего - либо в прерывании. Лично мне кажется, что в прерывании таймера без крайней необходимости в точной синхронизации ничего кроме установки флагов делать нельзя. Остальное все в main().
Для задач, которые нужно вызывать по времени можно завести полупрограммные таймеры. Тогда код может выглядеть как-то так:
CODE
enum
{
timer_100ms,
timer_1000ms,
number_of_timers
}
static uint16_t timer_counts[number_of_timers];
void timer_interrupt_handler ()
{
for (i = 0; i<number_of_timers)
{
if (timer_counts[i] > 0)
{
timer_counts[i] -= 1;
}
}
}
void main(void)
{
init_timer ();
while (!Error)
{
gprs_handler();
sale_handler();
if(!get_count(timer_100ms))
{
supply_control();
reinit(timer_100ms) = 0;
}
if (timer_1000ms)
{
coin_control();
reinit(timer_1000ms) = 0;
}
}

}

Естественно, объявление функций, переменных таймера следует вынести в свои модули, чтобы не превращать код в нечто нечитаемое.
От описанного мной приема я тоже не в восторге, но он сопровождаем и понимаем даже для новичков. Значительно проще и короче, чем по вашей ссылке.

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

Сообщение отредактировал Misile_Inc - Mar 17 2013, 10:21
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 21:41
Рейтинг@Mail.ru


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