Поиск
Показаны результаты для тегов 'миландр'.
-
Встала задача организовать запись файлов на USB флешку с помощью контроллера Миландра 1986ВЕ1Т или 1986ВЕ3Т. Поискав в интернете, под миландр ничего не нашлось, в основном всё под STM32. Под миландр нашёл только виртуальный COM-порт, но это не то, чего хотелось бы. Может у кого-то есть опыт записи чего-либо на флешку с помощью миландра. Буду крайне благодарен за любую помощь Алексей
-
Приветствую всех кому интересна тема. Обнаружена ошибка в отображении PORTG при дебаггинге микроконтроллера 1986ВЕ3Т среде IAR. Если точнее, то базовый адрес порта G для указанной микросхемы указывает на область KEYBOARD. И поэтому при отладке вы не увидите реальных значений параметров порта G. Настоящий адрес PORTG = 0x4011_8000, а в файле конфига дебаггера в разделе GPIOG стоит 0x4011_0000, а это как раз адрес клавиатуры. В приложении выкладываю файл jbr_MDR1986VE3.ddf с исправленным адресом, если кому лень исправлять вручную самому. Этот файл надо поместить в папку установки IAR. если IAR установлен в папку по умолчанию, то это путь C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\config\debugger\Milandr. Сначала переименуйте оригинальный файл jbr_MDR1986VE3.ddf в jbr_MDR1986VE3.ddf.bak, а затем скопируйте туда файл из приложения. На правах "AS IS", ответственность на использующем. Привет jbr_MDR1986VE3.ddf
-
Миландр 1986ВЕ1Т
MaksR опубликовал тема в ARM, 32bit
Всем доброго времени суток! Хотел данную проблему поднять на форуме Миландра, но там активация аккаунта что-то затягивается... жду ответа от админов форума. Есть Отладочный комплект для микроконтроллера 1986ВЕ1Т. Пытаюсь настроить тактирование камня на частоте 80 МГц (внешний кварц 8 МГц). Делаю так: /* Включаем генератор на внешнем кварце (8 МГц) */ RST_CLK_HSEconfig(RST_CLK_HSE_ON); while (RST_CLK_HSEstatus() != SUCCESS); /* Ждем стабилизации частоты */ /* Настраиваем источник и коэффициент умножения PLL * (CPU_C1_SEL = HSE / 1 * 10 = 8 МГц / 1 * 10 = 80 МГц) */ RST_CLK_CPU_PLLconfig(RST_CLK_CPU_PLLsrcHSEdiv1, RST_CLK_CPU_PLLmul10); /* Включаем PLL, но еще не подключаем к кристаллу (Блок умножения частоты) */ RST_CLK_CPU_PLLcmd(ENABLE); while (RST_CLK_CPU_PLLstatus() != SUCCESS); /* Ждем стабилизации */ /* Делитель С3 (CPU_C3_SEL = CPU_C2_SEL) */ RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV1); /* На С2 идет с PLL, а не напрямую с С1 (CPU_C2_SEL = PLL) */ RST_CLK_CPU_PLLuse(ENABLE); /* CPU берет тактирование с выхода С3 * (HCLK_SEL = CPU_C3_SEL = 80 МГц) */ RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3); Проверить пытаюсь так: void delay_ms(volatile uint64_t milisec) { milisec *= 80000; /* CLK_CPU = 80 MHz -> 80000 - 1ms */ while (milisec) milisec--; } .... int main(void) { freq_init(); /* 80 МГц */ tmr_init(); while(1) { delay_ms(1000); } } Еще настраиваю таймер на прерывание каждую миллисекунду (на вход модуля должно быть 80 МГц после настройки частот): /* Модуль tmr.c */ #define CLOCK_PCLK RST_CLK_PCLK_TIMER1 #define TIMERn MDR_TIMER1 #define TIMER_IRQ TIMER1_IRQn /* 1 ms */ void tmr_init(void) { TIMER_CntInitTypeDef tmr; RST_CLK_PCLKcmd(CLOCK_PCLK, ENABLE); /* Тактирование таймера */ /* 80 MHz на вход. Настройка на 1ms */ tmr.TIMER_ETR_Prescaler = TIMER_ETR_Prescaler_None; /* Не делить входную частоту */ tmr.TIMER_Prescaler = 8000; tmr.TIMER_Period = 10; /* Дойдя до этого значения - перезагружаем таймер */ tmr.TIMER_CounterMode = TIMER_CntMode_ClkFixedDir; /* Фиксированное направление счета */ tmr.TIMER_CounterDirection = TIMER_CntDir_Up; /* счет вверх */ tmr.TIMER_ARR_UpdateMode = TIMER_ARR_Update_On_CNT_Overflow; /* Обновление по переполнению */ tmr.TIMER_IniCounter = 0; TIMER_CntInit(TIMERn, &tmr); TIMER_ITConfig(TIMERn, TIMER_STATUS_CNT_ZERO | TIMER_STATUS_CNT_ARR, ENABLE); NVIC_EnableIRQ(TIMER_IRQ); TIMER_Cmd(TIMERn, ENABLE); } void TIMER1_IRQHandler(void) { TIMER_ClearFlag(TIMERn, TIMER_STATUS_CNT_ZERO | TIMER_STATUS_CNT_ARR); led_set(LED_1, led_get(LED_1) ^ 1); /* Блинк светодиодом */ } Но не получаю частоты 80 МГц даже близко... Подскажите, возможно, я жестко косячу...