Jump to content

Azur

Members
  • Content Count

    42
  • Joined

  • Last visited

Community Reputation

-2 Плохой

About Azur

  • Rank
    Новенький

Информация

  • Город
    Tyumen

Электроника

  • Стаж в электронике
    Менее года

Recent Profile Visitors

707 profile views
  1. За адекватную цену. КП302БМ КТ313Б КТ3117Б КР574УД1А КР1162ЕН12А КР1162ЕН15А
  2. А как мне тогда поймать момент вызова прерывания? (С аврками баловался в студии на ассемблере, там есть симулятор, в нем все как помаслу - переполнился таймер, встали флаги, пошли в прерывание... все в пошаговом работало...)
  3. Я же в режиме отладки, как так какие то события мимо меня происходят?
  4. Видимо мы друг друга не понимаем.... Запускаю режим отладки и начинаю шагать - верно? Дошагиваю я до бесконечного цикла while - верно? И начинаю там крутиться, но не бесконечно - верно? Т.к. в какой то момент программа перейдет в обработчик прерывания - верно? Переполниться счетчик таймера, установиться флаг и я должен попасть в подпрограмму прерывания - так? Ну так почему же я нажимая на "волшебную" кнопочку F11 туда не попадаю???? - вот в чем вопрос ребята... а брекпоинт в прерывание поставить никак? По этому поводу я уже писал. Ставлю брэйк - попадаю...
  5. Ну так почему при пошаговом не попадаю?
  6. CooCox IDE v1.7.6 Код: #include "stm32l1xx.h" void TIM7_IRQHandler(void); uint8_t i = 0; // - частота по дефолту 2.097 MHz int main(void) { //----- RCC - включение тактирования ----- RCC->AHBENR|=RCC_AHBENR_GPIOBEN; // clock portB enable; RCC->APB1ENR|= RCC_APB1ENR_TIM7EN; // clock TIM7 enable; //----- I/O configuration ----- GPIOB->MODER|= GPIO_MODER_MODER6_0; GPIOB->OTYPER&= ~GPIO_OTYPER_OT_6; GPIOB->PUPDR&= ~GPIO_PUPDR_PUPDR6; GPIOB->OSPEEDR|= GPIO_OSPEEDER_OSPEEDR6; //---------------------------------------------- NVIC_SetPriority(TIM7_IRQn,1); NVIC_EnableIRQ(TIM7_IRQn); TIM7-> DIER|= TIM_DIER_UIE; // interrupt enable TIM7-> PSC= 0xffff; // prescaler TIM7-> ARR = 0x000f; TIM7-> CR1|= TIM_CR1_CEN; // TIM7 enable //-------------------------------------------------------------------------- int delay=0; while(1) { delay++; // просто так.... } } void TIM7_IRQHandler(void) { TIM7->SR &= ~TIM_SR_UIF; //Сбрасываем бит вызова прерывания. if (i == 0) //Проверяем текущее состояние светодиода {GPIOB->BSRRL |= GPIO_BSRR_BS_6;} //Зажигаем светодиод else {GPIOB->BSRRH |= GPIO_BSRR_BS_6;} //Или гасим светодиод i = ~i; } Все работает... я не могу понять почему в пошаговом режиме не попадаю в обработчик прерывания. Если, к примеру, поставлю breakpoint в обработчик прерывания и нажму RUN(F5) то попадаю, если пошагово F11 - не попадаю....
  7. Дошагал. Флаг прерывания сработал, а в подпрограмму все равно не перешел.... В том то и дело..., хотя сама программа рабочая... Что то с отладкой не так...
  8. В режиме отладке при пошаговой работе программы не попадает. В этом и вопрос.
  9. Здравствуйте, есть простенькая программка моргания светодиодом. Работает. Хотел посмотреть как работает программа. Вошел в режим отладки и начал пошагово выполнять программу. Включение/выключение светодиода происходит в подпрограмме прерывания таймера. В режиме отладки программа туда никогда не попадает... Не могу понять почему...
  10. Вот про большое количество кнопок спасибо, учту на будущее.
  11. Моя настройка порта PD0: DDRD=0, PORTD=1. Соответственно там лог 1. А я переключаю его кнопочкой на землю через резистор.
  12. А для чего резистор от PD0 к питанию? На входе же и так уровень логической 1.
  13. Спасибо ВСЕМ за поддержку и дельные советы. Вот так схема теперь выглядит: Нажимаю на кнопку S2 - включаю генерацию ШИМ. Нажимаю ещё разок - выключаю . Отдельное Спасибо за помощь в написании программы Ittido. Получился генератор на 40 кГц. В дальнейшем хочу использовать его как передатчик.... Хочу попробовать с пульта управлять какой нибудь нагрузкой 220В. Приёмником будет TSOP2136, мк будет управлять нагрузкой через симисторную оптопару и симистор.
  14. Спасибо за ответы, кое что уяснил. Теперь более понимаю что и как. Спасибо.
×
×
  • Create New...