Карма: 12
Рейтинг сообщений: 54
Зарегистрирован: Вс май 21, 2006 16:07:59 Сообщений: 1201 Откуда: Алтай
Рейтинг сообщения:0
Прошу специалистов помочь разобраться с проблемой. В программке 3 ШИМа для управления RGB диодом. Скважность зависит от частоты входного сигнала на входе INT0. ШИМ работает номрально, а для счета импульсов за период времени задействовал Таймер 0. Но не считате, Где то ошибочка.
У вас pin INT0 настроен на выход, а не на вход. Ну и в замен подтяжки вы просто держите на D2 высокий лог. уровень. Следовательно из за неправильной настройки порта не срабатывают прерывания на INT0.
Так как если і больше 26, то оно и больше 15, а по скольку у вас три независимых условия то оно всегда будет принимать значение того что выполняется последним. Их лучше расписать через else if()
Карма: 12
Рейтинг сообщений: 54
Зарегистрирован: Вс май 21, 2006 16:07:59 Сообщений: 1201 Откуда: Алтай
Рейтинг сообщения:0
Да, я с направлением порта напутал. Привык, что в ПИКушках 1- вход. А по поводу цикла программы, если else будет громоздко. Можно ли обойтись таким нелюбимым всеми оператором goto ?
Код:
while(1) { //---------- m: if (i>26) { BLUE_PWM = 0; RED_PWM = 255; GREEN_PWM = 0; goto m; }
//---------- if (i>15) { BLUE_PWM = 250; RED_PWM = 250; GREEN_PWM = 250; goto m; }
if (i<8) { BLUE_PWM = 0; RED_PWM = 0; // зеленый GREEN_PWM = 250; goto m; } }
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Я приводил упрощенный пример. В реальном проекте проверка идет от 8 до 26 каждое целое значение. Т.е 8, 9, 10...26 Наверное правильнее будет сделать мне сравнение с число if (i>26) {} if (i==26) {} if (i==25) {} ..... if(i==8) {} if(i<8) {}
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
ну, если это последовательный ряд чисел, то я бы применил массив...
Код:
if (i>26) i=26; if (i<=8) {i=0;} else {i-=8;}; Blue=BLUE_PWM[i]; Red=RED_PWM[i]; Green=GREEN_PWM[i];
или свитч кейс:
Код:
if (i>26) i=26; switch (i) { case 26: ..... break; case 25: ..... break; ..............,.......... case 9: ...... break; default: ....... };
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Последний раз редактировалось Ivanoff-iv Вс мар 17, 2019 12:27:51, всего редактировалось 1 раз.
if(cond_1){ // первый выбор } else if(cond_2){ // второй выбор } else if (cond_3){ // третий выбор } else { // если ничего не подошло }
Добавлено after 3 minutes 36 seconds: если сравнивате "цепочкой" по условию "больше" - начинайте с наибольшего. т.е. если сравниваем с числами 5, 10, 15 и 20, то надо писать в такой последователньости
Код:
if(x > 20){ // x более 20 } else if(x > 15){ // х более 15, но менее или равно 20 } else if(x > 10){ // х более 10, но менее или равно 15 } else if(x > 5){ // х более 5, но менее или равно 10 } else { // х менее или равно 5 }
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
какой выход? цепочка if - else if срабатывает только в одном месте, все остальные проходят мимо. "выход" не требуется, вся цепочка - это как бы один оператор.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
поправил прошлое сообщение (дописал код на кейсах)... сейчас нет возможности проверить, но мне кажется, если массивы во флеш разместить то по ресурсоемкости метод "иф-елзе" будет самым громоздким... а может и нет, если оптимизатор правильно сработает... (может кто промерит объём кода и скорость выполнения)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Карма: 12
Рейтинг сообщений: 54
Зарегистрирован: Вс май 21, 2006 16:07:59 Сообщений: 1201 Откуда: Алтай
Рейтинг сообщения:0
Застрял на ровном месте. В Протеусе все работает на УРА, скважность с каждого канала ШИМ меняется в заданных параметрах, строго по частоте входного сигнала. А в "железе" одни глюки. Светодиоды мигают хаотично, при этом изменение частоты входного сигнала не дает почти никаких изменений. Перепробовал все. Снижал частоту генерации ШИМ (менее сотни Гц), думал может РЖБ - лента, изменял фронты сигнала на входе INT0, менял контроллер, игрался с тактовой частотой, менял пороги срабатывания ... Короче все , что можно. Разумеется, проверил монтаж на плате (сопли, обрывы). В общем не знаю, в какую сторону копать Может есть какие то подводные камни с Атмегой 8?
питание мк стабльное? блокировочные конденсаторы имеются? ресет к плюсу притянут? как разведены ключи лент? схему давай!
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Карма: 12
Рейтинг сообщений: 54
Зарегистрирован: Вс май 21, 2006 16:07:59 Сообщений: 1201 Откуда: Алтай
Рейтинг сообщения:0
Вместо регистра MCUCR было записано MCUSR. Студия 6 (как впрочем и 4) на ноутбуке нормально компилировала в хекс, приносил проект на другой комп там прошивал и ступор. Когда попытался внести изменения в программу и заново откомпилировать уже на компе, студия 6 начала ругаться на MCUSR. Мистика! Едем дальше
Сейчас этот форум просматривают: OKF, roman.com и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения