Доброго времени всем. Сижу осваиваю таймеры на atmega8. Играюсь с разными режимами работы и т.д. Только вот непоняточка вышла одна, timer0 работающий в proteus не работает в железе, хотя параллельно ему работает timer1. Я сначала подумал, что контроллер гавкнул, заменил- результат тот же. Потом решил переключить на timer2, при таких же настройках он заработал на всех камнях, а вот нулевой не хочет. Даже 328-ю мегу взял, и на ней ничего не заработало... Поправте меня, можт это я туплю и его отдельно где включать нужно?
Заголовок сообщения: Re: Timer0 не работает ни на одном контроллере
Добавлено: Сб май 23, 2020 14:21:08
Тестовая прошивка для мега328П… фьюзы заводская установка (1 МГц). На выводе РВ5 подключается светодиод. Светик переключается по переполнению таймера0. При замыкании вывода РD2 на общий (GND), светик начнёт мигать значительно медленней.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Самсусамыч, Не-не, то я так таймеры обозвал. Я просто не пойму одного, три таймера, в моей программе использую два, один из них управляет ч-х разрядным индикатором, друго просто инкрементирует переменную. Так вот в связке таймер0, таймер1- работает таймер1, в связке таймер2, таймер1 работают оба, при том что таймер0 и таймер2 настроены идентично по переполнению, а таймер1 всегда по совпадению. Интересно, что в обеих случаях всё это работает в протеусе...
_________________ Хочется всё и сразу, а получаешь нихрена и постепенно...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Timer0 не работает ни на одном контроллере
Добавлено: Сб май 23, 2020 15:34:07
Я не смогу тебе помочь, так как не понимаю Си… имей просто ввиду, что у меги8 и меги238 таймера не одинаковые… то есть настройки для 8_й не подойдут для 328_й.
Я не смогу тебе помочь, так как не понимаю Си… имей просто ввиду, что у меги8 и меги238 таймера не одинаковые… то есть настройки для 8_й не подойдут для 328_й.
Это я вкурсе, даташит под рукой, я просто сат8 портировал на ат328 чтоб убедиться, что программа не работает, а не контроллер сдох.
_________________ Хочется всё и сразу, а получаешь нихрена и постепенно...
Заголовок сообщения: Re: Timer0 не работает ни на одном контроллере
Добавлено: Сб май 23, 2020 15:48:06
Могу только тестовую прошивку тебе написать для проверки твоего МК с данными таймерами по твоему описанию, а ты уже прикидывай что к чему. Только меги8 у меня нет... есть только шильд ардуино нано на меге 328П...
Заголовок сообщения: Re: Timer0 не работает ни на одном контроллере
Добавлено: Сб май 23, 2020 17:23:52
Если в прерывании какого либо таймера выполнение программы будет превышать время отсчёта другого таймера то да будут мешать. Если всё нормально, то не будут. Какое время по переполнению одного и другого?
a и z обязательно как volatile объявлять. Что в другом месте якобы работает - ничего не показывает. Вам правильно сказали, что надо читать про volatile. Всё, что меняется в переменных обязано быть volatile, компилятор не знает о прерываниях толком и может выкинуть код манипуляций над переменной. Если не поможет, попоробуйте на время убрать изменение TCNT0 в прерывании. Если и это не поможет - пишите, гляну детальнее.
NStorm, Здравствуйте. Поправил код под атмега8 с использованием volatile, но ничего не изменилось. TCNT0 не изменяется, там величина постоянная. Спойлер
Я имел в виду, не менять его в прерывании 1ой операцией. Вы его на 178 ставили. Я в ДШ не лазил чтобы проверить - некогда пока, но где-то встречал такое, что сразу в прерывании таймера нельзя менять его знаечение, иначе могут быть глитчи. Правда это может и вообще не об AVR было или вообще не было ) Но в порядке "почему бы и не проверить" написал.
А теперь вообще на 255 ставить - вот это плохая идея точно. У вас так из прерывания может никогда не вылезти МК, если прескейлер недостаточно большой будет.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения