Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Неверное время задержки
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Scanner
Пытаюсь вывести на экран 16х2 Мигающую надпись Attention. Частота мигания -1с. Вот код:
CODE
lcd_init(16);
lcd_gotoxy(0,0);

while (1)
{

lcd_putsf("Attention"); // Надпись
delay_ms(1000); // Задержка 1с.
lcd_clear(); // Очищаем экран
delay_ms(1000); // Задержка 1с.

};


В итоге выходит задержка около 12 сек.

Среда CVAVR, кварц 12 МГц. В чём может быть проблема?
Xenia
Цитата(Scanner @ Oct 11 2009, 17:12) *
В чём может быть проблема?

Дело может быть в том, что функции cd_putsf("Attention") и lcd_clear() сами по себе долго работают.
Для такого рода дел лучше не тянуть волнынку с помощью delay_ms(), а организовать прерывания от таймера с 1 секундным периодом, который раз в секунду в процедуре прерывания будет взводить вам флаг (не вздумайте вызывать cd_putsf("Attention") и lcd_clear() в прерывании!), а основная программа должна ходить в бесконечном замкнутом цикле, проверяя флаги, установленные в прерываниях и при взведеном флаге выполнить то, что флаг требует, а после выполнения флаг сбросить.

Такая организация дел, хоть не гарантирует мгновенной реакции на прерывание, зато устойчиво держит заданную частоту. И кроме того, позволяет попутно делать много разных дел, вместо того, чтобы висеть на дурацкой работе, которой ее нагружает delay_ms().
Scanner
Цитата(Xenia @ Oct 11 2009, 17:42) *
а организовать прерывания от таймера с 1 секундным периодом, который раз в секунду в процедуре прерывания будет взводить вам флаг

Можете показать пример?
Goodefine
Цитата(Scanner @ Oct 11 2009, 16:12) *
Среда CVAVR, кварц 12 МГц. В чём может быть проблема?

Проверяете в симуляторе или в реальном устройстве? Если в симуляторе - поставьте правильно частоту. Если в реале - прошейте соответствующие фьюзы. Сейчас мега работает у Вас на 1Мгц...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.