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

 
 
> Обработка прерываний и тайминг в 5мс, Cortex-m3, пример хотелось бы...
cz_nikita
сообщение Nov 29 2008, 12:29
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 29-11-08
Пользователь №: 42 058



Никак не могу найти литературы и пример обработки прерываний для Соrtex-M3.
Задача такова: по USART приходят данные и нужно выдавать АСК в течении 5мс.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sanek_spb
сообщение Dec 1 2008, 14:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746



Цитата(cz_nikita @ Nov 29 2008, 15:29) *
Никак не могу найти литературы и пример обработки прерываний для Соrtex-M3.
Задача такова: по USART приходят данные и нужно выдавать АСК в течении 5мс.


Как раз сейчас мучаю кортекс, Вы бы сказали что за мк, на какой частоте проц, на какой уарт и какой поток данных, может и идейку бы подкинули.

Но по любому несколько простых путей:
1. данные приходят медленно: каждый байтик обрабатываете, как придет последний, выдавай АК
2. данные приходят быстро:
2.1. буферизуете полностью (например в прерывании) и по последнему байтику обрабатываете и выдаете АК
2.2. кольцевой буфер - по приходу даных кидаете в буфер (в прерывании например), по возможности обрабатываете (в главном цикле), последний байт -> АК
2.3. настраиваете ДМА, по окончании приема приходит прерывание -> обрабатываете и выдаете АК

Соотв. проблема сводится к вопросу успеете ли обработать свои данные, а уже основываясь на ответе выбираете себе вариант.
Go to the top of the page
 
+Quote Post
cz_nikita
сообщение Dec 1 2008, 21:03
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 29-11-08
Пользователь №: 42 058



Цитата(Sanek_spb @ Dec 1 2008, 15:58) *
Как раз сейчас мучаю кортекс, Вы бы сказали что за мк, на какой частоте проц, на какой уарт и какой поток данных, может и идейку бы подкинули.

Но по любому несколько простых путей:
1. данные приходят медленно: каждый байтик обрабатываете, как придет последний, выдавай АК
2. данные приходят быстро:
2.1. буферизуете полностью (например в прерывании) и по последнему байтику обрабатываете и выдаете АК
2.2. кольцевой буфер - по приходу даных кидаете в буфер (в прерывании например), по возможности обрабатываете (в главном цикле), последний байт -> АК
2.3. настраиваете ДМА, по окончании приема приходит прерывание -> обрабатываете и выдаете АК

С МК раньше работать не доводилось, но задачу нужно решать...
Модель: STM32F103CBT6. Задача: прокачка данных с одного УАРТ на другой УАРТ (преобразование с одного протокола в другой).
Сегодня выяснил, что эта самая прокачка очень сильно глючит (потеря данных и т.д.).
УАРТ1 работает на скорости 9600, УАРТ2 на скорости 115200.
Сейчас реализовано так: находясь в прерывании УАРТ1 делается посылка данных на УАРТ2, и наборот соответсвенно: находясь в прерывании УАРТ2 делается посылка данных на УАРТ1.
Но как подсказывает логика: если у нас существует два интерфейса с разными скоростями, то между ними должен быть "выравнивающий" буфер.
Т.е. УАРТ1 кидает данные в очередь, в майне читаем наш буфер, анализируем, и отсылаем на УАРТ2. Также с УАРТ2 кидаем в очередь, в майне читаем, анализируем, и отсылаем на УАРТ1.

ЗЫ: Хотелось бы услышать комментарии от гуру, правильный ли путь выбран с буферизацией данных?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 16th July 2025 - 09:38
Рейтинг@Mail.ru


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