LCD 8х2 WH0802A или 16х2 WH1602A Кнопка Mode - вкл/выкл выхода. Кнопки Freq-, Freq+ изменение частоты. Шаг 1 Гц (10, 100 Гц). Кнопки Duty-, Duty+ изменение коэффициента заполнения ШИМ. Шаг 1% (5%). Если долго держать кнопку, шаг увеличивается.
Частота и ШИМ сохраняются в EEPROM через 2 сек после изменения частоты или ШИМ (чтобы не записывать слишком часто) На низкой частоте используется делитель /8, /64, /256
Версия с одним каналом PB2: Частота: 1 Гц...1.6 МГц ((F_CPU/10)). Можно поднять до Fmax= F_CPU/4 по datasheet Fast PWM Mode Длительность импульса минимум 1 такт. ШИМ 1...99%
Версия с двумя каналами PB1, PB2: Частота: 1 Гц...800 кГц ((F_CPU/20)). Fmax= F_CPU/8 Phase and Frequency Correct PWM Mode Длительность импульса минимум 2 такта. ШИМ 1...50%
Частоту можно поднять до F_CPU/4 2-х канальный ШИМ сыроват и возможны глюки на высоких частотах из-за особенностей ICR1. Наверное лучше 1 канал ШИМ + схема деления на канала: 74AC74 + 74AC08.
А вы не ошибайтесь, вы же программист, а остальные - просто пользователи. Кстати, на практике редко когда моментально сгорает. Ток значительно ограничивается внутренней структурой выхода.
Это правильно, мало ли к чему могут дотронутся кнопки во время отладки. Я бы понял, что не ставят резисторы в массовом производстве из за экономии, но для себя несколько центов погоды не сделают. Да и если надо поменять местами выводы, дорожки не придется резать.
Да ну. Это ж насколько нужно быть невнимательным и бестолковым погромистом, чтобы "случайно" входы (inputs) настроить как выходы (outputs). И даже если программист совсем дундук тупоголовый и наляпал такой хрени и запрогал железный МК, то кратковременное нажатие посаженной на выход кнопки обычно к сгоранию не приводит. А если и сгорит - то это урок для погромиста - будь внимателен, смотри че творишь. И тем более, отладка в Протеусе настолько безопасна, что даже в мониторе пиксели не сгорят от прямого кз в виртуальной схеме.
Что вы пристали к человеку с какими-то резисторами, хотите ставьте, хотите нет, что это изменит? Меня больше такой вопрос интересует: Шаг 1Гц в диапазоне 1Гц...1.6МГц ?
P.S. В связи с наличием дешевых ШИМ модулей на Али полезность моего проекта не высока, но если кому-то надо, он начнет не с нуля. Тот же DDS на ATMega16 тоже вещь так-себе.
Добавлено after 10 minutes 31 second: Dimon456. Забыл отправить
Ну раз уж так обсыкаться от возможности невозможного, тогда расскажите, почему не поставили конденсаторы параллельно кнопкам? По всем правилам они должны присутствовать для подавления случайных наводимых импульсов и для минимизации эффекта дребезга контактов кнопок. Чо уж там, делать так делать! ШИМ-дегенератор - настолько ответственный узел, что надо приложить максимум серьезности и перестраховочности.
Еще бы и схему питания с кучей защит привели. Или хотябы указали, что питать от USB компа. А то поди догадайся, чем кормить сию приблуду. Ну а надежность и сбоебезопасность кода проверяли на соответствие MISRA? Юнит-тесты проводили?
Последний раз редактировалось Up2805 Сб авг 27, 2022 20:35:29, всего редактировалось 1 раз.
Добавлено after 5 minutes 42 seconds: Up2805. Давайте закрывать уже тему с резисторами . Возможно не стоило их рисовать в протеусе. И ежу понятно, что это не полная схема. Все дальнейшие апгрейды и полную схему не обещаю.
Да забыли уже про резисторы. Расскажите теперь про питание схемы. От "Кроны" можна? А от Li-Ion акума? А от батарейки пальчиковой? Три или четыре их ставить? Или только в USB компа? А напрямую можна или надо чето там мутить еще?
Блин, вот схему питания нужно указывать полюбасу, это куда важднее чем ваши эти резисторы для перепутывания входов/выходов. Без схемы питания перепутать питание гораздо более вероятно, чем если вдруг в готовом скомпилированном коде перепутаются байтики и перенастроится порт.
Исправления: ATMega8_PWM_LCD Версия 0.8 - исправлено в conv_period_freq(): не было перерасчета T1_OCR (OCR1B) при F>F_CPU/100 Из-за этого коэффициент заполнения ШИМ сильно изменялся при изменении частоты и можно было получить даже 100 %. (а должен слабо менятся, с учетом ограничений дискретности)
Меня больше такой вопрос интересует: Шаг 1Гц в диапазоне 1Гц...1.6МГц ?
На сколько я понял, - короткие нажатия на копку меняют "единицы", длительное удержание кнопки- сначала меняются единицы, (до десятков), потом десятки (до сотен) и потом сотни..
Up2805 писал(а):
Блин, вот схему питания нужно указывать полюбасу, это куда важднее чем ваши эти резисторы для перепутывания входов/выходов. Без схемы питания перепутать питание гораздо более вероятно, чем если вдруг в готовом скомпилированном коде перепутаются байтики и перенастроится порт.
Питание каждый может сделать в силу своих знаний и возможности. Поскольку выход в данной схеме- прямо из порта МК, то размах колебаний будет от "почти нуля" до "почти напряжения питания".
зы.. "просто рассуждения"- Питание - 5 вольт, только учтите, что и индикатор должен быть на 5 вольт.. Простой вариант питания- трансформатор 2~4 ватта на 9 вольт, диодный мост, 7805, электролиты 1000 мкФ на входе и 470 мкф на выходе 7805, и пара керамики 0,1 мкФ параллельно электролитам.
АлександрЛ. Все верно. Стоит обратить внимание на расчеты в Excel. Дискретность 1 Гц возможна на частоте F<=sqrt(F_CPU) Т.е. С кварцем 16 МГц дискретность 1 Гц до частоты 4кГц. С кварцем 1 МГц дискретность 1 Гц до частоты 1кГц.
Также обратите внимание на зависимость максимальной частоты от напряжения питания (datasheet ATmega8A) Figure 26-1. Maximum Frequency vs. Vcc 11.2.3 Brown-out Detection (сброс при понижении питания) 26.5 System and Reset Characteristics
Т.е. С кварцем 16 МГц минимум 4,5 В и с кварцем 8 МГц минимум 2,7 В. Поэтому фъюз BODEN=0, BODLEVEL=0
Собрал схему в протеусе (ваша не подошла, у меня протеус старенький) Потыкал кнопочки..
Кстати, у вас прошивки только под кварц 16 МГц, или я чего-то не нашел?
И, как предложение- а у вас не было желания, хотя бы перестройку частоты сделать энкодером? Кнопочками, даже с учётом того, что, при длительном удержании увеличивается шаг перестройки- всё равно как-то долго, хотя, может это протеус так тормозит.. В некоторых случаях- такой генератор- полезная штука, у меня "функционально-подобная" конструкция есть, только там сам генератор на 555 таймере и частотомер-
Перекомпилировать под другую частоту не проблема. Меняем #define F_CPU 16000000UL. Если частота <=8 МГц можно CKOPT=1 иначе CKOPT=0. Протеус лучше работает, если частота F_CPU =1 Мгц. Частоту ШИМ лучше несколько кГц, при большей тоже тормозит: #define F_CPU 1000000UL #define FREQ_DEF 1000. До энкодера руки не дошли.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения