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

 
 
> Как с точным периодом выдавать данные в порт работая с FreeRTOS?, на кристале AT91SAM7X256
OlegHmt
сообщение Dec 10 2006, 22:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146



Помогите, пожалуйста.

Ситуация следующая: на базе примера LwIP для rowley из пакета FreeRTOS разрабатываю свою програму. Одна из основных её задач вывод в порт SPI данные из памяти кристала с заданным периодом. Я организовал это с помощью timer/counter используя прерывание по сравнению с регистром С таймера. Задавая значение регистра C от 400 до 4000 при тактировании таймера в половину частоты ядра (48 МГц) я по прерыванию выбрасываю с помощью DMA 6 значений в порт. Так при значении регистра 700 я, приблизительно, получаю 30 000 посылок в секунду. Прерывание таймера я поставил с приоритетом 7 и понизил прерывание тиков FreeRTOS до 6. То-есть моё прерывание должно бы обрабатываться в первую очередь. В самом прерывании минимум действий - передача данных из памяти в буфер, запуск передачи через DMA и выход. Паралельно исполняються ещё три задачи (две по работе с USB) и одна по выводу картинки на LCD экранчик (у меня плата разработчика Olimex).
Проблема в том, что когда я смотрю осцилографом сигнал на выходе ножки выбора чипа SPI я вижу четкие импульсы с периодом 100 мкс, но, при этом, также видно слабое мельтешение импулься на фоне в диапазоне приблизительно +-20мкс. То-есть, иногда, период не соблюдается, при этом, при весьма ощутимом разбросе. В чём могла бы быть проблема? Как это можна побороть?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:17
Рейтинг@Mail.ru


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