Миландр

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

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




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

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
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
Сообщения: 67
Обнаружил.ошибку!
В таймере нет возможности установить режим захвата - биты 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
Сообщения: 67
Добрый день!
Возникла проблема при программирования программного сброса. Я написал usb-загрузчик для 1986ВЕ91, там все работает. Перенёс код для 1901ВЦ1. Загрузчик работает, только после прошивки необходимо сделать программный сброс. В этот момент программа улетает скорее всего в HardFault. Как можно посмотреть что я делаю неправильно?


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

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 67
Посмотрел в отладке выполнение кода. Функция
__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
Сообщения: 1378
Откуда: Тула
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()...

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


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

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 67
Добрый вечер!
В недавнем обновлении семейства 1901 появилась микросхема К1901ВЦ1QI.
Возникло несколько вопросов по обновленной спецификации.
1. На рисунке 2-3 для корпуса LQFP144 отсутствует вывод PC8, а в таблице 2-1 он присутствует под номером 94 (на рисунке 2-3 вывод 94 - PC4 и вывод 98 - PC4). Где правильный вывод PC8?
2. Раньше выводы DUCC не подключались. Теперь в новой спецификации (таблица 2-1) указано, что все эти выводы необходимо соединить между собой и установить развязывающий конденсатор. Однако в таблице 2-2 указано, что выводы DUCC не подключать. Как правильно подключать микроконтроллер в пластике?
Да еще нашел что в таблице нет вывода JTAG-EN (в рисунке вывод 112), вместо него GND.


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

Зарегистрирован: 2017-фев-14 11:21
Сообщения: 132
Здравствуйте!
1. Согласно электрической структурной схеме 94 – это PC8, 98 – это PC4.
2. 112 вывод – тестовый. Рекомендуется подключать к выводу «Общий»

И по первому и по второму вопросу техническому писателю сообщили. Исправит. Спасибо за замечание.
Что касается неподключенных выводов, то вопрос переадресован ГК микросхемы. Пока не могу ответить.

_________________
Отдел технической поддержки support@milandr.ru


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

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 75
prostoRoman писал(а):
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()...


Хотя и времени много прошло и наверное все уже всё знают, НО! Для программного сброса 1901ВЦ1Т (а также 1986ВЕ1Т, 1986ВЕ91Т) следует использовать особенность работы WWDG, так как сброс с помощью AIRCR регистра НЕ работает. О чем и сообщается в errata на соответствующий контроллер.
Пример программного сброса 1901ВЦ1Т с помощью WWDG:

Код:

typedef unsigned char u8;
typedef unsigned int u32;

#define CLK_WWDT         12

/* Enable clock of specified peripheral block */
__STATIC_INLINE void ClkEnable(u8 clknum)
{
        RST_CLK->PER_CLOCK |= (1 << (u32)(clknum & 0x1F));
}

/* Soft reset */
__STATIC_INLINE void MCUSoftReset()
{       
    //Use watch timer to reset: when T > W - RESET generated
    //Enable WWDG clock
    ClkEnable(CLK_WWDT);

    //EWI[9]     = 0 - Disable interrupt
    //WGTB[8..7] = 0 - TMCLK = PCLK / 4096 / 1
    //W[6..0]    = 0 - window is 0
    WWDG->CFR = 0x00;

    //WDGA[7] = 1 - timer ON
    //T[6..0] = 0x7F - timer counter
    WWDG->CR = 0xFF;
    WWDG->CR = 0xFF;
}


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

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 67
Спасибо за содействие! Главное - жду ответа про выводы DUCC (в микроконтроллер 1901ВЦ1Т работал без подключения выводов DUCC).
На счет программного сброса - пробовал использовать сторожевой таймер, но что-то не получалось и плюнул на сброс (мало было времени на реализацию всех алгоритмов, сброс делал по старинке - выключением питания). Попробую ваш вариант, может я где-то ошибся.


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

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 75
ElectroAlex писал(а):
Спасибо за содействие! Главное - жду ответа про выводы DUCC (в микроконтроллер 1901ВЦ1Т работал без подключения выводов DUCC).


Значит и в пластике без подключения DUCC - внутри ведь тоже самое, что и в 1901ВЦ1Т. А конденсатор присутсвует и в отладочной плате 1901ВЦ1Т.


Вложения:
Комментарий к файлу: Отл.плата 1901ВЦ1Т
DUCC_1901.png
DUCC_1901.png [ 16.09 КБ | Просмотров: 1860 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1901ВЦ1Т
СообщениеДобавлено: 2019-мар-27 23:40 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 67
В спецификации на 1901ВЦ1Т (в таблице 2-2) указано, что выводы DUCC - тестовые и их оставлять неподключенными. По крайней мере у меня есть два разных электронных устройства с данным микроконтроллером и в них выводы DUCC не подключены. Сейчас же идет работа по испытанию контроллеров R1901ВЦ1QI и хотелось бы уточнить правильное подключение.
Мне не понятно разночтение в таблице 2-1 и таблице 2-2.


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

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


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

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


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

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