Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-окт-24 03:41

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 99 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7
Автор Сообщение
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2015-ноя-09 08:54 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1282
Откуда: АО "ПКК Миландр"
mws писал(а):
Кроме того, обнаружил ещё одну нехорошую вещь. В режиме слэйва опять же, когда вызывается прерывание SSP флаг SSP_FLAG_RNE очищается автоматически. Проверить статус приёмника из прерывания получается невозможно. Когда прерывание запрещено — флаг работает как надо. Это уже явное несоответствие спецификации, флаг должен быть активен пока в буфере приёмника есть хотя бы один байт. В errata этого бага не обнаружил.



Мало вероятно. Скорее всего у вас регистр данных отображается в каком либо memory view и флаг сбрасывается когда среда обновляет (считывает) этот регистр, а не программа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2015-дек-15 11:08 
Не в сети

Зарегистрирован: 2012-янв-26 18:29
Сообщения: 25
Да, очевидно это было из-за отладчика, переделал я протокол, получились довольно большие задержки, их можно уменьшить, если непрерывно опрашивать флаги BSY или TXE, но для систем реального времени такой поллинг не допустим.
Остался вопрос, чисто из интереса - каким образом в режиме слэйв отсчитывается таймаут? Я пробовал разогнать тактовую слэйва по отношению к мастеру, но на время таймаута это не повлияло. По тактовой от мастера это невозможно, так как таймаут срабатывает когда передача не активна, неужели слэйв каким-то образом измеряет тактовую мастера и использует это значение для отсчёта задержек?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2016-апр-26 09:36 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 59
Обнаружил.ошибку!
В таймере нет возможности установить режим захвата - биты 14 и 15 в регистре CHx_CNTRL всегда читаются как "0". При записи никакой реакции. Пробовал снижать такт таймером, непомерно. Данная ошибка происходит во всех трех таймерах.
Микросхема с маркировкой "1901ВЦ1Т 1603".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2016-авг-05 13:09 
Не в сети

Зарегистрирован: 2016-июл-05 19:21
Сообщения: 4
Залил программу , через jtag на 1901vc1t
0x08000000 -start
0x00020000 - size (вот такие столяи настройки в Flash Download (keil 4.7)
Так и должно быть , что программа не работает без подключенного программатора?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2016-авг-05 14:50 
Не в сети

Зарегистрирован: 2016-фев-16 11:59
Сообщения: 14
Откуда: Пенза, АО НПП Рубин
H_h писал(а):
Так и должно быть , что программа не работает без подключенного программатора?

Если включен semihosting, то без программатора не будет работать. Также проверьте режим загрузки MODE[]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2017-фев-09 14:14 
Не в сети

Зарегистрирован: 2016-дек-14 14:52
Сообщения: 9
Предполагается ли производство данной м/с в пластиковом корпусе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2018-сен-18 09:30 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 59
Добрый день!
Возникла проблема при программирования программного сброса. Я написал usb-загрузчик для 1986ВЕ91, там все работает. Перенёс код для 1901ВЦ1. Загрузчик работает, только после прошивки необходимо сделать программный сброс. В этот момент программа улетает скорее всего в HardFault. Как можно посмотреть что я делаю неправильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2018-сен-18 11:42 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 59
Посмотрел в отладке выполнение кода. Функция
__STATIC_INLINE void NVIC_SystemReset(void)
{
__DSB();
SCB->AIRCR = ((0x5fa << SCB_AIRCR_VECTKEY_Pos) | (SCB->ARICR & SCB_AIRCR_PRIGROUP_Msk) | (SCB_AIRCR_SYSRESETREQ_Msk);
__DSB();
while(1);
}
висит на последнем пустом цикле и дальше не идет. Что же это может быть? Да и в режиме отладки сброс ядра тоже не работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2018-сен-24 10:59 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1159
Откуда: Тула
ElectroAlex писал(а):
Посмотрел в отладке выполнение кода. Функция
__STATIC_INLINE void NVIC_SystemReset(void)
{
__DSB();
SCB->AIRCR = ((0x5fa << SCB_AIRCR_VECTKEY_Pos) | (SCB->ARICR & SCB_AIRCR_PRIGROUP_Msk) | (SCB_AIRCR_SYSRESETREQ_Msk);
__DSB();
while(1);
}
висит на последнем пустом цикле и дальше не идет. Что же это может быть? Да и в режиме отладки сброс ядра тоже не работает.

Вспоминается, что в 1901ВЦ1Т есть кэш инструкций. Может он как-то мешает? Попробуйте вставить __ISB(); и (много) нопов перед while(1).
Само собой, глобально запретить прерывания перед вызовом NVIC_SystemReset(). Странно, что этого не делает сама NVIC_SystemReset()...

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 99 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB