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

Alexey_1811

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость
  • День рождения 18.11.1980

Контакты

  • Сайт
    http://
  • ICQ
    381477512

Информация

  • Город
    Яблунець
  1. Загрузчик + приложение (STM32F1XX+Keil)

    Цитата(vlad_new @ Jan 31 2014, 15:20) Откуда взялись такие адреса? Вы в курсе, что ARM 32 разрядный процессор а не 8 и у него соответственно адрес занимает 4 байта а не один. А вы гляньте таблицу векторов КодReset_Handler                            0x08005101   Thumb Code     4  stm32f10x.o(.text) NMI_Handler                              0x08005105   Thumb Code     2  stm32f10x.o(.text) MemManage_Handler                        0x08005109   Thumb Code     2  stm32f10x.o(.text) BusFault_Handler                         0x0800510b   Thumb Code     2  stm32f10x.o(.text) UsageFault_Handler                       0x0800510d   Thumb Code     2  stm32f10x.o(.text) ПС. Вопрос закрыт Кодvoid JumpToApplication(Int32U addr) {   typedef  void (*pFunction)(void);   pFunction Jump_To_Application;   Int32U JumpAddress;   if(addr>=0x08005000)   {     JumpAddress = *(Int32U*) (addr + 4);     Jump_To_Application = (pFunction) JumpAddress;     /* Initialize user application's Stack Pointer */     __MSR_MSP(*(vu32*) addr);     Jump_To_Application();   } }
  2. Загрузчик + приложение (STM32F1XX+Keil)

    Ситуация следующая. Есть загрузчик который сидит по адресу 0x08000000 и основное приложения по адресу 0x8005000. Если я с бутлодера перехожу на 0x08000001 то вылетаю в HardFault_Handler. А если сразу на вектор Reset 0x8005101 то приложение работает нормально. Как правильно делать?
  3. Выходной транзистор RFM12-BP

    Подскажите какой стоит выходно транзистор (или аналог) у трансивера RFM12-BP (433Мгц, 500мВт). На корпусе транзистора написано ST786. Гугл молчит. [attachment=73660:RFM12BP_01.jpg]
  4. Цитата(Tanya @ Oct 24 2012, 12:13) Может, у Вас внешние транзисторы не успевают за драйвером? Транзисторы работают нормально. Это проверелось в первую очередь.
  5. Цитата(Tanya @ Oct 24 2012, 10:52) В даташите это написано. Рекомендации в таблице 2. Что то я там не вижу рекомендаций или не понимаю.
  6. Спаял драйвер ШД на алегровской A4989 (старший брат A3986). Микросхема сконфигурирована следующим образом: SR = 0, MS1 = MS2 = 1 (шаг 1/16), PFD1 = PFD2 = 0 (Mixed Decay - Slow) После подачи тактирования (частота 10Гц) двигатель начинает шагать полными шагами но каждый шаг он делает на каждые 16 импульсом тактирования (как бы накопляет 16 тактов и тогда делает шаг). Ток в одной из фаз выглядит следующим образом: Синусоиды и близко нету. А если сконфигурировать микросхему так: PFD1 = PFD2 = 1 То ток в фазе уже приближенно похож на синусоидальный но двигатель все ровно шагает не равномерно. Подскажите почему драйвер работает так неадекватно? Может кто стыкался с подобной проблемой проблемой?
  7. STM32F217ZGT6 проблема с ADC+DMA

    Цитата(kan35 @ Jul 17 2012, 15:04) Как уже было сказано, у вас высокое выходное сопротивление, потому - максимально увеличьте время преобразования - до 239.5 циклов, и понизьте частоту до минимума который вам нужен. Ну и боритесь с помехами по питанию. Такая же хрень когда закорачиваю вход АЦП на землю. А тут уже сопротивление нулевое.
  8. STM32F217ZGT6 проблема с ADC+DMA

    Что интересное заметил. У меня данные с АЦП скидываются в буфер через ДМА по 92 выборки. А потом по таймеру этот буфер копируется в большой буфер на 4000 выборок который я вывожу в виде графика на ПК. Так вот если в процесе работы смотреть содержимое буфера на 92 выборки то там шумные данные но когда я останавливаю отладку то после последноге обновления в этом буфере адекватные данные (шум 1-3 дискреты). CODEvoid TIM1_CC_IRQHandler(void) { if (TIM1->SR & TIM_SR_CC3IF) { DMA2_Stream0->CR &= ~DMA_SxCR_EN; // Disable DMA DMA2->LIFCR |= ((1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5)); DMA2_Stream0->CR ^= DMA_SxCR_CT; // switch buffer if (DMA2_Stream0->CR & DMA_SxCR_CT) setBuf = 1; DMA2_Stream0->NDTR = ADC_ARRAY_SIZE; DMA2_Stream0->CR |= DMA_SxCR_EN; //Enable DMA ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_SWSTART; //****************************************************************************** // *************** копируем данные в буфер для вывода графика ****************** //****************************************************************************** if (grFlag == 1) { DMA2_Stream1->NDTR = 93; if (DMA2_Stream0->CR & DMA_SxCR_CT) DMA2_Stream1->PAR = (uint32_t)&TOK_HI_0[0]; else DMA2_Stream1->PAR = (uint32_t)&TOK_HI_1[0]; DMA2->LIFCR |= ((1<<6)|(1<<8)|(1<<9)|(1<<10)|(1<<11)); DMA2_Stream1->M0AR = (uint32_t)&GR_BUFF[indexGR]; DMA2_Stream1->CR |= DMA_SxCR_EN; //Enable DMA indexGR += 93; } } }
  9. STM32F217ZGT6 проблема с ADC+DMA

    Что то полная .опа с АЦП. Шумит зараза сильно. Уже не знаю куда копать.
  10. STM32F217ZGT6 проблема с ADC+DMA

    DMA поборол но возникла вторая проблема. Про подаче на вход АЦП сигнала с резисторного делителя питания МК, данные с АЦП скачут где то в 10 значений но есть выбросы до 20. Почему так шумит АЦП?
  11. STM32F217ZGT6 проблема с ADC+DMA

    Цитата(scifi @ Jun 8 2012, 16:16) Помню, тоже делал повторный запуск DMA. Оказалось, повторную инициализацию DMA следует проводить полностью, то есть не следует полагаться на то, что, к примеру, регистр DMA2_Stream0->PAR сохранит своё значение. Попробовал полную инициализацию ДМА. Не помогло. Куда копать уже не знаю.
  12. STM32F217ZGT6 проблема с ADC+DMA

    Есть задача с частотой 20кГц нужно что бы АЦП складывало в буфер 50 выборок. Настроил АЦП на максимальное быстродействие и работу с ДМА так: CODE NVIC->ISER[(DMA2_Stream0_IRQn >> 0x05)] = (u32)0x01 << (DMA2_Stream0_IRQn & (u8)0x1F); /* Enable DMA interrupt */ RCC->APB2ENR |= (1<<8); RCC->AHB1ENR |= (1<<22); // DMA1EN RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; // Ðàçðåøèòü òàêòèðîâàíèå PORTE. ADC1->CR1 |= ADC_CR1_AWDIE| // AWD on injected channels whith interrupt ADC_CR1_SCAN; // Scan mode + auto injection ADC1->SMPR2 = 0x0000; // 1.5 sampling time ADC1->SQR1 = 0x00; // 1 conversion ADC1->SQR3 = ADC_SQR3_SQ1_3; // 8 chanell ADC1->CR2 = ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_2 // run SWSTART //| ADC_CR2_EXTEN | ADC_CR2_DMA | ADC_CR2_CONT; // enable externall run ADC1->SMPR1 = 0x0920000B; GPIOB->MODER |= (GPIO_MODER_MODER0); // PORTB.0 Analog input // DMA configuring DMA2_Stream0->CR |= DMA_SxCR_PL | DMA_SxCR_MSIZE_0 | DMA_SxCR_PSIZE_0 | //Hight pry, 16 byte mem, 16 byte pereph DMA_SxCR_MINC | //DMA_CCR1_CIRC| DMA_SxCR_HTIE | DMA_SxCR_TCIE; // mem inc, circular, enterrupts by Half and End of conv DMA2_Stream0->NDTR = ADC_ARRAY_SIZE; DMA2_Stream0->PAR = (uint32_t)&ADC1->DR; DMA2_Stream0->M0AR = (uint32_t)&TOK_HI[0]; // On converting ADC1->CR2 |= ADC_CR2_ADON; // Adc ON // Additional delay to Vref on DMA2_Stream0->CR &= ~DMA_SxCR_EN; /* Disable DMA */ DMA2_Stream0->NDTR = ADC_ARRAY_SIZE; DMA2_Stream0->CR |= DMA_SxCR_EN; /* Enable DMA */ ADC1->CR2 |= ADC_CR2_SWSTART; И дальше по таймеру (период 50мкС) запускаю захват данных с АЦП. Код          DMA2_Stream0->CR &= ~DMA_SxCR_EN; // Disable DMA     DMA2->LIFCR |= ((1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5));     DMA2_Stream0->NDTR = ADC_ARRAY_SIZE;     DMA2_Stream0->CR |= DMA_SxCR_EN; //Enable DMA Первый раз буфер заполняется значениями с АЦП и все, дальше ничего не работает. Подскажите что не так.
  13. Обрати особое внимание на питание.
  14. Спасибо за ответы. С гироскопом разобрался. Крен, тангаж и курс получил в связке L3G4200+LSM303 по алгоритму FreeIMU.
  15. Цитата(bva_rzn @ Jan 14 2012, 23:13) Какой конкретно нужно посчитать угол: крен или тангаж? Нужно считать крен, тангаж и курс. Цитата(bva_rzn @ Jan 14 2012, 23:13) Для вычисления крена и тангажа проще использовать акселерометр (трёхосевой). Объект будет двигаться с ускорением так что предполагаю акселерометр не покатит. Цитата(bva_rzn @ Jan 14 2012, 23:13) Если интересно, могу написать в личку. Очень интересно.