ШИМ-генератор ATMega8+LCD+кнопки

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение MLX90640 »

[uquote="forregister84",url="/forum/viewtopic.php?p=4310667#p4310667"]Ребят, я немного о другом. LCD тормозит при пониженных температурах, также в datasheet упоминается, что напряжение регулировки контраста зависит от температуры. Интересует опыт в этом вопросе.
Даже при +15 C уже тормозит и мигание при изменении шага было почти не видно.[/uquote]
А, про это.. Ну оригинальные Winstar-ы и МЭЛТ-ы, которыми я пользовался в те времена, работали нормально. Сильно в холоде не проверял, но при уличных осенних +10° замечаний не было. Как сейчас обстоят дела с китайскими матрицами - фик знает, не пробовал.
При понижении температуры все ЖКД снижают быстродействие самих кристаллов, они медленнее поворачиваются, это нормально. При -30° время их "поворота" может достигать пары секунд.
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Starichok51 »

Demiurg писал(а):Первый вариант, это прерывание аппаратного таймера настроенного на 1 мс.
но ты же утверждал, что ты прерывание не используешь совсем.
а теперь оказалось, что ты все-таки используешь прерывание аппаратного таймера.
зачем же нас обманывать, что ты отказался от прерываний вообще?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Demiurg »

Где то возникло недопонимание. Где я писал, что я вообще не использую прерывания? Писал про программные таймеры. Есть два варианта.
1 - Используется прерывание аппаратного таймера.
2 - Опрос флага прерывания аппаратного таймера.

В других прерываниях у меня минимальные действия. Стараюсь придерживаться этого правила.

Все зависит от задачи.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Starichok51 »

ну да, получилось недопонимание.
вот ты писал, что у тебя программный таймер настроен на 1 мс. и еще ты писал, что из прерываний убрался вообще.
поэтому я спросил, как можно без прерываний точно отмерить 1 мс.
а оказалось, что у тебя аппаратный таймер отмеряет 1 мс, а не программный таймер.
ладно, разобрались с моим недопониманием.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Эиком - электронные компоненты и радиодетали
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение OKF »

На простых (и быстрых) задачах, когда не нужна точность, использую delay(T_SYS) - никаких таймеров.)
Реклама
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Demiurg »

из прерываний убрался вообще
Теперь понял, где недопонимание. Я стараюсь в прерываниях совершать минимальные действия. Это я имел в виду. Если проект, задача позволяет, максимум, что у меня было в прерываниях, это динамическая индикация.
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Starichok51 »

ну да, именно эти слова у меня вывернулись так, что ты отказался от прерываний вообще.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Demiurg »

Сделал тестовый проект. Вывод на LCD дисплей непосредственно. Не стал заморачиваться, писал в лоб.
Спойлер

Код: Выделить всё

//==================
#include "main_def_func.h" // Заголовочные файлы, глобальные определения, общие функции.
//==================

//==================
__C_task main (void)
{
   static u08 cnt = 0;

   init_soft_timers ();
   Init_Events ();

   wdt_enable (WDTO_15_MS); // Инициализаця сторожевого таймера. 16 мс.

   __enable_interrupt (); // Глобальное разрешение прерываний.

   while (!(char_dsp_init ()))
   {
      __watchdog_reset (); // Сброс сторожевого таймера.
   }

   while (1)
   {
      __watchdog_reset (); // Сброс сторожевого таймера.

      switch (cnt)
      {
         case 0:
            lcd_send_com (0x80);
            cnt = 1;
            break;

         case 1:
            lcd_send_data (0x30);
            cnt = 2;
            break;

         case 2:
            lcd_send_data (0x31);
            cnt = 3;
            break;

         case 3:
            lcd_send_data (0x32);
            cnt = 4;
            break;

         case 4:
            lcd_send_data (0x33);
            cnt = 5;
            break;

         case 5:
            lcd_send_data (0x34);
            cnt = 6;
            break;

         case 6:
            lcd_send_data (0x35);
            cnt = 7;
            break;

         case 7:
            lcd_send_data (0x36);
            cnt = 8;
            break;

         case 8:
            lcd_send_data (0x37);
            cnt = 9;
            break;

         case 9:
            lcd_send_data (0x38);
            cnt = 10;
            break;

         case 10:
            lcd_send_data (0x39);
            cnt = 11;
            break;

         case 11:
            lcd_send_data (0x30);
            cnt = 12;
            break;

         case 12:
            lcd_send_data (0x31);
            cnt = 13;
            break;

         case 13:
            lcd_send_data (0x32);
            cnt = 14;
            break;

         case 14:
            lcd_send_data (0x33);
            cnt = 15;
            break;

         case 15:
            lcd_send_data (0x34);
            cnt = 16;
            break;

         case 16:
            lcd_send_data (0x35);
            cnt = 17;
            break;

         case 17:
            lcd_send_data (0x36);
            cnt = 18;
            break;

         case 18:
            lcd_send_data (0x37);
            cnt = 19;
            break;

         case 19:
            lcd_send_data (0x38);
            cnt = 20;
            break;

         case 20:
            lcd_send_data (0x39);
            cnt = 0;
            break;
      }

      delay_us (40);
   }

   while (1)
   {
      __watchdog_reset (); // Сброс сторожевого таймера.

      #ifdef __ST_NO_INTERRUPT__
      proc_sys_tick ();
      #endif

      proc_device (); // Главный алгоритм программы.

      info_service ();

      drv_char_dsp ();

      Process_Events ();
   }
}
//==================
Дисплей 20х4. 4-битная шина. Я сделал так, отправка адреса 1 строки, потом заполнение строки. 20 символов. Между отправками примерно 50 us. Время от отправки адреса до отправки последнего символа заняло 1076 us.

Так как дело было давно, всех деталей я не запомнил. Признаю, время установки адреса, символа примерно соответствует даташиту. Чтобы наверняка, я чуток превысил времянки. Ногодрыг, установка адреса, строки. Почему я ошибочно запомнил, что между отправками адресов, символов время занимало больше, я сейчас уже не скажу. Но, как я писал раньше, так как у меня системный тик 1 мс, чтобы программные таймеры не врали, итерация основного цикла должна всегда выполняться с запасом. Пакетный вывод на дисплей занимает много времени, поэтому я раздробил вывод символов.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Starichok51 »

каждый делает так, как ему удобно и как ему нравится.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение OKF »

[uquote="Demiurg",url="/forum/viewtopic.php?p=4312172#p4312172"]...писал в лоб.[/uquote]
Один while(1); из которого не видно выхода, за ним другой while(1); Так задумано?
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Demiurg »

Да, проект тестовый, заготовка. Прямо в нем и написал.
forregister84
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Вт авг 23, 2022 14:44:25

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение forregister84 »

Версия 0.88. F_CPU = 8...16 МГц
Исправлен Watchdog c 500 мс на 2 с т.к. на частоте < 4 Гц контроллер сбрасывается до обновления частоты и было невозможно после этого поменять частоту.
Добавлены проекты в VS Code.
Вложения
ATMega8_PWM_2CH_LCD_E_088_AS7.zip
(541.09 КБ) 61 скачивание
ATMega8_PWM_2CH_LCD_E_088_VS.zip
(490.24 КБ) 57 скачиваний
ATMega8_PWM_LCD_E_088_AS7.zip
(457.62 КБ) 67 скачиваний
ATMega8_PWM_LCD_E_088_VS.zip
(479.87 КБ) 70 скачиваний
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение Demiurg »

[uquote="Up2805",url="/forum/viewtopic.php?p=4279326#p4279326"]Ну раз уж так обсыкаться от возможности невозможного, тогда расскажите, почему не поставили конденсаторы параллельно кнопкам? По всем правилам они должны присутствовать для подавления случайных наводимых импульсов и для минимизации эффекта дребезга контактов кнопок.[/uquote]
Чиво?! О_о Дребезг кнопок спокойно обрабатывается программно.
NSK2015
Родился
Сообщения: 3
Зарегистрирован: Пн июл 01, 2024 11:21:28

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение NSK2015 »

Подскажите, как в данной схеме реализовать управление длительности импульса ? Нужно изменять частоту и длительность с контролем на LCD дисплее .
forregister84
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Вт авг 23, 2022 14:44:25

Re: ШИМ-генератор ATMega8+LCD+кнопки

Сообщение forregister84 »

Версия 0.89. F_CPU = 8...16 МГц
На низкой частоте вкл/выкл выхода работает более корректно (по заднему фронту импульса).
И длительность первого импульса после включения не обрезается.
Для тех, кто в танке: в архиве есть схема подключения LCD и энкодеров и прошивка hex. Версия с кнопками устаревшая.
Вложения
ATMega8_PWM_LCD_E_089_VS.zip
(807.54 КБ) 55 скачиваний
Ответить

Вернуться в «AVR»