Перейти к содержанию
    

miksher2008

Свой
  • Постов

    63
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о miksher2008

  • Звание
    Участник
    Участник
  • День рождения 17.05.1986

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Подскажи что значит на опенсорцах? Где?
  2. Занимаюсь разработкой ПО на LabWindows\CVI. Помогите найти или поделитесь информацией как работать с устройствами по SNMP. В инете нашел, что можно через API функции в Visual C++ реализовать считывание параметров с устройств по SNMP. Можно ли в CVI реализовать такое? Есть ли какие-нибудь примеры и т.д.? Заранее спасибо!
  3. Вот мое резюме на SuperJob. Программирование МК и под WinXP/
  4. Вот пример все работает по USART1 //******************************** Обработчик прерывания Usart1 *********************************** void Interrupt_Usart1(void) { //****************** Output если передался байт ****************************** if (USART1_SR_bit.TC == 1 && USART1_CR1_bit.TCIE == 1) {//передача следующего байта usart_count++; if (usart_count < num_byte_out) { USART1_DR = usart_data_output[usart_count] & 0x1FF; if (usart_count >= num_byte_out-1) { usart_count = 0; USART1_CR1_bit.RXNEIE = 1; // разрешение прерывания когда Read Data Register не пуст (Input) USART1_CR1_bit.TCIE = 0; // запрешеним прерывания когда передача байта закончится (Output) } } USART1_SR_bit.TC = 0; } //************** Input если на входе появились данные (байт) ***************** if (USART1_SR_bit.RXNE == 1 && USART1_CR1_bit.RXNEIE == 1) {// считывание очередного байта if (usart_count < 4) { usart_data_input[usart_count] = USART1_DR; usart_count++; flag_start_input_usart = 1; }else { // если считана вся последовательность байт usart_data_input[usart_count] = USART1_DR; flag_start_input_usart = 0; usart_count = 0; } USART1_SR_bit.RXNE = 0; } } А инициализация проходит следующим образом: //****************** Инициализация Usart1 ********************************************************* void Usart1Init(void) { // инизиализация clocks и pins RCC_APB2ENR_bit.USART1EN = 1; // включаем clock к usart1 RCC_APB2RSTR_bit.USART1RST = 0; // сброс Usart1 RCC_APB2ENR_bit.IOPAEN = 1; // включаем clock к GPIOA RCC_APB2ENR_bit.AFIOEN = 1; // включаем clock к AFIOEN RCC_APB2RSTR_bit.IOPARST = 0; // сброс GPIOA RCC_APB2RSTR_bit.AFIORST = 0; // сброс AFIO AFIO_MAPR_bit.USART1_REMAP = 0; // TX/PA9, RX/PA10 // GPIOA_BRR_bit.BR9 = 1; // сброс выходного буферного регистра порта // GPIOA_BRR_bit.BR10 = 1; // сброс выходного буферного регистра порта GPIOA_CRH_bit.MODE9 = 3; // TX - output - Output mode, max speed 50 MHz. GPIOA_CRH_bit.CNF9 = 2; // TX - output - Alternate function output Push-pull GPIOA_CRH_bit.MODE10 = 0; // RX - input - Input mode (reset state) GPIOA_CRH_bit.CNF10 = 1; // RX - input - Floating input (reset state) //---------- инизиализация USART - CR1 ----------------------------------------- USART1_CR1_bit.UE = 0; // USART prescaler and outputs disabled USART1_CR1_bit.M = 0; // 1 Start bit, 8 Data bits, n Stop bit USART1_CR1_bit.PCE = 0; // Parity control disabled USART1_CR1_bit.TE = 1; // Transmitter is enabled USART1_CR1_bit.RE = 1; // Receiver is enabled and begins searching for a start bit //---------- инизиализация USART - CR2 ----------------------------------------- USART1_CR2_bit.STOP = 0; // 1 Stop bit USART1_CR2_bit.CLKEN = 0; // SCLK pin disabled USART1_CR2_bit.CPOL = 0; // Steady low value on SCLK pin outside transmission window USART1_CR2_bit.CPHA = 0; // The first clock transition is the first data capture edge USART1_CR2_bit.LBCL = 0; // The clock pulse of the last data bit is n ot o utput to the SCLK pin. //---------- инизиализация USART - CR3 ----------------------------------------- USART1_CR3_bit.CTSE = 0; // CTS hardware flow control disabled USART1_CR3_bit.RTSE = 0; // RTS hardware flow control disabled //11718.75 //USART1_BRR_bit.DIV_Mantissa = 64; //USART1_BRR_bit.DIV_Fraction = 0; //9600 USART1_BRR_bit.DIV_Mantissa = 78; //USART1_BRR_bit.DIV_Fraction = 0; USART1_BRR_bit.DIV_Fraction = 2; USART1_CR1_bit.TXEIE = 0; // разрешение прерывания когда Transmit Data Register пуст (Output) USART1_CR1_bit.RXNEIE = 1; // разрешение прерывания когда Read Data Register не пуст (Input) USART1_CR1_bit.PEIE = 1; USART1_CR1_bit.TCIE = 0; USART1_CR1_bit.IDLEIE = 0; USART1_CR2_bit.LBDIE = 0; USART1_CR3_bit.CTSIE = 0; USART1_CR3_bit.EIE = 0; USART1_CR1_bit.UE = 1; // ВКЛЮЧАЕМ USART1 }
  5. STM32F103x

    Здравствуйте Посмотрите пожалуйста пример программки миганием светодиода (не получается помигать) В чем ошибка? //******************************************************************************** ***************** //******************* Настойка тактирования процессора ******************************************** //******************************************************************************** ***************** void SetupClock(void) { // 1. включаем внутренний генератор RCC_CR_bit.HSION = 1; // включаем внутренний генератор while(RCC_CR_bit.HSIRDY != 1){} // ожидаем потверждения включения внутреннего генератора // 2. %%%%%%%%%%%% отключаем SYSCLK %%%%%%%%%%%%%%%%%%%%%%%%%% RCC_CFGR_bit.SW = 0; // системный clock не выбран while(RCC_CFGR_bit.SWS != 0){} // ожидаем потверждения выключения SYSCLK // 3. отключаем внешний генератор RCC_CR_bit.HSEON = 0; // отключаем внешний генератор RCC_CR_bit.HSEBYP = 0; // не замыкаем внешний генратор с SYSCLK while(RCC_CR_bit.HSERDY != 0){} // ожидаем потверждения выключения внешнего генератора // 4. ******ВЫКЛЮЧАЕМ PLL******** RCC_CR_bit.PLLON = 0; // выключаем PLL while(RCC_CR_bit.PLLRDY != 0 ){} // ожидаем потверждения выключения PLL // 5. настаеваем SYSCLK RCC_CFGR_bit.PLLSRC = 0; // HSI (внутренний генератор) выбирается как вход PLL, при этом делится на 2 RCC_CFGR_bit.PLLXTPRE = 0; // HSE (внешний генератор) не делится на 2 во вход в PLL RCC_CFGR_bit.PLLMUL = 0xA; // установка умнажителя на 12 (8 МГц -> /2 -> 4 МГц -> *12 -> 48 МГц) // 6. ********ВКЛЮЧАЕМ PLL******* RCC_CR_bit.PLLON = 1; // включаем PLL while(RCC_CR_bit.PLLRDY == 0){} // ожидаем потверждения включения PLL // 7. настраемаем AHB предделитель RCC_CFGR_bit.HPRE = 0x0; // преддилитель AHB = 1 // 8. настраемаем APB1 предделитель RCC_CFGR_bit.PPRE1 = 0x4; // преддилитель APB1 = 2 // 9. настраемаем APB2 предделитель RCC_CFGR_bit.PPRE2 = 0x0; // преддилитель APB2 = 1 RCC_CR_bit.CSSON = 0; // отключаем внешний детектор clock // 12. %%%%%%%%%%%%%%%%%%% включаем SYSCLK %%%%%%%%%%%%%%%%%%%%% RCC_CFGR_bit.SW = 2; // PLL как системный clock while(RCC_CFGR_bit.SWS != 2){} // ожидаем потверждения включения SYSCLK } //******************************************************************************** ***************** //******************************************************************************** ***************** //******************* Инициализация порта D ******************************************************* //******************************************************************************** ***************** void PortDInit(void) { RCC_APB2ENR_bit.IOPDEN = 1; // включаем clock к GPIOA RCC_APB2RSTR_bit.IOPDRST = 1; // сброс GPIOA GPIOD_BRR_bit.BR2 = 1; // сброс PD2 GPIOD_CRL_bit.MODE2 = 3; // Output mode, max speed 50 MHz. GPIOD_CRL_bit.CNF2 = 0; // output Push-pull GPIOD_ODR_bit.ODR2 = 0; // output Push-pull } затем в main() while(1) { GPIOD_BRR_bit.BR2 = 1; myDelay(3000000); GPIOD_BSRR_bit.BS2 = 1; myDelay(3000000); } Может кто-нибудь поможет с примером программы мигания светодиода Мой микроконтроллер: STM32F103xxE, LQFP64, светодиод на 54 ноге (порт D, 2-ой пин) Внешнего генератора нет использую внутренний Пример программы в прикрепленном архиве stm.rar
  6. STM32F103

    библиотека с программным обеспечение IAR (c:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\inc\ST\iostm32f10xxE.h) Хотелось бы посмотреть примеры программ с этой библиетекой
  7. STM32F103

    Здравствуйте. Посмотрите пожалуйста для Таймера 1 будет работать прерывание по вектору TIM1_UP_IRQHandler. #pragma language=extended #pragma segment="CSTACK" void __iar_program_start( void ); #pragma location = ".intvec" /* STM32F10x Vector Table entries */ const intvec_elem __vector_table[] = { { .__ptr = __sfe( "CSTACK" ) }, //0 __iar_program_start, //1 0,//NMIException, //2 0,//HardFaultException, //3 0,//MemManageException, //4 0,//BusFaultException, //5 0,//UsageFaultException, //6 0, 0, 0, 0, /* Reserved */ 0,//SVCHandler, //11 0,//DebugMonitor, //12 0, /* Reserved */ 0,//PendSVC, //14 0,//SysTickHandler, //15 0,//WWDG_IRQHandler, //16 0,//PVD_IRQHandler, //17 0,//TAMPER_IRQHandler, //18 0,//RTC_IRQHandler, //19 0,//FLASH_IRQHandler, //20 0,//RCC_IRQHandler, //21 0,//EXTI0_IRQHandler, //22 0,//EXTI1_IRQHandler, //23 0,//EXTI2_IRQHandler, //24 0,//EXTI3_IRQHandler, //25 0,//EXTI4_IRQHandler, //26 0,//DMAChannel1_IRQHandler, //27 0,//DMAChannel2_IRQHandler, //28 0,//DMAChannel3_IRQHandler, //29 0,//DMAChannel4_IRQHandler, //30 0,//DMAChannel5_IRQHandler, //31 0,//DMAChannel6_IRQHandler, //32 0,//DMAChannel7_IRQHandler, //33 0,//ADC_IRQHandler, //34 0,//USB_HP_CAN_TX_IRQHandler, //35 0,//USB_LP_CAN_RX0_IRQHandler, //36 0,//CAN_RX1_IRQHandler, //37 0,//CAN_SCE_IRQHandler, //38 0,//EXTI9_5_IRQHandler, //39 0,//TIM1_BRK_IRQHandler, //40 TIM1_UP_IRQHandler, //41 0,//TIM1_TRG_COM_IRQHandler, //42 0,//TIM1_CC_IRQHandler, //43 0,//TIM2_IRQHandler, //44 0,//TIM3_IRQHandler, //45 0,//TIM4_IRQHandler, //46 0,//I2C1_EV_IRQHandler, //47 0,//I2C1_ER_IRQHandler, //48 0,//I2C2_EV_IRQHandler, //49 0,//I2C2_ER_IRQHandler, //50 0,//SPI1_IRQHandler, //51 0,//SPI2_IRQHandler, //52 0,//USART1_IRQHandler, //53 0,//USART2_IRQHandler, //54 0,//USART3_IRQHandler, //55 0,//EXTI15_10_IRQHandler, //56 0,//RTCAlarm_IRQHandler, //57 0,//USBWakeUp_IRQHandler, //58 }; А void __iar_program_start( void ); для чего или она тут не при чем? Кто-нибудь может скинуть пример работы программы на STM32 с библиотекой от IAR. Мне нужно запустить процессор, инициализировать прерывания, таймер, АЦП и UART. С процессором вроде как разобрался, вот что получилось: void SetupClock(void) { // 1. включаем внутренний генератор RCC_CR_bit.HSION = 1; // включаем внутренний генератор while(RCC_CR_bit.HSIRDY == 0){} // ожидаем потверждения включения внутреннего генератора // 2. %%%%%%%%%%%% отключаем SYSCLK %%%%%%%%%%%%%%%%%%%%%%%%%% RCC_CFGR_bit.SW = 0; // системный clock не выбран while(RCC_CFGR_bit.SWS != 3){} // ожидаем потверждения выключения SYSCLK // 3. отключаем внешний генератор RCC_CR_bit.HSEON = 0; // отключаем внешний генератор RCC_CR_bit.HSEBYP = 0; // не замыкаем внешний генратор с SYSCLK while(RCC_CR_bit.HSERDY == 0){} // ожидаем потверждения выключения внешнего генератора // 4. ******ВЫКЛЮЧАЕМ PLL******** RCC_CR_bit.PLLON = 0; // выключаем PLL while(RCC_CR_bit.PLLRDY == 0){} // ожидаем потверждения выключения PLL // 5. настаеваем SYSCLK RCC_CFGR_bit.PLLSRC = 0; // HSI (внутренний генератор) выбирается как вход PLL, при этом делится на 2 RCC_CFGR_bit.PLLXTPRE = 0; // HSE (внешний генератор) не делится на 2 во вход в PLL RCC_CFGR_bit.PLLMUL = 0xA; // установка умнажителя на 12 (8 МГц -> /2 -> 4 МГц -> *12 -> 48 МГц) // 6. ********ВКЛЮЧАЕМ PLL******* RCC_CR_bit.PLLON = 1; // включаем PLL while(RCC_CR_bit.PLLRDY == 0){} // ожидаем потверждения включения PLL // 7. настраемаем AHB предделитель RCC_CFGR_bit.HPRE = 0x0; // преддилитель AHB = 1 // 8. настраемаем APB1 предделитель RCC_CFGR_bit.PPRE1 = 0x4; // преддилитель APB1 = 2 // 9. настраемаем APB2 предделитель RCC_CFGR_bit.PPRE2 = 0x0; // преддилитель APB2 = 1 RCC_CR_bit.CSSON = 0; // отключаем внешний детектор clock // 12. %%%%%%%%%%%%%%%%%%% включаем SYSCLK %%%%%%%%%%%%%%%%%%%%% RCC_CFGR_bit.SW = 2; // PLL как системный clock while(RCC_CFGR_bit.SWS != 2){} // ожидаем потверждения включения SYSCLK Скачал примеры, там самописные билиотеки (не привязанные к IAR), такие замудренные, разбираться замучаешься. Может кто чем поможет? Заранее спасибо!
  8. Нет не получается это библиотека для LabView. Хотелось бы для LabWindows билиотечку ну или файл (*.fp) с расшитением .fp
  9. не знаешь в LabWindows\CVI имеется библиотека Modbus?
  10. Такой вопрос а с LabWindows/CVI кто-нибудь имел дело?
  11. Эта программа разрабатывается не ради диплома (ну и для некого тоже), а ради внедрения в большие сети ДЭУ по всей Сибири, ну канечно же в других регионах. Просто наша компания в этом году летом была на выставке в Москве, и там мониторингом ДЭУ заинтересовались многие фирмы и они заложили у себя в поректах эту программу. А мне надо просто посмотреть какое ПО в настоящее время используется в России, так для диплома.
  12. Со стороны компьютера устанавливается софт, создаются виртуальные COM-порты и все прекрасно работает. Эти порты выглядят как обычные, со всеми стандартными API наворотами. В общем это порт-сервер EDG-4508+ или там EDG-4516 разница лишь колличестве портов. http://www.advantech.com/
  13. Здравствуйте, Всех с прошедшем Новым Годом!!! А конкретно по мониторингу ДГУ у вас есть какие-нибудь проекты, информация, описание программ или алгоритмы работы программ. Мне надо просто в дипломе написать сравнительный анализ моей программе с другими программами мониторинга ДЭУ. Просто у меня препод пративный, я ему когда проект показывал (темудипломного проекта защищал), он мне сказал что таких еменно программ как моя уже навалом. Вот мне и надо на комиссии расказать что это за программы и как они работают.
  14. А что за девайсы мониторишь? В какой области?
×
×
  • Создать...