реклама на сайте
подробности

 
 
> Таймер/счетчик Т0, Не работает Т0. Среда WinAVR. Atmega8515
Dante Krieger
сообщение Nov 9 2011, 23:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 25-04-10
Из: г. Одесса
Пользователь №: 56 889



Всем добрый вечер!
Казалось бы нубский вопрос, но не понимаю.
Скажем, инициализирую таймер.
Код
TIMSK |= (1 << TOIE0) | (1 << OCIE0);
TCCR0 |= (1 << CS02) | (0 << CS01) | (0 << CS00);
sei();

Далее, пытаюсь что-то делать по переполнению. Например, "произвольный" код:
Код
ISR(TIMER0_OVF_vect) {
    count1++;
    if(count1 == 10){
        count1 = 0;
        count2++;
        if(count2 == 12){
            count2 = 0;
            lcd = lcd + 1;
        }
    }
    //_delay_ms(10);
}

Так вот, в чем, собственно проблема. Данный код будет работать только если раскомментировать
Код
_delay_ms(10);

В чем подвох, не могу понять.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sergey_Aleksandr...
сообщение Nov 10 2011, 10:51
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Что, Вы, подразумеваете под фразой "код будет работать". Что случается с программой, когда в прерывании нет задержки: программа не компилируется, МК не входит в прерывание, виснет. Больше конкретики. Что за контроллер используете, какая тактовая частота, среда разработки?

И на будущее, хоть и утверждаете, что без задержки в прерывании "код не работает", но использование задержек в прерывании принципиально неправильно. Не стоит этого никогда делать.

Сообщение отредактировал Sergey_Aleksandrovi4 - Nov 10 2011, 10:51
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 06:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016