ШИМ-генератор ATMega8+LCD+кнопки
Re: ШИМ-генератор ATMega8+LCD+кнопки
[uquote="forregister84",url="/forum/viewtopic.php?p=4310667#p4310667"]Ребят, я немного о другом. LCD тормозит при пониженных температурах, также в datasheet упоминается, что напряжение регулировки контраста зависит от температуры. Интересует опыт в этом вопросе.
Даже при +15 C уже тормозит и мигание при изменении шага было почти не видно.[/uquote]
А, про это.. Ну оригинальные Winstar-ы и МЭЛТ-ы, которыми я пользовался в те времена, работали нормально. Сильно в холоде не проверял, но при уличных осенних +10° замечаний не было. Как сейчас обстоят дела с китайскими матрицами - фик знает, не пробовал.
При понижении температуры все ЖКД снижают быстродействие самих кристаллов, они медленнее поворачиваются, это нормально. При -30° время их "поворота" может достигать пары секунд.
Даже при +15 C уже тормозит и мигание при изменении шага было почти не видно.[/uquote]
А, про это.. Ну оригинальные Winstar-ы и МЭЛТ-ы, которыми я пользовался в те времена, работали нормально. Сильно в холоде не проверял, но при уличных осенних +10° замечаний не было. Как сейчас обстоят дела с китайскими матрицами - фик знает, не пробовал.
При понижении температуры все ЖКД снижают быстродействие самих кристаллов, они медленнее поворачиваются, это нормально. При -30° время их "поворота" может достигать пары секунд.
- Реклама
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ШИМ-генератор ATMega8+LCD+кнопки
но ты же утверждал, что ты прерывание не используешь совсем.Demiurg писал(а):Первый вариант, это прерывание аппаратного таймера настроенного на 1 мс.
а теперь оказалось, что ты все-таки используешь прерывание аппаратного таймера.
зачем же нас обманывать, что ты отказался от прерываний вообще?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: ШИМ-генератор ATMega8+LCD+кнопки
Где то возникло недопонимание. Где я писал, что я вообще не использую прерывания? Писал про программные таймеры. Есть два варианта.
1 - Используется прерывание аппаратного таймера.
2 - Опрос флага прерывания аппаратного таймера.
В других прерываниях у меня минимальные действия. Стараюсь придерживаться этого правила.
Все зависит от задачи.
1 - Используется прерывание аппаратного таймера.
2 - Опрос флага прерывания аппаратного таймера.
В других прерываниях у меня минимальные действия. Стараюсь придерживаться этого правила.
Все зависит от задачи.
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ШИМ-генератор ATMega8+LCD+кнопки
ну да, получилось недопонимание.
вот ты писал, что у тебя программный таймер настроен на 1 мс. и еще ты писал, что из прерываний убрался вообще.
поэтому я спросил, как можно без прерываний точно отмерить 1 мс.
а оказалось, что у тебя аппаратный таймер отмеряет 1 мс, а не программный таймер.
ладно, разобрались с моим недопониманием.
вот ты писал, что у тебя программный таймер настроен на 1 мс. и еще ты писал, что из прерываний убрался вообще.
поэтому я спросил, как можно без прерываний точно отмерить 1 мс.
а оказалось, что у тебя аппаратный таймер отмеряет 1 мс, а не программный таймер.
ладно, разобрались с моим недопониманием.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: ШИМ-генератор ATMega8+LCD+кнопки
На простых (и быстрых) задачах, когда не нужна точность, использую delay(T_SYS) - никаких таймеров.)
- Реклама
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: ШИМ-генератор ATMega8+LCD+кнопки
Теперь понял, где недопонимание. Я стараюсь в прерываниях совершать минимальные действия. Это я имел в виду. Если проект, задача позволяет, максимум, что у меня было в прерываниях, это динамическая индикация.из прерываний убрался вообще
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ШИМ-генератор ATMega8+LCD+кнопки
ну да, именно эти слова у меня вывернулись так, что ты отказался от прерываний вообще.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: ШИМ-генератор ATMega8+LCD+кнопки
Сделал тестовый проект. Вывод на LCD дисплей непосредственно. Не стал заморачиваться, писал в лоб.
Дисплей 20х4. 4-битная шина. Я сделал так, отправка адреса 1 строки, потом заполнение строки. 20 символов. Между отправками примерно 50 us. Время от отправки адреса до отправки последнего символа заняло 1076 us.
Так как дело было давно, всех деталей я не запомнил. Признаю, время установки адреса, символа примерно соответствует даташиту. Чтобы наверняка, я чуток превысил времянки. Ногодрыг, установка адреса, строки. Почему я ошибочно запомнил, что между отправками адресов, символов время занимало больше, я сейчас уже не скажу. Но, как я писал раньше, так как у меня системный тик 1 мс, чтобы программные таймеры не врали, итерация основного цикла должна всегда выполняться с запасом. Пакетный вывод на дисплей занимает много времени, поэтому я раздробил вывод символов.
Спойлер
Код: Выделить всё
//==================
#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 ();
}
}
//==================
Так как дело было давно, всех деталей я не запомнил. Признаю, время установки адреса, символа примерно соответствует даташиту. Чтобы наверняка, я чуток превысил времянки. Ногодрыг, установка адреса, строки. Почему я ошибочно запомнил, что между отправками адресов, символов время занимало больше, я сейчас уже не скажу. Но, как я писал раньше, так как у меня системный тик 1 мс, чтобы программные таймеры не врали, итерация основного цикла должна всегда выполняться с запасом. Пакетный вывод на дисплей занимает много времени, поэтому я раздробил вывод символов.
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: ШИМ-генератор ATMega8+LCD+кнопки
каждый делает так, как ему удобно и как ему нравится.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: ШИМ-генератор ATMega8+LCD+кнопки
[uquote="Demiurg",url="/forum/viewtopic.php?p=4312172#p4312172"]...писал в лоб.[/uquote]
Один while(1); из которого не видно выхода, за ним другой while(1); Так задумано?
Один while(1); из которого не видно выхода, за ним другой while(1); Так задумано?
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: ШИМ-генератор ATMega8+LCD+кнопки
Да, проект тестовый, заготовка. Прямо в нем и написал.
-
forregister84
- Первый раз сказал Мяу!
- Сообщения: 25
- Зарегистрирован: Вт авг 23, 2022 14:44:25
Re: ШИМ-генератор ATMega8+LCD+кнопки
Версия 0.88. F_CPU = 8...16 МГц
Исправлен Watchdog c 500 мс на 2 с т.к. на частоте < 4 Гц контроллер сбрасывается до обновления частоты и было невозможно после этого поменять частоту.
Добавлены проекты в VS Code.
Исправлен 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+кнопки
[uquote="Up2805",url="/forum/viewtopic.php?p=4279326#p4279326"]Ну раз уж так обсыкаться от возможности невозможного, тогда расскажите, почему не поставили конденсаторы параллельно кнопкам? По всем правилам они должны присутствовать для подавления случайных наводимых импульсов и для минимизации эффекта дребезга контактов кнопок.[/uquote]
Чиво?! О_о Дребезг кнопок спокойно обрабатывается программно.
Чиво?! О_о Дребезг кнопок спокойно обрабатывается программно.
Re: ШИМ-генератор ATMega8+LCD+кнопки
Подскажите, как в данной схеме реализовать управление длительности импульса ? Нужно изменять частоту и длительность с контролем на LCD дисплее .
-
forregister84
- Первый раз сказал Мяу!
- Сообщения: 25
- Зарегистрирован: Вт авг 23, 2022 14:44:25
Re: ШИМ-генератор ATMega8+LCD+кнопки
Версия 0.89. F_CPU = 8...16 МГц
На низкой частоте вкл/выкл выхода работает более корректно (по заднему фронту импульса).
И длительность первого импульса после включения не обрезается.
Для тех, кто в танке: в архиве есть схема подключения LCD и энкодеров и прошивка hex. Версия с кнопками устаревшая.
На низкой частоте вкл/выкл выхода работает более корректно (по заднему фронту импульса).
И длительность первого импульса после включения не обрезается.
Для тех, кто в танке: в архиве есть схема подключения LCD и энкодеров и прошивка hex. Версия с кнопками устаревшая.
- Вложения
-
- ATMega8_PWM_LCD_E_089_VS.zip
- (807.54 КБ) 55 скачиваний


