прерывания по таймеру в atmega 328p

Тема в разделе "Микроконтроллеры AVR", создана пользователем Мурад, 23 мар 2017.

  1. parovoZZ

    parovoZZ Гуру

    Потому что прерывание не разрешено в TIMSK.
     
  2. SergeiL

    SergeiL Оракул Модератор

    Смотрите, PORTB ^=(1<<PORTB2); у Вас выполняется каждый раз, при срабатывании прерывания.
    seconds обнуляется при достижении 60, но в изменении вывода порта seconds не участвует.

    В каком состоянии у Вас фьюз CKDIV8 ?
     
  3. b707

    b707 Гуру

    в приведенном отрывке seconds вообще не используется. состояние порта меняется при каждом вызове таймера. По приведенному коду состояние порта должно менятся раз в секунду. Почему это происходит раз в 8 сек - не знаю. может вы еще где напортачили, например частота на самом деле 1 МГц, а не 8
     
    DetSimen нравится это.
  4. kipalex

    kipalex Нуб

    да все уже близко к разгадке )))

    вот рабочий вариант:
    Код (C++):
    ISR(TIMER1_COMPA_vect)
    {
    if(sec_cnt < 5)
    {
        PORTB|=(1<<PORTB2);  // turn on LED in first 5 sec
    }
    else
    {
        PORTB&=(~1<<PORTB2);
    }

    sec_cnt++;

    if(sec_cnt == 10)
    {
        sec_cnt = 0;        // restart counting
    }

    }

     
    Получается включили прошло 8 секунд. Порт включился на 40 секунд 5*8=40. отключился и т.д.
     
  5. SergeiL

    SergeiL Оракул Модератор

    По поводу 8 секунд, посмотрите в каком состоянии у Вас фьюз CKDIV8???
     
  6. DetSimen

    DetSimen Guest

    Я тебе последний раз говорю, с такой записью, у тебя не один бит2 обнуляется, а он и все биты правее него.
     
  7. parovoZZ

    parovoZZ Гуру

    Это в железе или так хочется, чтобы было?
     
  8. kipalex

    kipalex Нуб

    да все уже разобрался, запутался с временем и все. Я привязался к секундам, а не к тому что есть частота процессора и время обхода таймера (тик). Пятница.
    к
    приму к сведению.

    Не каждый день программируешь.
     
  9. parovoZZ

    parovoZZ Гуру

    Та вроде у сдвига поглавнее приоритет.
     
  10. DetSimen

    DetSimen Guest

    https://www.viva64.com/ru/t/0064/
    Отрицание - 3, сдвиг - 7
    Яж не простотак говорю
     
    parovoZZ нравится это.