Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/20: Рейтинг темы: голосов - 20, средняя оценка - 4.65
SiKuD
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 2
1

Обработка клавиш. Таймер для нужд RTOS.

01.09.2015, 13:44. Просмотров 3627. Ответов 3
Метки нет (Все метки)

В обычных программах всё делаю в прерывании - обработка дребезга/нажатия/отпускания клавиш. Т.к. прерывания завязаны на таймер и его точное срабатывание. А как это принято делать в FriiRTOS? Тоже в прерывании или в отдельной задаче?
Если выносить в задачу, то время её запуска может варьироваться в зависимости от кол-ва задач и их приоритета. В итоге время обработки действий с кнопкой может начать плавать. Как поступить?

И как выяснить, какие файлы смотреть, какой таймер будет использовать FriiRTOS в своих нуждах для переключения задач и тиков в том или ином микроконтроллере? Можно ли его заменить другим при конфигурировании ядра?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2015, 13:44
Ответы с готовыми решениями:

Подойдет ли msp430 для моих скромных нужд?
Заранее прошу простить за вопрос новичка! Итак, собираю очень простой...

Какая лучше RTOS для MSP430
Добрового времени суток всем. Решил тут немного побаловаться с RTOS, опыта в...

Помогите сделать небольшой проект для бытовых нужд
Имеется ламповый усилитель, 4-х тактный. Есть два тумблера: 1. Включение...

использование для "своих нужд" выводы RXD & TXD в контроллер
добрый день исходные данные: - arduino nano - планируем использовать для...

RTOS для AVR. Какая там загрузка контроллера?
Пишу диспетчер мультизадачности для AVR. Интересен вопрос - сколько примерно...

3
dim_po
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 39
01.09.2015, 18:15 2
Клавиатура - по вкусу. Я предпочитаю всё, что можно, держать в прерываниях, а по результатам обработки прерываний сообщать задачам.

Файлы смотреть в папке portable для своей платформы.
В конфиге ядра таймер не выбирается, но никто не мешает переписать существующий или написать свой порт, который будет настраиваться из конфига. У меня, например, почти так и сделано. Часть кода инициализации таймера:
Код
   CONCAT(TMR0,TIMERNUM) = 0x0000;

/* Set the sompare match value according to the tick rate we want. */
CONCAT(TDR0,TIMERNUM) = ( TickType_t ) ( configCPU_CLOCK_HZ / configTICK_RATE_HZ );

/* Set Timer Array Unit Channel TIMERNUM output mode */
TOM0 &= ~(1<<TIMERNUM);

/* Set Timer Array Unit Channel TIMERNUM output level */
TOL0 &= ~(1<<TIMERNUM);
Константа TIMERNUM - номер таймера. Макрос CONCAT:
Код
#define _CONCAT(a,b) a##b
#define CONCAT(a,b) _CONCAT(a,b)
0
SiKuD
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 2
02.09.2015, 10:28 3
Цитата Сообщение от dym_po
Клавиатура - по вкусу. Я предпочитаю всё, что можно, держать в прерываниях, а по результатам обработки прерываний сообщать задачам.
Через очередь делаете? А то тут я пока не знаю как подступиться правильнее :). В гугле ничего не нарыл по вопросу кнопок, кроме детских примеров.

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

Цитата Сообщение от dym_po
Файлы смотреть в папке portable для своей платформы.
Ух... не, мне в это рановато пока лезть %)
0
dim_po
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 39
05.09.2015, 16:06 4
Цитата Сообщение от SiKuD
Цитата Сообщение от dym_po
Клавиатура - по вкусу. Я предпочитаю всё, что можно, держать в прерываниях, а по результатам обработки прерываний сообщать задачам.
Через очередь делаете? А то тут я пока не знаю как подступиться правильнее :). В гугле ничего не нарыл по вопросу кнопок, кроме детских примеров.

Если к моменту, когда задача начнёт обрабатывать кнопочки, может накопиться несколько событий, лучше очереди, да. Семафор во FriiRTOS - частный случай очереди.

Цитата Сообщение от SiKuD
В обычных программах у меня созданы глобальные переменные для кнопок, где в прерывании выставляется статус кнопки после устранения дребезга. В основной идёт проверка этих переменных и сброс после обработки.
Объекты синхронизации хороши тем, что ожидающая задача может спать вместо проверки состояния в цикле.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2015, 16:06

DI HALT rtos
Уже задавал вопрос, но не получил ответа. Мне надо организовать регулировку...

Вопрос по RTOS
Сразу приношу извинения, если пишу не в ту тему. Вопрос в следующем: как в RTOS...

RTOS for AVR
А много ли реально приложений, где совсем никак нельзя обойтись без системы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru