Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 22  След.
Автор Сообщение
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-сен-15 22:52 
Не в сети

Зарегистрирован: 2015-сен-12 10:28
Сообщения: 2
HEMAH писал(а):
1. По-моему, формулировка сообщения должна звучать так:

Mystery123 писал(а):
Здравствуйте, я решил позаниматься кодом для 1986BE91. Самого 1986BE91 нету, поэтому хочу использовать Keil_MDK. Скачал ПО для МК. При установке ПО возникает подряд 3 одинаковые ошибки "SVDConv no exited an error. No uVision SystemViewer file created".
Как ее решить? Извините, если чего-то не понимаю, я только учусь.


А то совсем витиевато получилось.

2. Попробуйте установить pack для Кейла приведённый во вложении. По крайней мере у меня, для версии Keil uVision 5.15 ставится без проблем.

P.S. сам pack взят отсюда, за что R Max большое человеческое Спасибо :)

Спасибо, помогло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-сен-27 13:44 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
HEMAH писал(а):
P.S. сам pack взят отсюда, за что R Max большое человеческое Спасибо :)


Не за что :D

Только смотрите аккуратнее, это неофициальная версия, не от Vendor-ов ... а то с нумерацией запутаетесь ...

Вот кстати, продублирую из этой темы viewtopic.php?f=34&t=2664 сюда. Во вложении моё видение драйверов SPI, UART, Ethernet для 1986ВЕ1Т для Keil 4.74 Professional http://www.keil.com/rl-arm/rl-tcpnet.asp и проект веб-сервера на SD-карте (файлы из папки Web закинуть на SD-карту; IP статические, адрес устройства 192.168.0.2, адрес хоста 192.168.0.1).

P.S. Если хотите, чтобы микроконтроллер получал IP от роутера и выводил адрес, например на ЖК-индикатор (строка StrBuf), поставьте галочку в Wizard-файле Net_Config.c напротив пункта Ethernet Network Interface->Dynamic Host Configuration и добавьте код
Открыть
...
#include <Net_Config.h>
extern LOCALM localm[];

bool fGetIP = false;
char StrBuf[50];
...
int main (void)
{
...
while (true)
{
/* Poll the system tick timer */
timer_poll ();
/* Run main TcpNet 'thread' */
main_TcpNet ();

if ((mem_test (localm[NETIF_ETH].IpAdr, 0, 4) == __FALSE) && !fGetIP)
{
fGetIP = true;

sprintf (StrBuf, "%u.%u.%u.%u", localm[NETIF_ETH].IpAdr[0], localm[NETIF_ETH].IpAdr[1],
localm[NETIF_ETH].IpAdr[2], localm[NETIF_ETH].IpAdr[3]);
}
}
Закрыть


Вложения:
web_server_on_sd_card_telnet_ftp.zip [1.85 МБ]
Скачиваний: 227
Keil_4_74_Drivers_1986VE1T.zip [31.29 КБ]
Скачиваний: 278

_________________
Hack the Planet!


Последний раз редактировалось R Max 2015-окт-04 13:08, всего редактировалось 2 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-окт-03 19:59 
Не в сети

Зарегистрирован: 2012-дек-11 21:35
Сообщения: 170
Откуда: Казань
Добавил поддержку мк MDR1901VC1T компилятор gcc (не тестировалось на оборудовании).
emdr1986x-std-per-lib
Применение:
Получение прошивки DSP ядра в стороннем компиляторе. Полученный код прошивки DSP оформляется в коде для RISC ядра в виде массивов (название и кол-во которых не имеет значения):
const char dsp_code[] __attribute__((section(".dsptext"))) =
{
0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, ... /* код DSP */
};

const char dsp_data[] __attribute__((section(".dspdata"))) =
{
0xA1, 0xB2, 0xC3, 0xD4, 0xE5, 0xF6, ... /* данные DSP */
};
Данные массивы генерируются из файла прошивки DSP сторонними приложениями.
Компилятор gcc компилирует прошивку для RISC ядра.
В процессе стартового кода данные массивы загружаются в соответствующие секции памяти DSP.
Также как вариант можно использовать собственный код для загрузки массивов DSP (возможно предварительно сжатых с последующей распаковкой), тогда атрибут секции "__attribute__((section()" указывать не надо и стартовый загрузчик не будет самостоятельно ничего загружать в секции памяти DSP.
П.с. возможны ошибки. Баг трекер


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-окт-11 21:53 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Подчистил ошибку в передаче по UART в самописном драйвере CMSIS.
Во вложении:
- исправленный драйвер,
- проект перенаправления информации функции printf() на COM-порт для 1986ВЕ1Т,
- тест самописных драйверов CMSIS с помощью появившегося пака ARM.CMSIS-Driver_Validation.1.0.0.pack https://www.keil.com/dd2/pack/ https://www.keil.com/pack/doc/CMSIS/Dri ... ation.html для отладочной платы 2-ой ревизии под 1986ВЕ93У (для режима SPI_LoopBack необходимо замкнуть контакты X25:19-X25:22 (SSP1_TXD-SSP1_RXD), для режима UART_LoopBack необходимо замкнуть контакты X24:5-X24:6 (UART2_RXD-UART2_TXD)), отладочная информация выводится на разъём RS-232 отладочной платы (UART1) - результаты вот такие (пока их интерпретирую) :wink: :
Открыть
CMSIS-Driver Test Suite Oct 11 2015 21:19:58
TEST 01: SPI_GetCapabilities PASSED
TEST 02: SPI_Initialization PASSED
TEST 03: SPI_PowerControl
DV_SPI.c (244) [WARNING] Low power is not supported
TEST 04: SPI_Config_PolarityPhase PASSED
TEST 05: SPI_Config_DataBits PASSED
TEST 06: SPI_Config_BitOrder
DV_SPI.c (315) [WARNING] Bit order LSB_MSB is not supported
TEST 07: SPI_Config_SSMode
DV_SPI.c (343) [WARNING] Slave select MASTER_HW_INPUT is not supported
TEST 08: SPI_Config_BusSpeed
DV_SPI.c (392) [WARNING] Specific control set speed: 400kHz, Get speed: 1kHz
DV_SPI.c (403) [WARNING] General control set speed: 400kHz, Get speed: 1kHz
DV_SPI.c (392) [WARNING] Specific control set speed: 1000kHz, Get speed: 4kHz
DV_SPI.c (403) [WARNING] General control set speed: 1000kHz, Get speed: 4kHz
DV_SPI.c (392) [WARNING] Specific control set speed: 4000kHz, Get speed: 17kHz
DV_SPI.c (403) [WARNING] General control set speed: 4000kHz, Get speed: 17kHz
DV_SPI.c (392) [WARNING] Specific control set speed: 10000kHz, Get speed: 52kHz
DV_SPI.c (403) [WARNING] General control set speed: 10000kHz, Get speed: 52kHz
DV_SPI.c (392) [WARNING] Specific control set speed: 25000kHz, Get speed: 40000kHz
DV_SPI.c (403) [WARNING] General control set speed: 25000kHz, Get speed: 40000kHz
DV_SPI.c (392) [WARNING] Specific control set speed: 50000kHz, Get speed: 40000kHz
DV_SPI.c (403) [WARNING] General control set speed: 50000kHz, Get speed: 40000kHz
TEST 09: SPI_Config_CommonParams PASSED
TEST 10: SPI_Send PASSED
TEST 11: SPI_Receive PASSED
TEST 12: SPI_Loopback_CheckBusSpeed
DV_SPI.c (525) [WARNING] At 1kHz: measured time is 0.002960 x expected time
DV_SPI.c (525) [WARNING] At 4kHz: measured time is 0.004743 x expected time
DV_SPI.c (525) [WARNING] At 17kHz: measured time is 0.004271 x expected time
DV_SPI.c (525) [WARNING] At 52kHz: measured time is 0.013047 x expected time
DV_SPI.c (525) [WARNING] At 40000kHz: measured time is 10.689063 x expected time
DV_SPI.c (525) [WARNING] At 40000kHz: measured time is 10.700521 x expected time
TEST 13: SPI_Loopback_Transfer PASSED
TEST 14: SPI_CheckInvalidInit
DV_SPI.c (213) [FAILED]
DV_SPI.c (219) [FAILED]
DV_SPI.c (222) [FAILED]
TEST 15: USART_GetCapabilities PASSED
TEST 16: USART_Initialization PASSED
TEST 17: USART_PowerControl
DV_USART.c (243) [WARNING] Low power is not supported
TEST 18: USART_Config_PolarityPhase PASSED
TEST 19: USART_Config_DataBits
DV_USART.c (309) [WARNING] Data Bits = 9 are not supported
TEST 20: USART_Config_StopBits
DV_USART.c (335) [WARNING] Stop Bits = 1.5 are not supported
DV_USART.c (339) [WARNING] Stop Bits = 0.5 are not supported
TEST 21: USART_Config_Parity PASSED
TEST 22: USART_Config_Baudrate PASSED
TEST 23: USART_Config_CommonParams PASSED
TEST 24: USART_Send PASSED
TEST 25: USART_Loopback_CheckBaudrate
DV_USART.c (429) [WARNING] At 9600bps: measured time is 0.998419 x expected time
DV_USART.c (429) [WARNING] At 19200bps: measured time is 0.998509 x expected time
DV_USART.c (429) [WARNING] At 38400bps: measured time is 0.998651 x expected time
DV_USART.c (429) [WARNING] At 57600bps: measured time is 0.991168 x expected time
DV_USART.c (429) [WARNING] At 57600bps: measured time is 0.991168 x expected time
DV_USART.c (429) [WARNING] At 57600bps: measured time is 0.991166 x expected time
TEST 26: USART_Loopback_Transfer PASSED
TEST 27: USART_CheckInvalidInit
DV_USART.c (212) [FAILED]
DV_USART.c (218) [FAILED]
DV_USART.c (221) [FAILED].
TEST Summary: 27 Tests, 27 Executed, 16 Passed, 2 Failed, 9 Warnings.
TEST Result: FAILED
Закрыть


Вложения:
Board93Y_CMSIS_Drv_Val.zip [1.64 МБ]
Скачиваний: 216
1986ВЕ1Т_RetargetUART.zip [847.26 КБ]
Скачиваний: 246
CMSIS_Correct_UART.zip [2.68 МБ]
Скачиваний: 190

_________________
Hack the Planet!
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-окт-18 12:48 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Подчистил код, возвращающий скорость обмена по SPI, во вложении пак с откорректированным драйвером.
Теперь на наборе частот: 400, 1000, 4000, 10000, 20000, 40000 Гц функция возвращает правильные значения, в режиме КЗ, начиная с частоты 10000 Гц, видимо сказывается загрузка микроконтроллера, поэтому задержка ответа возрастает:
Открыть
CMSIS-Driver Test Suite Oct 18 2015 12:27:41
TEST 01: SPI_GetCapabilities PASSED
TEST 02: SPI_Initialization PASSED
TEST 03: SPI_PowerControl
DV_SPI.c (244) [WARNING] Low power is not supported
TEST 04: SPI_Config_PolarityPhase PASSED
TEST 05: SPI_Config_DataBits PASSED
TEST 06: SPI_Config_BitOrder
DV_SPI.c (315) [WARNING] Bit order LSB_MSB is not supported
TEST 07: SPI_Config_SSMode
DV_SPI.c (343) [WARNING] Slave select MASTER_HW_INPUT is not supported
TEST 08: SPI_Config_BusSpeed PASSED
TEST 09: SPI_Config_CommonParams PASSED
TEST 10: SPI_Send PASSED
TEST 11: SPI_Receive PASSED
TEST 12: SPI_Loopback_CheckBusSpeed
DV_SPI.c (525) [WARNING] At 10000kHz: measured time is 2.509835 x expected time
DV_SPI.c (525) [WARNING] At 20000kHz: measured time is 5.150500 x expected time
DV_SPI.c (525) [WARNING] At 40000kHz: measured time is 10.666406 x expected time
TEST 13: SPI_Loopback_Transfer PASSED
TEST 14: SPI_CheckInvalidInit
DV_SPI.c (213) [FAILED]
DV_SPI.c (219) [FAILED]
DV_SPI.c (222) [FAILED]
TEST 15: USART_GetCapabilities PASSED
TEST 16: USART_Initialization PASSED
TEST 17: USART_PowerControl
DV_USART.c (243) [WARNING] Low power is not supported
TEST 18: USART_Config_PolarityPhase PASSED
TEST 19: USART_Config_DataBits
DV_USART.c (309) [WARNING] Data Bits = 9 are not supported
TEST 20: USART_Config_StopBits
DV_USART.c (335) [WARNING] Stop Bits = 1.5 are not supported
DV_USART.c (339) [WARNING] Stop Bits = 0.5 are not supported
TEST 21: USART_Config_Parity PASSED
TEST 22: USART_Config_Baudrate PASSED
TEST 23: USART_Config_CommonParams PASSED
TEST 24: USART_Send PASSED
TEST 25: USART_Loopback_CheckBaudrate
DV_USART.c (429) [WARNING] At 9600bps: measured time is 0.998419 x expected time
DV_USART.c (429) [WARNING] At 19200bps: measured time is 0.998509 x expected time
DV_USART.c (429) [WARNING] At 38400bps: measured time is 0.998650 x expected time
DV_USART.c (429) [WARNING] At 57600bps: measured time is 0.991193 x expected time
DV_USART.c (429) [WARNING] At 57600bps: measured time is 0.991188 x expected time
DV_USART.c (429) [WARNING] At 57600bps: measured time is 0.991190 x expected time
TEST 26: USART_Loopback_Transfer PASSED
TEST 27: USART_CheckInvalidInit
DV_USART.c (212) [FAILED]
DV_USART.c (218) [FAILED]
DV_USART.c (221) [FAILED].
TEST Summary: 27 Tests, 27 Executed, 17 Passed, 2 Failed, 8 Warnings.
TEST Result: FAILED.
Закрыть


Необходимо также правильно выбирать коэффициенты деления клоков SPI, драйвер будет неправильно подбирать, точнее максимально близко подбирать коэффициенты деления CPSR (2, 4, 6, ... , 254) и SCR (0, 1, 2, ... , 255), чтобы выполнялось соотношение SPI_CLK = HCLK / SPI_DIV_CLK / (CPSR * (SCR+1)).
Для UART, как известно, частота подбирается в большинстве случаев с ошибкой, обычно 2-3 %, этим обусловлены результаты теста КЗ UART вида measured time is 0.99*.


Вложения:
CMSIS_Drv_Pack.zip [2.68 МБ]
Скачиваний: 247

_________________
Hack the Planet!
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-окт-30 22:12 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
Уважаемые коллеги, сегодня скачал последнюю версию Keil(mdk517) с официального сайта, сразу после установки решил установить Software pack для Keil MDK 5, который взял с сайта Миландра, но в процессе установки этого pack`а вылетает ошибка: SVDConv exited with an error

Установка завершается с ошибкой. Может кто сталкивался?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-окт-31 02:03 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-окт-19 17:25
Сообщения: 528
Откуда: г. Владимир ОАО "ВКБР"
Mr.Grey писал(а):
Уважаемые коллеги, сегодня скачал последнюю версию Keil(mdk517) с официального сайта, сразу после установки решил установить Software pack для Keil MDK 5, который взял с сайта Миландра, но в процессе установки этого pack`а вылетает ошибка: SVDConv exited with an error

Установка завершается с ошибкой. Может кто сталкивался?


Лично я решил эту ошибку, взяв Pack у пользователя R max из архивов по ссылке, за что уже выразил ему Большое человеческое Спасибо :)

_________________
"В радиотехнике, как в церкви - многое не понятно, но приходится верить"
ВлГУ. к.т.н Садовский Н.В


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-окт-31 13:54 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Mr.Grey писал(а):
Уважаемые коллеги, сегодня скачал последнюю версию Keil(mdk517) с официального сайта, сразу после установки решил установить Software pack для Keil MDK 5, который взял с сайта Миландра, но в процессе установки этого pack`а вылетает ошибка: SVDConv exited with an error

Установка завершается с ошибкой. Может кто сталкивался?


Да, vendor-ы добавили поддержку 1986ВЕ8Т и каким-то образом убили все файлы .svd (для отладочных окон периферии)-Keil не может их скомпилировать в .sfr ... скачайте отсюда - здесь прошлая официальная нормальная версия viewtopic.php?f=22&t=607&start=45 Milandr.MDR1986BExx.1.4.0.zip (сообщение andrey.s)

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-01 11:06 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
Уважаемый, R Max, огромное, Вам, спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-01 12:40 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Как я понял http://milandr.ru/index.php?page=programmnoe-obespech mdr_spl_v1.4.1.pack :
1. Название папки в паке не SVD, а SFD - в .pdsc-файле строки типа <debug svd="IDE\keil\SVD\MDR1986BE91.svd"/> - ... определитесь что-ли :wink:
2. И куда действительно потеряли файл MDR1986BE4.svd :!:

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-04 19:25 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
Уважаемые коллеги, научите как пользоваться Standart Peripherals для настройки тактирования ядра 1986ВЕ92. Есть ли пример кода в Keil для того чтобы включить тактирование от внешнего кварца на 8 МГц, отключить остальные ненужные внутренние генераторы, а также инициализировать SysTick и затактировать его без деления от этой же частоты. Заранее благодарен!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-04 20:06 
Не в сети

Зарегистрирован: 2012-апр-23 12:55
Сообщения: 47
Настроить тактирование как вы хотите можно примерно так
Код:
#include "MDR32Fx.h"

void SystemInit (void)
{
   // Включение тактирования RST_CLK и BKP_CLK
   MDR_RST_CLK->PER_CLOCK = (uint32_t)0x8000010;

   // Устанавливается минимальная задержка при считывании из flash-памяти
   MDR_EEPROM->CMD = 3 << EEPROM_CMD_DELAY_Pos;

   // Запуск внешнего кварца
   MDR_RST_CLK->HS_CONTROL = RST_CLK_HS_CONTROL_HSE_ON;
   while (!(MDR_RST_CLK->CLOCK_STATUS & RST_CLK_CLOCK_STATUS_HSE_RDY)){}
   
   // Переключение CPU PLL на тактирование от внешнего кварца 8 МГц
   MDR_RST_CLK->CPU_CLOCK = (2 << RST_CLK_CPU_CLOCK_CPU_C1_SEL_Pos);

   // Инициализация CPU PLL
   // 8 МГц * (9 + 1) = 80 МГц
   MDR_RST_CLK->PLL_CONTROL = 9 << RST_CLK_PLL_CONTROL_PLL_CPU_MUL_Pos;
   // включение CPU PLL
   MDR_RST_CLK->PLL_CONTROL |= RST_CLK_PLL_CONTROL_PLL_CPU_ON ;
   
   while (!(MDR_RST_CLK->CLOCK_STATUS & RST_CLK_CLOCK_STATUS_PLL_CPU_RDY)){}

   // Переключение CPU на тактирование от CPU PLL
   MDR_RST_CLK->CPU_CLOCK |= (1 << RST_CLK_CPU_CLOCK_HCLK_SEL_Pos) |
                             (1 << RST_CLK_CPU_CLOCK_CPU_C2_SEL_Pos);

   SystemCoreClockUpdate();

   // Установка адреса таблицы векторов прерываний
   #pragma section = ".intvec"
   SCB->VTOR = (uint32_t)__section_begin(".intvec");
}

Инициализировать SysTick можно вызвав функцию SysTick_Config(uint32_t ticks) из файла core_cm3.h


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-04 20:56 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
Сергей86, пытаюсь вызвать SysTick_Config(uint32_t ticks), компилятор ругается. Нашел в core_cm3.h

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */

SysTick->LOAD = ticks - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}

Но не могу понять, как работать с этой функцией, есть пример? Хочу сделать на базе SysTicka функцию delay_ms();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-04 21:12 
Не в сети

Зарегистрирован: 2012-апр-23 12:55
Сообщения: 47
Лучше не трогать системный таймер ради такой ерунды, как функция задержки. Сделайте функцию задержки на основе обычного таймера, а как работать с обычным таймером написано в даташите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-05 08:11 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Сергей86 писал(а):
Лучше не трогать системный таймер ради такой ерунды, как функция задержки. Сделайте функцию задержки на основе обычного таймера, а как работать с обычным таймером написано в даташите.


И потерять целый таймер с advanced-функциями типа PWM & CAP ...

Настройка блока RST_CLK - пример в папке C:\Keil_v5\ARM\Pack\Keil\MDR1986BExx\1.4\Examples\MDR1986VE9x\MDR32F9Q1_EVAL\RST_CLK\CPU_Clock.

Про SysTick - http://we.easyelectronics.ru/LPC/lpcxpr ... emeni.html http://easyelectronics.ru/arm-uchebnyj- ... ajmer.html.
Если вообще CMSIS RTOS использовать http://www.keil.com/pack/doc/CMSIS/RTOS ... d625162255 - функция osStatus osDelay ( uint32_t millisec )

Мой вариант:
Открыть
delay.h

#ifndef delay_h
#define delay_h

// 1/(80 МГц) = 12,5 нс
#define Del_25_ns 2
#define Del_37_5_ns 3
#define Del_50_ns 4
#define Del_237_5_ns 19
#define Del_275_ns 22
#define Del_1_us 80
#define Del_5_us 400
#define Del_10_us 800
#define Del_40_us 3200
#define Del_100_us 8000
#define Del_500_us 40000
#define Del_1_ms 80000
#define Del_1_5_ms 120000
#define Del_4_ms 320000
#define Del_20_ms 1600000
#define Del_40_ms 3200000
#define Del_0_1_s 8000000
#define Del_0_2_s 16000000

#endif

delay.c
#include "delay.h"

void DelayTick(const unsigned int DelTick)
{
SysTick->VAL = 0;
SysTick->LOAD = DelTick;

SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;

while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);

SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

void Delay_mSec(unsigned short Del_mSec)
{
unsigned short Del_mSecCounter;

for(Del_mSecCounter = 0; Del_mSecCounter < Del_mSec; Del_mSecCounter++)
DelayTick(Del_1_ms);
}

void DelaySec(unsigned short DelSec)
{
unsigned int DelSecCounter, DelSecMax;

DelSecMax = 5*DelSec;

for(DelSecCounter = 0; DelSecCounter < DelSecMax; DelSecCounter++)
DelayTick(Del_0_2_s);
}

В main.c
#include "delay.h"

SysTick->CTRL =
(0 << SysTick_CTRL_ENABLE_Pos) |
(0 << SysTick_CTRL_TICKINT_Pos) |
(1 << SysTick_CTRL_CLKSOURCE_Pos) |
(0 << SysTick_CTRL_COUNTFLAG_Pos);

DelayTick (Del_4_ms);
Delay_mSec (4);
DelaySec (4);
Закрыть

_________________
Hack the Planet!


Последний раз редактировалось R Max 2015-ноя-05 18:57, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 22  След.

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


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

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


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

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