Обсуждаем контроллеры компании Atmel.
Ответить

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

Ср авг 31, 2022 04:57:23

forregister84 писал(а):До энкодера руки не дошли.
А, может быть, дойдут? :)) :)) Как-то кажется, что, хотя бы частоту, энкодером менять проще.. :dont_know:

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

Ср авг 31, 2022 19:05:25

А вот и схема:
Вложения
_Kicad_User_Lib.zip
(450.5 KiB) Скачиваний: 61
ATMega8_PWM_LCD_KiCad6.zip
(146.53 KiB) Скачиваний: 73
ATMega8_PWM_LCD.pdf
(74.2 KiB) Скачиваний: 62

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

Чт сен 01, 2022 09:11:00

Как-то кажется, что, хотя бы частоту, энкодером менять проще.. :dont_know:

Ну конечно, нужно делать по уму, а не тяп-ляп.)

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

Вс сен 04, 2022 20:41:24

Прошивка для энкодера будет очень нескоро. Пока только схема:
Вложения
ATMega8_PWM_LCD_E.pdf
(84.42 KiB) Скачиваний: 58
ATMega8_PWM_LCD_E_KiCad6.zip
(33.68 KiB) Скачиваний: 68

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

Пн сен 12, 2022 11:29:04

Кнопка Mode на PB0 (так удобнее на моей макетке). Исправлен глюк: нужно было нажать 2 раза для увеличения 4000 -> 4001 Гц

Добавлено after 5 minutes 19 seconds:
ШИМ-генератор с LCD, 2-мя энкодерами и кнопкой

Энкодер с кнопкой NONAME.
12 импульсов, 12 щелчков на 1 оборот
При вращении вручную самые короткие импульсы около 10 мс.
1 энкодер нормальный, второй с очень сильным дребезгом. Подтяжка 10 кОм + фильтр 10 кОм + 47 нФ
Фронты 10-90%: нарастание 2мс/ спад 1 мс.

Самое устойчивое состояние - когда оба сигнальных вывода не соединены с общим (11).

Вращение по часовой стрелке (CW):
AB
11
01
00
10
11

Вращение против часовой стрелке (CCW):
AB
11
10
00
01
11

Шаг частоты 1/10/100/1000 Гц. Шаг ШИМ 0,01/ 0,1 / 1 / 5 %. Переключение кнопкой энкодера по кругу.
(нужно добавить мигание соответствующего разряда неск. сек.)

2-х канальный ШИМ с энкодером будет позже.
Вложения
ATMega8_PWM_LCD_E.pdf
(86.14 KiB) Скачиваний: 58
ATMega8_PWM_LCD_E_KiCad6.zip
(117.68 KiB) Скачиваний: 66
ATMega8_PWM_LCD_E_083_AS7.zip
(184.58 KiB) Скачиваний: 70
ATMega8_PWM_LCD.pdf
(74.97 KiB) Скачиваний: 47
ATMega8_PWM_LCD_KiCad6.zip
(147.3 KiB) Скачиваний: 64
ATMega8_PWM_LCD_082_AS7.zip
(177.84 KiB) Скачиваний: 66
ATMega8_PWM_2CH_LCD_082_AS7.zip
(178.98 KiB) Скачиваний: 63

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

Пн сен 12, 2022 22:16:19

А что одним шимом ограничились-то?, развивайте дальше тему, частотомер, генератор, вольтметр и т.п.

Вопрос, за чем использовать прерывания? Для чего?
На сколько мне известно особенностью работы блока сравнения в режимах, предназначенных для формирования ШИМ-сигналов, является двойная буферизация записи в регистры сравнения. Она заключается в том, что записываемое число на самом деле сохраняется в специальном буферном регистре. А изменение содержимого регистра сравнения происходит только при достижении счетчиком максимального значения. Вам что, аппаратного ШИМ не достаточно?

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

Пн сен 12, 2022 22:43:49

Dimon456 Изменение делителя таймера посредине импульса насколько я понял исказит сигнал. Поэтому он меняется в начале периода.
ICR1 в 2-х канальном ШИМ без буфферезации.
Еще не все варианты глюков проверил.

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

Вт сен 13, 2022 06:15:48

forregister84 писал(а):...1 энкодер нормальный, второй с очень сильным дребезгом. Подтяжка 10 кОм + фильтр 10 кОм + 47 нФ...
Дребезг значительно уменьшается при уменьшении номиналов R3...R9 до 1...3кОм чтобы привести в соответствие с типовыми характеристиками на контактные энсодеры.

Вместо такой картинки при номинале 10к

при номинале 1к будете видеть
Вложения
valcoder 001_1.jpg
(46.79 KiB) Скачиваний: 88
Валкодер3.PNG
(122.38 KiB) Скачиваний: 76
энкодер_ток.png
(10.53 KiB) Скачиваний: 77

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

Вт сен 13, 2022 17:36:34

akl спасибо. А можно ссылку на datasheet ? А то у Bourns PEC12R минимального тока нет. У меня были подозрения насчет нехватки тока для контактов. RC-фильтр помог и я на этом успокоился.

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

Ср сен 14, 2022 16:17:11

С моими энкодерами с подтягивающими резисторами 2 кОм лучше не стало. Если вручную быстро крутить дребезг все равно очень сильный.
(энкодеры старые взял с куском какой-то платы). Фильтр все равно нужен. Оставил 2 кОм т.к. это более корректно.

Макетка_ATMega8
https://img.radiokot.ru/files/150397/2xja9u4cf4.JPG

Осциллограммы:

Медленное вращение энкодера без фильтра
https://img.radiokot.ru/files/150397/2xjabdm61z.png

Быстрое:
https://img.radiokot.ru/files/150397/2xjabcupue.png
https://img.radiokot.ru/files/150397/2xjabddm5j.png
На выходе фильтра:
https://img.radiokot.ru/files/150397/2xjabd4ruh.png

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

Ср сен 14, 2022 16:52:20

Измените метод/алгоритм для механического энкодера с simple state machine. Никогда, ни с каким типом енкодера не ошибается (даже с поврежденным "зубом" - просто пропускает поврежденный зуб). Назад во времени для себя портировал код с Arduino на AVR, на PIC, с/без прерывания, везде успешно работает. Почти никогда не подключаю даже конденсатори. О более сложных системах debounce речь вообще не идет - нет необходимости.

Rotary encoder handler for Arduino. v1.1, 2011 Ben Buxton

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

Пт сен 16, 2022 17:22:18

veso74 - спасибо. Это табличный метод. Оставлю на потом.

добавлено мигание разряда при изменении шага.
Вложения
ATMega8_PWM_LCD_E.pdf
(85.61 KiB) Скачиваний: 48
ATMega8_PWM_LCD_E_085_AS7.zip
(187.1 KiB) Скачиваний: 61
ATMega8_PWM_2CH_LCD_E_085_AS7.zip
(187.32 KiB) Скачиваний: 59

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

Вс сен 18, 2022 22:22:56

исправлено: атомарный доступ к T1_TOP, T1_OCR (иногда устанавливался завышенный ШИМ)
Вложения
ATMega8_PWM_LCD_E_086_AS7.zip
Dead Time 0, 1, 2 такта F_CPU (легко перекомпилировать на //#define PWM_MAX 10000 //100%)
(187.52 KiB) Скачиваний: 61
ATMega8_PWM_2CH_LCD_E_086_AS7.zip
Dead Time 0...1, 1...2, 2..3 такта F_CPU
(260.44 KiB) Скачиваний: 67

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

Чт сен 22, 2022 21:55:42

Уменьшены до минимума глитчи на ВЧ и НЧ при изменении частоты.
Те, кто свято верит в "двойная буферизация записи в регистры сравнения"
не учитывают что между записью в OCR1A и OCR1B проходит 2 такта. В это время
может прийти конец периода и OCR1A обновится, а OCR1B обновится в следующем
периоде. Это приводит к глитчам, типа растягивание импульса на 2 периода и т.д.
Особенно неприятно, когда это происходит при резком изменении частоты, например 300 - 1300 Гц.
Поэтому на низкой частоте запись в регистры в начале периода в прерывании.
На ВЧ шаг периода 1 такт и глитчи не более 1 такта.

2-х канальный ШИМ с энкодером будет позже.
Вложения
LF_glitch.zip
(219.73 KiB) Скачиваний: 63
HF_glitch.zip
(90.68 KiB) Скачиваний: 64
ATMega8_PWM_LCD_E_087_AS7.zip
(188.47 KiB) Скачиваний: 70

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

Вс сен 25, 2022 12:22:58

ATMega8_PWM_LCD_E_087_AS7
Небольшие исправления, ничего не меняющие, но быдлокодинга с TIFR и TIMSK меньше.

ATMega8_PWM_2CH_LCD_E_086a_AS7
2-х канальный ШИМ с энкодером:
Исправлено: при увеличении частоты ICR1 может быть меньше TCNT1 и тогда счетчик считает до 0xFFFF.
Исправлено с помощью записи 1 в TCNT1, что приводит к глитчу ВЧ.
Глитч НЧ при изменении делителя остался.
Вложения
ATMega8_PWM_LCD_E_087_AS7.zip
(188.45 KiB) Скачиваний: 58
ATMega8_PWM_2CH_LCD_E_086a_AS7.zip
(261.61 KiB) Скачиваний: 60
Glitch_E_086_2CH_HF.zip
(191.61 KiB) Скачиваний: 56
Glitch_E_086a_2CH_HF.zip
(306.44 KiB) Скачиваний: 57
Glitch_E_086a_2CH_LF.zip
(159.81 KiB) Скачиваний: 58

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

Вс окт 02, 2022 12:12:34

Вышла небольшая накладочка... :(
Исправленные версии:

Добавлено after 20 minutes 18 seconds:
Точная NOP-синхронизация с началом периода. Глитч НЧ при изменении делителя остался.
Вложения
ATMega8_PWM_LCD_E_087a_AS7.zip
(190.05 KiB) Скачиваний: 52
ATMega8_PWM_2CH_LCD_E_087a_AS7.zip
(263.09 KiB) Скачиваний: 48
E_087_delays_16Mhz.zip
(216.91 KiB) Скачиваний: 52
E_087a_1Mhz_2CH_sync.zip
(747.39 KiB) Скачиваний: 48
E_087a_1Mhz_sync.zip
(234.9 KiB) Скачиваний: 47
ATMega8_PWM_LCD_E_087_AS7.zip
(188.48 KiB) Скачиваний: 62
ATMega8_PWM_2CH_LCD_E_086a_AS7.zip
(262.35 KiB) Скачиваний: 66

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

Пн окт 03, 2022 16:15:00

Два поста слились в один. Точная NOP-синхронизация с началом периода это версия 087a

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

Вт окт 25, 2022 16:03:52

Увеличил период мигания, т.к. даже пр +5C LCD медленно обновляется.
Вложения
ATMega8_PWM_LCD_E_087a_AS7.zip
(190.63 KiB) Скачиваний: 51
ATMega8_PWM_2CH_LCD_E_087a_AS7.zip
(263.74 KiB) Скачиваний: 53

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

Ср окт 26, 2022 18:33:02

Символьные ЖКИ-дисплеи медленные. Если не нужно выводить динамику типа индикатора уровня, спектроанализатора, то есть следующий способ:

Итак. Символьные дисплеи на контроллере HD44780 довольно медлительные. Команда очистки дисплея длится примерно 1600 мкс. Плюс временные интервалы, которые нужно выдерживать между отправками символов либо адресов строк. Есть два варианта, Опрос флага готовности BF, либо выдерживать временные интервалы. Суммируя все это, можно реализовать работу с сивольными ЖКИ дисплеями на контроллерах HD44780 следующим образом:

В ОЗУ отводим буфер. Число символов в строке * количество строк. При 20х4 получаем буфер размером 80 байт. И теперь алгоритм работы с дисплеем будет выглядеть так:

Пункт 1. Инициализация дисплея. Инициализация нужных режимов. Пункт 2. По готовности дисплея, работает автомат, каждые 1 мс. Отправка адреса текущей строки. Пункт 3. Отправка символа. Инкремент индекса указателя на символ. Как только значение указателя на символ >= символов в строке, индекс указателя на символ в ноль, инкремент индекса указателя на следующий адрес строки, если >= кол-ва строк, сброс на ноль индекса указателя на адреса строк. Пункт 2. То есть, адреса и символы отправляются каждые 1 мс. При дисплее 20х4 весь цикл занимает 84 мс.

Команда очистки дисплея теперь не нужна. Мы делаем очистку буфера дисплея.

char_display.h


char_display.c


Пример старый, но рабочий. Неоднократно использовался как на своих поделках, так и в заказных проектах. По поводу VFD дисплея Futaba m204sd08aa. Это аналог контроллера HD44780. Но быстрый. Ему не требуются долгие временные интервалы, как у ЖКИ.

Делал одно устройство, отлаживал работу трансивера. Видео одного из тестов.
Вложения
1999788.jpeg
(76.11 KiB) Скачиваний: 36
Последний раз редактировалось Demiurg Ср окт 26, 2022 19:02:40, всего редактировалось 1 раз.

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

Ср окт 26, 2022 19:01:13

весь цикл занимает 84 мс.

А 84 мс, извините, визуально уже заметно. Впрочем, на один символ тратится около 50 мкс при 8-битном интерфейсе, и 80 символов могут быть отправлены примерно за 4 мс., что и визуально незаметно, и не шибко то тормозит работу программы, да и выглядит намного-намного легче по объему программного кода и исходного текста.
И вовсе не всегда нужно перерисовывать именно все 4 строки сразу. Зачастую, при выводе строки придерживаются именно строчной структуры дисплея.
Ответить