Миландр

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

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 4 сообщения ] 
Автор Сообщение
СообщениеДобавлено: 2016-авг-24 14:59 
Не в сети

Зарегистрирован: 2016-авг-24 14:22
Сообщения: 2
Организация: частное лицо
Здравствуйте! Проблема в следующем: при повышении частоты МК (1986ВЕ1Т) перестаёт работать и прошиваться. Прошу помощи в установлении причины сего поведения.

Что есть: Отладочная плата EVAL 22.0 rev.4; среда разработки - Keil 5.17; установлены внешний резонатор 16МГц и генератор 16МГц; тестовый проект с Timer1 и светодиодом.
При установке тактовой частоты 56 МГц (в качестве HCLK=HSE/2, умножитель PLL_CPU_MUL=6) контроллер работает исправно, однако на 64 МГц (PLL_CPU_MUL=7) происходят странные вещи - контроллер повисает и не перепрошивается.
При отладке в режиме по шагам нарушается порядок программы, происходит зацикливание. При стирании flash Keil говорит что всё прошло отлично, но старая программа не стирается (стирается только с помощью перемычки ITCMLAEN). В целом Keil никаких ошибок не выдаёт.

Что пробовал: менял задержку EERPOM_CMD от 0 до 4 - никакой разницы; менял источник тактирования, и от генератора, и от резонатора, никакой разницы.

Код инициализации:
void clock_config()
{
	MDR_RST_CLK->HS_CONTROL=0x0D;			         //HSE and HSE2 on, generator mode
	while((MDR_RST_CLK->CLOCK_STATUS&0x0C)==0);	//wait, until HSE und HSE2 unstable

	MDR_RST_CLK->PER_CLOCK|=0x08;				//EEPROM_CTRL Clock enable
	MDR_EEPROM->CMD=2;						      //Delay = 2
	MDR_RST_CLK->PER_CLOCK&=(~0x08);			//EEPROM_CTRL Clock disable

	MDR_RST_CLK->CPU_CLOCK=0x00000003;		     //CPU_C1 frequency = HSE/2 (8MHz)
	MDR_RST_CLK->PLL_CONTROL=0x0704;			   //CPU_PLL On, CPU_MUL=6 (8*(7+1) MHz)
	while((MDR_RST_CLK->CLOCK_STATUS&0x02)==0);	//wait, until PLL frequency unstable
	MDR_RST_CLK->CPU_CLOCK=0x00000107;		  //CPU frequency 64MHz, HSE/2
	
	MDR_RST_CLK->PER_CLOCK|=0x01004000;		     //PORTD clock enablye, TIM1
	MDR_RST_CLK->TIM_CLOCK=0x01000000;			//TIM1 enable
}
Заранее спасибо


Вернуться к началу
СообщениеДобавлено: 2016-авг-24 15:59 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1528
Откуда: Тула
   MDR_EEPROM->CMD = 2<<3;                        //Delay = 2

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


Вернуться к началу
СообщениеДобавлено: 2016-авг-26 08:27 
Не в сети

Зарегистрирован: 2016-авг-24 14:22
Сообщения: 2
Организация: частное лицо
prostoRoman писал(а):
   MDR_EEPROM->CMD = 2<<3;                        //Delay = 2
Спасибо, заработало.


Вернуться к началу
СообщениеДобавлено: 2016-окт-13 14:36 
Не в сети

Зарегистрирован: 2015-апр-10 16:34
Сообщения: 3
Добрый день! Попробую спросить в этой теме.
В МК начиная с ревизии 2 необходимо включать оба бита HSE_ON и HSE_ON2? В документации по этому поводу как то не очень понятно написано на мой взгляд.

P.S. Кажется разобрался. HSE2 включает дополнительный осциллятор на 25 МГц для сети, а выход HSE осциллятора идет на вход PLL и оттуда на CPU_C3 и HCLK.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 4 сообщения ] 

Часовой пояс: UTC+03:00


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

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


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

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB