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

Schulz_K

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

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

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

983 просмотра профиля
  1. А можно ссылочку, где его скачать, или тут на ftp закиньте. Может, пригодится..
  2. У нас на фирме недавно писали программку под STM8. Сравнение такое: бесплатный компилятор Cosmic, рекомендованный ST для этих чипов создавал код в 2 раза больший, чем IAR - программа не влазила в заложенный кристалл. Переход на IAR проблему решил причем с большим запасом.
  3. Вот, похоже на Xilinx описана эта проблема: http://www.xilinx.com/support/answers/12737.htm - т.е., говоря коротко: A small number of older XC9500 devices cannot be programmed with iMPACT.... How do I program unsupported XC9500 devices? - Use the 3.1isp8 or 3.3i JTAG Programmer.
  4. Попробуйте проверить частоту ядра. У меня например частота настраивается в system_stm32f2xx.c. Просмотрите регистры настройки тактирования ядра, например через JTAG.
  5. Да, толерантна. В принципе запускается от внутреннего генератора и на 3,3В, но часто сбоит. Если поставить внешний кварц - от 3,3В работает нормально. Причем эта особенность была описана в обновленном datasheet - у нас был старый (не с официального сайта) в связи с чем кварц не поставили и долго мучились со сбоями.
  6. А как у вас настроено прерывание EXTI7 ? Там если включить одновременно прерывание по rising trigger и по falling trigger - то на один импульс у вас и получится 2 прерывания.
  7. Может подскажет кто - почему нету сигнала RTS. Проверяю осциллографом. Причем если настроить порт на обычный GPIO выход - он работает. Т.е. на плате все в порядке. А при настройке на RTS в UART1 - выход всегда в нуле. Вот код обработчика прерывания: void USARTx_IRQHandler(void) { Delay(17142000); // 1000ms *LoadBuf_index=USART_ReceiveData(USARTx); } в прерывание попадаю, но импульсов по 1000мс на линии RTS нету. Delay я делаю только для проверки отработки RTS. Вот настройка USART /* Definition for USARTx resources ********************************************/ #define USARTx USART1 #define USARTx_CLK RCC_APB2Periph_USART1 #define USARTx_CLK_INIT RCC_APB2PeriphClockCmd #define USARTx_IRQn USART1_IRQn #define USARTx_IRQHandler USART1_IRQHandler #define USARTx_TX_PIN GPIO_Pin_9 #define USARTx_TX_GPIO_PORT GPIOA #define USARTx_TX_GPIO_CLK RCC_AHB1Periph_GPIOA #define USARTx_TX_SOURCE GPIO_PinSource9 #define USARTx_TX_AF GPIO_AF_USART1 #define USARTx_RX_PIN GPIO_Pin_10 #define USARTx_RX_GPIO_PORT GPIOA #define USARTx_RX_GPIO_CLK RCC_AHB1Periph_GPIOA #define USARTx_RX_SOURCE GPIO_PinSource10 #define USARTx_RX_AF GPIO_AF_USART1 #define USARTx_RTS_PIN GPIO_Pin_12 #define USARTx_RTS_GPIO_PORT GPIOA #define USARTx_RTS_GPIO_CLK RCC_AHB1Periph_GPIOA #define USARTx_RTS_SOURCE GPIO_PinSource12 #define USARTx_RTS_AF GPIO_AF_USART1 void USART_Config(void) { USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIO clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* Enable USART clock */ USARTx_CLK_INIT(USARTx_CLK, ENABLE); /* Connect USART pins to AF7 */ GPIO_PinAFConfig(USARTx_TX_GPIO_PORT, USARTx_TX_SOURCE, USARTx_TX_AF); GPIO_PinAFConfig(USARTx_RX_GPIO_PORT, USARTx_RX_SOURCE, USARTx_RX_AF); /* Configure USART Tx and Rx as alternate function push-pull */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Pin = USARTx_TX_PIN; GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = USARTx_RX_PIN; GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_USART1); /* Enable the USART OverSampling by 8 */ USART_OverSampling8Cmd(USARTx, ENABLE); USART_InitStructure.USART_BaudRate = 3000000; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_RTS; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USARTx, &USART_InitStructure); USART_OneBitMethodCmd(USARTx, DISABLE); /* Enable the USARTx Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USARTx_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable USART */ USART_Cmd(USARTx, ENABLE); /* Enable the USARTx Receive interrupt: this interrupt is generated when the USARTx receive data register is not empty */ USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE); } Проверял и с JTAG и без него. Также по JTAG вижу, что порт PA12 точно настроен на AF USART1 (AF7).
  8. Я недавно читал статью - там умелец из-за границы рассказывает такое: он за 50 долларов заказал на какой-то специализированной фирме снять крышки с корпусов МК PIC. Приводятся фотографии кристаллов. Там четко видны закрытые металлизацией площадки, число которых совпадает с числом fuse битов. Потом он заклеил область флеша (для сохранности прошивки), а фьюзы облучал ультрафиолетом. Причем под углом, чтобы проникло под экранирующие площадки. Говорит, что фьюзы успешно снялись, а прошивка осталась. Еще помню когда-то на семинаре рассказывали, что в Америке есть множество фирм, которые могут вносить небольшие коррекции в микросхемы прямо в силикон. То есть когда разработчики в уже сделанном прототипе микросхемы находят ошибку - то ее можно там на заказ исправить. Вот, нашел ссылку на статью: Обход защиты PIC
  9. Нужно на цифрах показать: когда LM317 понижает с 12 до 5V при токе 2A он будет рассеивать на себе 14W - нужен огромный радиатор, поэтому тут дело не в КПД (как потеря лишней энергии и разряд батареи) а в нагреве. Нужно однозначно step-down converter типа LM2576 или подобных. Мы используем LM3485 +P-MOSFET.
  10. Атомарные операции в данном случае очень важны. При чтении low байт у вас одновременно читается и high байт во временный регистр, как уже сказал dxp. Так вот, если между чтением low и high байтов у вас произойдет прерывание - в его обработчике этот временный регистр может затереться другим значением, т.к. он один для всех двухбайтных регистров I/O. Атомарная операция, это та, которую нельзя разорвать прерыванием - это нужно вручную выставлять, например: сохранить состояние бита глобальных прерываний, запретить прерывания, выполнить чтение/запись двухбайтного регистра, возобновить старое состояние бита прерываний.
  11. Вот еще есть перевод - может, на русском читать чуть быстрее получится: http://electronix.ru/forum/index.php?showt...%F0%E5%E2%EE%E4, а вообще-то я и на сайте ST все без проблем находил. Для начинающего стоит скачать с сайта ST stm32f2xx_stdperiph_lib - там библиотека функций работы с периферией и множество вполне понятных примеров, описание самой библиотеки правда в *chm довольно запутанное и скудное. А вот что касается jLinkv7 - так это типа старая модель, сейчас есть jLinkv8. Его легко купить в интернет-магазине otladka.com.ua, хотя похоже это не они сами этот клон делают, а вообще-то это клон Segger, про него много тут на форуме писалось.
  12. А вы реально это проверяли - просили, например, в магазине тех самых вертолетов, включить одновременно 2 вертолета и поуправлять ими 2-мя однотипными пультами по отдельности? - Я думаю, что сигналы будут перемешиваться и никакого многоканального управления нет. Наиболее вероятно разделение в пространстве - диаграмма направленности пультов узкая и приемник не попадает в луч чужого пульта.
  13. Если CKOPT бит "is programmed" то генератор работает в режиме rail-to-rail - при этом он потребляет больше тока но он более устойчив к помехам. У меня были случаи, когда в обычном режиме генератор сбоил, а в режиме rail-to-rail устройство работало устойчиво - без сбоев.
  14. - А вы сделайте двойную буферизацию: пока один набор яркостей отрабатывается в ШИМе - другой набор расчитывается и записывается в буфер, потом буферы меняются местами - тот что расчитывался идет в отработку, а уже отработанный рассчитывается. Таким образом у вас будет время периода ШИМ на расчет всего набора яркостей. Например при периоде 150Гц у вас будет 106000 тактов на расчет светоэффекта.
  15. А вы попробуйте на той же меге сделать Soft PWM. Я на ATmega16 получал 32 канала PWM - столько, сколько линий IO. Быстродействия для светодиодов вполне хватает. А если не хватит - можно и более скоростные микроконтроллеры использовать, Cortex M3 например.
×
×
  • Создать...