Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM Cortex M4 таймеры
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
CBo6ogHbIu
Всем доброго времени суток.
Осваиваю связку Cortex M4 150 Мгц + Keil 5.*
Стоит задача чтения АЦП раз, скажем, в 100мкс + последующая матобработка. Для "упрощения" решил использовать RTX Keil.

1. Подключил cmsis_os.h
2. Инициализировал процессор на 150МГц, в прерываниях от одного из портов читаю ацп. Для начала и удобства отладки сделал это по таймеру раз в секунду.
3. Отладился, на осциллографе нужные картинки получил, данные проверил - все ок.
4. Дело дошло до переноса на таймер с нужной частотой(десятки мкс). И тут обнаружил, что keil предоставляет вроде как только таймеры от 1мс.
Попытался переопределить SysTick_Handler - он уже определен в hal_cm3. Попытался отказать от использования таймера в RTX_Conf_CM.c, чтобы убрать конфликт - SysTick_Handler по прежнему использовать не получается, плюс отваливаются вся обвязка в виде визуальной диагностики на LED и т.п.

У меня такое чувство, что я пропустил какую-то очень важную доку, но все поиски ни к чему не приводят. Такое впечатление, что выполнять действия чаще чем раз в 1мс в тырнетах вообще никому не нужно...
Кто пользовался ВЧ таймерами под Keil 5.*, помогите советом плз.
Dog Pawlowa
Цитата(CBo6ogHbIu @ Mar 28 2014, 06:46) *
Такое впечатление, что выполнять действия чаще чем раз в 1мс в тырнетах вообще никому не нужно...

Средствами операционной системы хотите организовать таймер с частотой выше тиков ОС?
sad.gif
CBo6ogHbIu
Цитата(Dog Pawlowa @ Mar 28 2014, 07:59) *
Средствами операционной системы хотите организовать таймер с частотой выше тиков ОС?
sad.gif

Тики ОС минимум раз в 1мкс(RTX_Conf_CM.c, OS_TICK). А таймеры - только 1мс. Нужен таймер 100мкс.
skripach
Придётся "углубиться" и разобраться с аппаратными таймерами и их прерываниями.
Тикать ОС чаще 1мс - моветон. sm.gif
CBo6ogHbIu
Цитата(skripach @ Mar 28 2014, 08:28) *
Придётся "углубиться" и разобраться с аппаратными таймерами и их прерываниями.
Тикать ОС чаще 1мс - моветон. sm.gif

Пока склоняюсь к тому, чтоб отказаться от ОС и сваять простенький планировщик.
skripach
Цитата(CBo6ogHbIu @ Mar 28 2014, 07:30) *
Пока склоняюсь к тому, чтоб отказаться от ОС и сваять простенький планировщик.

Чтобы опросить АЦП с периодом 100мкс написать свой планировцик? гениально... sad.gif
Herz
Тему переименовал. Автору замечание за нарушение п.2.1.в Правил. Название "Помогите советом" не является осмысленным.
CBo6ogHbIu
Цитата(skripach @ Mar 28 2014, 08:39) *
Чтобы опросить АЦП с периодом 100мкс написать свой планировцик? гениально... sad.gif

Спасибо за лестную оценку.
Не менее гениально считать, что топик - это ТЗ проекта. Описана лишь та часть, которая имеет непосредственное отношение к вопросу.
Про планировщик - имелась в виду возможная(пока еще) нецелесообразность использования ОС только из-за ее планировщика, хотя бы из-за занимаемой памяти.

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

Тем не менее остается открытым вопрос: если ли возможность с помощью KEIL RTX получить временной интервал 10-100 мкс и можно ли(как) перехватить доступ к systick_handler()?
Corvus
Конструктив уже озвучен - используйте прерывания от другого аппаратного таймера. Это единственный правильный способ в данной ситуации.
Использовать ОС или нет, никто не подскажет, так проект неизвестен даже в общих чертах. Если будете использовать, то используйте правильно. Шаманства в стиле "перехватить доступ к systick_handler()" до добра не доведут.
CBo6ogHbIu
В принципе - да, согласен, тему можно закрывать.
kolobok0
Цитата(CBo6ogHbIu @ Mar 28 2014, 07:46) *
...У меня такое чувство, что я пропустил какую-то очень важную доку...


Вы не доку пропустили, а этап изучения ранее наработанного до Вас опыта. анализ его, выбор более соответствующего Вашей задачи.
Вот это Вы и не сделали. Соответственно отсюда ослинные уши и растут...

Вам необходимо...
1) копнуть что такое ПДП, с чем едят, что даёт...
2) варианты работы с АЦП. циклический, ручой, работа с инжектерной группой, работа с несколькими ацп.
3) работа с таймерами, как средством чёткого временного интервала.
4) работа с событиями, как признак окончания заданного параллельного процесса и задания следующего
5) копнуть примеры сцепления таймеров-ацп-пдп, без участия мозгов МК.
6) объекты синхронизации в ОС, работа с ними из прерываний.
7) вектора прерываний, как способ уменьшения конфликтных ситуаций.

Примеров куча, на форумах(и тут так-же) встречаются толковые, лаконичные примеры...
А Вы сразу пилить. Вам бы подумать, поучиться немного...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.