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

 
 
> SignalISR() в Blackfin, флаг устанавливается медленно
sevstels
сообщение Feb 22 2010, 04:19
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Собственно трудность заключается в медленном поднятии флага при вызове функции SignalISR().
Разместил флаги в секции "l2_var", функцию SignalISR() в секции "drivers_L1_code"
Но это не помогло решить проблему.

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




На фотографии ниже показана длительнось обработки SPI прерывания без подьёма флагов, примерно 400ns.
Вопрос - как победить неувязку? Пока не удаётся разогнать SPI даже до приемлимого уровня...



--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sevstels
сообщение Feb 22 2010, 14:45
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Нет необходимости вообще что либо делать, кроме как переливать из НАНД по SPI-USB в компьютер. Это отдельный режим, используемый крайне редко. Поэтому все мипсы могут быть пущены в расход. Главный критерий тут - скорость. Маленькими блоками по 256 байт нормально работает. Но проблема, что приходится чаще дёргать USB, а там как минимум 20мс пауза между передачами. Задержка на файле 1МВ получается очень существенная.


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sevstels   SignalISR() в Blackfin   Feb 22 2010, 04:19
- - blackfin   Вы или неверно изложили суть проблемы, или выбрали...   Feb 22 2010, 05:09
- - sevstels   Цитатавесь блок данных уже принят и уже сохранен в...   Feb 22 2010, 05:32
|- - blackfin   Цитата(sevstels @ Feb 22 2010, 08:32) Оче...   Feb 22 2010, 05:40
- - sevstels   Речь о scmRTOS функции: void OS::TEventFlag::Signa...   Feb 22 2010, 05:45
|- - blackfin   Цитата(sevstels @ Feb 22 2010, 08:45) Реч...   Feb 22 2010, 05:48
- - sevstels   Видимо вопрос к разработчикам scmRTOS, т к в такие...   Feb 22 2010, 05:52
- - dxp   Цитата(sevstels @ Feb 22 2010, 10:19) Соб...   Feb 22 2010, 08:15
- - sevstels   ЦитатаКакая у вас тактовая частота? На какой скоро...   Feb 22 2010, 08:38
- - sevstels   Перенёс флаги в L1. Измерил. Непосредственно сама ...   Feb 22 2010, 11:00
- - blackfin   Тоже сделал замеры при вызове макросов VDK на дост...   Feb 22 2010, 12:54
- - sevstels   Всё равно - нет в жизни счастья. Звенит тактовый с...   Feb 22 2010, 13:29
|- - blackfin   Цитата(sevstels @ Feb 22 2010, 16:29) Бло...   Feb 22 2010, 13:58
- - sevstels   дел   Feb 22 2010, 14:52
- - sevstels   В общем - победил, всё идеально "летает...   Feb 23 2010, 03:40


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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 20:25
Рейтинг@Mail.ru


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