Миландр
https://forum.milandr.ru/

К1986ВЕ92 не отправляет UART
https://forum.milandr.ru/viewtopic.php?f=33&t=4052
Страница 2 из 3

Автор:  редактор [ 2019-июн-04 08:07 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Цитата:
Спецификация:
32.1.5 SCB->AIRCR
32.1.5.1 Регистр управления прерываниями и программного сброса
Тогда нужно добавить и Errata Ошибка 0006
Цитата:
0006 Невозможность программного сброса процессора через регистр AIRCR
Остается только WDT либо внешний сброс.

Автор:  Vasiliy [ 2019-июн-04 09:49 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Действительно. Но в целях отладки можно попробовать.

Коллеги недавно использовали такой код для сброса. С зависанием не столкнулись, но вероятно просто не достаточно часто сбрасывались программно.
//Настройка программного сброса
SCB->AIRCR = 0x5FA0000;
	
while (1)
{
    if ((MDR_PORTE->RXTX & (1 << 3)) == 0) // Формирование программного сброса по кнопке Left
    {
        SCB->AIRCR = 0x5FA0004; 
    }	
}

Автор:  редактор [ 2019-июн-04 13:59 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Цитата:
Коллеги недавно использовали такой код для сброса. С зависанием не столкнулись, но вероятно просто не достаточно часто сбрасывались программно.
Скорее всего зависит от чипа. У нас из 8 МК в системе (изготовление в одно время - следовательно и ревизия и партия скорее всего одинаковые) 4 или 5 сбрасывались всегда остальные всегда висли.
Сделали всем WDT для однообразия.

Автор:  LinuxFanatic [ 2019-июн-15 22:33 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

 #if 1 // turn off jtag
 	if((MDR_BKP->REG_0E & (1<<6)) || (MDR_BKP->REG_0E & (1<<7)))
 	{
		MDR_BKP->REG_0E &= 0xFFFF8FFF;
		MDR_BKP->REG_0E |= (3<<12);
 		MDR_BKP->REG_0E &= ~(1<<6);
 		MDR_BKP->REG_0E &= ~(1<<7);
 		MDR_WWDG->CFR = 0x00;
 		MDR_WWDG->CR = 0xFF;
 		MDR_WWDG->CR = 0xFF;
 	}
 #endif
Добавил еще перевод в режим 011 "микропроцессор без отладки". Сброс это не проблема, у меня он срабатывает и по светодиоду я четко виду что JTAG A и B оба выключены.

Передача UART по прежнему не работает! Не выдает ничего в порт тот, через который МК вот только что был прошит, провода очевидно целы и питанием в норме.

Какие еще есть идеи? Не сказать что разработка моя срочна, но "подельники" уже раздражены что я месяц бьюсь над примитивным UART, при том что на отладочной плате на другой когда то прекрасно работал с UART.

Автор:  vasili [ 2019-июн-17 09:16 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

В вашем коде не увидел настройку регистра MDR_RST_CLK->UART_CLOCK

Автор:  prostoRoman [ 2019-июн-17 09:23 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

LinuxFanatic писал(а):
Передача UART по прежнему не работает! Не выдает ничего в порт тот, через который МК вот только что был прошит, провода очевидно целы и питанием в норме.

Какие еще есть идеи? Не сказать что разработка моя срочна, но "подельники" уже раздражены что я месяц бьюсь над примитивным UART, при том что на отладочной плате на другой когда то прекрасно работал с UART.
Предлагаю:
1. Раз вы прошиваете через UART - уберите из программы всё, что касается UART и тактирования, и просто отправьте что-то. Посмотрите осциллографом, по возможности.
Т.е. предлагаю программу вида
void main() {
while( MDR_UART2->FR & UART_FR_BUSY);
MDR_UART2->DR = 0x12; }
2. Потом по частями добавляйте всякое разное своё.
3. Раздобудьте любой отладчик, поддерживаемый любой IDE, посмотрите в отладке на регистры.

Автор:  prostoRoman [ 2019-июн-17 09:26 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

vasili писал(а):
В вашем коде не увидел настройку регистра MDR_RST_CLK->UART_CLOCK
Теоретически, она прячется в UART_BRGInit()

Автор:  andelie [ 2019-июн-17 09:38 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Предлагаю отключить пока работу с UART, а вместо этого подергать в цикле ногами PD0, PD1 и еще какой-нибудь ногой из порта D, не связанной с JTAG. Для этого ноги надо сконфигурировать как цифровые выходы. Результаты посмотреть осциллом. Возможно, кое-что прояснится.

Автор:  -=Sergei=- [ 2019-июн-17 11:43 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Повторяемо на нескольких кристаллах ?

Автор:  Vasiliy [ 2019-июн-17 13:08 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Запустил код с первой страницы на отладочной плате с активным Jtag_A. Вывод TX дергается согласно высылаемым данным.
При выборе JtagB пинами MODE данные тоже идут.

Автор:  LinuxFanatic [ 2019-июн-19 12:18 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

prostoRoman писал(а):
Т.е. предлагаю программу вида
void main() {
while( MDR_UART2->FR & UART_FR_BUSY);
MDR_UART2->DR = 0x12; }
Хорошо, попробую. Интересная идея, должно хоть как-то работать точно.
А еще я не пробовал такую вещь, которую могу попробовать на другой отладочной плате: попробовать тупо другой UART порт.
Потому что на моей конкретной - второй порт неудобно выведен, но попробую запаяться туда.
Vasiliy писал(а):
Запустил код с первой страницы на отладочной плате с активным Jtag_A. Вывод TX дергается согласно высылаемым данным.
При выборе JtagB пинами MODE данные тоже идут.
Странно.
-=Sergei=- писал(а):
Повторяемо на нескольких кристаллах ?
Не пробовал, плата одна. Но теперь до меня начинает доходить, что может быть бракованный кристалл. Хотя через этот же порт шьется.

В любом случае, я принципиально заинтересован именно в Миландр, хотя в STM32 таких проблем не возникало.

Автор:  Vasiliy [ 2019-июн-19 12:49 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

LinuxFanatic писал(а):
Vasiliy писал(а):
Запустил код с первой страницы на отладочной плате с активным Jtag_A. Вывод TX дергается согласно высылаемым данным.
При выборе JtagB пинами MODE данные тоже идут.

Странно.
Вот что запускал. Лишнее закомментировал, передачу зациклил чтобы было видно осциллографом. В MDR32F9Qx_config.h
#if (defined(USE_MDR1986VE9x) || defined (USE_MDR1901VC1T))
 #define USE_JTAG_A 
 //#define USE_JTAG_B 
#endif


Вложения:
Комментарий к файлу: UART_VE92
UART_VE92.zip [14.7 КБ]
83 скачивания

Автор:  -=Sergei=- [ 2019-июн-19 13:13 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

LinuxFanatic писал(а):
-=Sergei=- писал(а):
Повторяемо на нескольких кристаллах ?
Не пробовал, плата одна. Но теперь до меня начинает доходить, что может быть бракованный кристалл. Хотя через этот же порт шьется.

В любом случае, я принципиально заинтересован именно в Миландр, хотя в STM32 таких проблем не возникало.
Если это бракованный кристалл с таким поведением, то мы заинтересованы его получить обратно.
В замен дадим новый.

Автор:  prostoRoman [ 2019-июн-19 13:22 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

-=Sergei=- писал(а):
Если это бракованный кристалл с таким поведением, то мы заинтересованы его получить обратно.
В замен дадим новый.
Вот это тяга к знаниям! Респект.

Автор:  Vasiliy [ 2019-июн-19 13:57 ]
Заголовок сообщения:  Re: К1986ВЕ92 не отправляет UART

Если при прошивке HEX из моего архива осциллограф показывает отсутствие переключений на PD1, вышлите схемотехнику включения МК на support@milandr.ru
Программы UART-терминалы могут не видеть данные, если скорость обмена выставлена неправильно. Надо обязательно смотреть осциллографом что на PD1.

Страница 2 из 3 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/