Ну, как Вы уже говорили, необходимо перенести включение прерываний после wdt_on() Во-вторых, вопрошающемунадо сообщить, что он делает с фьюзом WDTON (а, пока писал, Вы уже об этом написали ) И я бы временно закомментировал это: WDTCR |= (1<<WDCE) | (1<<WDE); Тогда получится только прерывание будильника, без системного сброса.
но тогда же и прерывание и системный сброс получится, не?
Не.
Martian писал(а):
я предлагаю оставить только прерывание на момент отладки.
А я показал как это сделать. В AVR сначала произносите заклинание(WDTCR |= (1<<WDCE) | (1<<WDE);), а потом включаете только прерывание с заданным временем. WDTCR = (1<<WDTIE) | (1<<WDP2) | (1<<WDP1); // заводим вачдог на 1 секунд
Есть два режима работы собаки Interrupt Mode или Interrupt and System Reset Mode В коде используется второй режим.
Вложение:
Вложение Untitled.png больше недоступно.
"Это полезно для обеспечения безопасности сторожевого таймера при использовании прерывания. Чтобы остаться в Интер- rupt и System Reset Mode, WDTIE необходимо устанавливать после каждого прерывания. Однако это не должно выполняться внутри самой процедуры обслуживания прерываний, так как это может поставить под угрозу функцию безопасности режим сброса системы Watchdog. Если прерывание не будет выполнено до истечения следующего тайм-аута, Будет применен сброс системы."
Как заставить работать в режиме Interrupt Mode я знаю, а вот как в Interrupt and System Reset пока не нашел.
Возможно протеус не совсем корректно симулирует, так в коде есть
Я бы добавил конденсатор на 0.1 мкф параллельно кнопке, вполне возможно, что прав
Mursik писал(а):
ИМХО, опять фузы не туда..
ТС считайте Fuses с проца и покажите. Возможно не правильно выставлен WDTON.
Фюзы заводские, как и отметил автор программы. Дебагинг еще делать не умею. Но есть ли в нем необходимость, если протеус алгоритм отрабатывает? Да, кстати забыл спросить про загрузку в EEPROM. AVRDUDE сообщает о 0 байтах, хотя в файл не пустой.
Большое спасибо за помощь. Работает. Пока я додумаюсь где и что, пройдет немало времени. Только начал разбираться с asm(). Понимаю, что вызывается ассемблер, но не понятно куда дальше копать. Подозреваю, что дело в нем. Нет? Конечно-же, если есть терпение и желание, то объясните где "зарыта" нажатая кнопка.
Дебагинг еще делать не умею. Но есть ли в нем необходимость, если протеус алгоритм отрабатывает?
Не просто необходимость, а обязательно! В любом программировании отладчик - наиглавнейший инструмент программиста. С ним Вы бы не стали задавать подобный вопрос. Что касается Протеуса, то не стоит из него делать основной инструмент. Вспомогательный - да. Как Вы сами убедились, что если в виртуальном работает, то может не работать в реальном.
Работает. Пока я додумаюсь где и что, пройдет немало времени.
Вы почти сами нашли проблему, задав правильный вопрос, а что с еепром. Программа написана без учета того, что в еепром ничего не записано, нажатие кнопки перед включением, записывает в еепром данные.
eduard_7 писал(а):
Только начал разбираться с asm().
Читайте книги по ассеблеру и по тому как работает проц. Но раз пробуете рабобраться в программе, то начните с языка С.
Кстати, о разнице между симулятором и реальным железом: только что читал "Наука Плоского мира" (фантастика, Терри Пратчетт и др.), и там попалось такое (текст большой, оффтопный, но интересный. не хочется обрезать только нужное предложение, спрячу под спойлер) СпойлерИнженер по имени Эдриан Томпсон с 1993 года занимается «разведением» электронных схем. Базовый принцип, известный как «генетический алгоритм», довольно широко используется в информатике. Алгоритм — это конкретная программа или рецепт, направленная на решение поставленной задачи. Один из способов поиска алгоритмов решения по-настоящему сложных задач состоит в применении «скрещивания» и естественного отбора. Под «скрещиванием» понимается «соединение части одного алгоритма и частью другого». Биологи называют этот процесс рекомбинацией — любой организм, размножающийся половым путем (например, вы), именно таким образом рекомбинирует хромосомы своих родителей. Описанный метод, а также полученный с его помощью результат, называется генетическим алгоритмом. Если он срабатывает, то дает блестящие результаты. Главный недостаток метода состоит в том, что вы не всегда можете объяснить, как полученный в итоге алгоритм решает поставленную перед ним задачу. Мы вернемся к этому вопросу, а пока займемся электроникой. Томпсон задался вопросом, что получится, если применить метод генетических алгоритмов к электронным схемам. Нужно сформулировать какую-нибудь задачу, случайным образом комбинировать схемы, которые способны или не способны ее решить, отбирать схемы, которые лучше справляются с решением, и повторять процесс в течение стольких поколений, сколько потребуется. Большинство инженеров-электронщиков, подумав над подобным проектом, довольно быстро придут к выводу, что использование настоящих схем будет напрасной тратой ресурсов. Вместо этого можно смоделировать схему на компьютере (ведь поведение электронной схемы нам известно точно), и добиться результата дешевле и за меньшее время. Однако Томпсон не стал полагаться на такой аргумент — возможно, настоящие схемы «знают» то, что недоступно для компьютерной модели. Он поставил следующую задачу: распознать два сигнала разной частоты — 1 кГц и 10 кГц, то есть сигналы, совершающие соответственно 1000 и 10 000 колебаний в секунду. Можете представить их в виде звука с высоким и низким тоном. Схема должна принимать сигнал на вход, каким-то образом его обрабатывать в зависимости от своей конечной структуры, и выдавать результирующий сигнал на выходе. При высокочастотном входе схема должна выдавать постоянное напряжение, равное нулю вольт, то есть не выдавать ничего, а при низкочастотном — постоянное напряжение 5 вольт (на самом деле эти свойства не были сформулированы с самого начала — подошли бы два любых постоянных сигнала, но в итоге получилось именно так). На то, чтобы вручную собрать тысячи тестовых схем, уйдет целая вечность, поэтому Томпсон воспользовался «вентильной матрицей, программируемой пользователем». Это микросхема, которая состоит из множества транзисторных «логических ячеек», или, скажем так, умных переключателей, соединения между которыми могут меняться в зависимости от инструкций, записанных в конфигурационную память устройства. Эти инструкции аналогичны ДНК-коду живого организма, и могут скрещиваться друг с другом. Именно это и сделал Томпсон. Сначала он взял матрицу из сотни логических ячеек и с помощью компьютера сгенерировал случайную популяцию из пятидесяти кодов инструкций. Компьютер загружал каждый набор инструкций в память матрицы, подавал входные сигналы, сравнивал результаты на выходе и пытался обнаружить свойство, которое могло бы помочь в выведении подходящей схемы. Сначала под этот критерий подходила любая схема, поведение которой отличалось от случайного. «Наиболее приспособленным» представителем оказалась схема, выдающая постоянное напряжение в 5 вольт независимо от «услышанного» ей сигнала. Затем коды наименее подходящих инструкций были «убиты» (то есть удалены), а подходящие скрещены между собой (скопированы и рекомбинированы), после чего процесс повторился снова. Самым интересным в этом эксперименте оказались не подробности его проведения, а то, как система искала путь к решению — и необыкновенная природа этого решения. К 220-му поколению лучшая схема выдавала сигналы, которые по существу не отличались от сигналов на входе — это были колебательные сигналы различной частоты. Того же результат можно было достичь вообще без микросхемы, используя один лишь провод! До желаемых постоянных сигналов на выходе было еще далеко. К 650-му поколению выходной сигнал, соответствующий низкой частоте, стал постоянным, но высокочастотный вход по-прежнему приводил к переменному сигналу на выходе. Потребовалось дойти до 2800-го поколения, чтобы схема начала выдавать почти постоянные и различные сигналы для двух входных частот. И только к 4100-му поколению странное отклонение исчезло, после чего схема практически перестала эволюционировать. Самым странным в получившемся решении была его структура. Такую микросхему не смог бы изобрести ни один инженер-человек. Собственно говоря, человек бы даже не смог найти решение, состоящее всего лишь из 100 ячеек. Однако человеческое решение было бы доступным для понимания — мы смогли бы рассказать убедительную «историю» о том, как оно работает. Например, в нем бы был генератор тактовых импульсов — электронная схема, выдающая сигнал с постоянной частотой. Его можно использовать в качестве точки отсчета для сравнения с другими частотами. Однако собрать тактовый генератор из 100 ячеек нельзя. Эволюция не утруждала себя построением тактового генератор. Вместо этого входной сигнал пропускался через сложную последовательность замкнутых контуров. Предположительно они создавали сдвинутые во времени и обработанные иными способами версии сигналов, которые, в конечном счете, объединялись и формировали постоянный сигнал на выходе. Предположительно. Томпсон описал работу микросхемы так: «На самом деле я не имею ни малейшего понятия о том, как она работает». Дальнейшее исследование окончательного решения выявило еще более удивительный факт: на самом деле использовались только 32 ячейки из 100. Остальные можно было удалить из схемы, никак не повлияв на ее работу. Сначала казалось, что можно удалить еще пять ячеек, которые не были электрически связаны ни с другими ячейками, ни с входом, ни с выходом. Однако после их удаления схема переставала работать. Возможно, эти ячейки реагировали не на электрический ток, а какие-то иные свойства остальных ячеек схемы — например, их магнитное поле. Какова бы ни была причина, интуиция Томпсона была абсолютно верной: у настоящей кремниевой микросхемы припрятано больше козырей в рукаве, чем у ее компьютерной симуляции.
Я не знаю, насколько это достоверно (параллельная работа каких-то ячеек без непосредственного соединения и вся история вообще), но в целом это верно. Симулятор не учитывает топологию цепей, и кто знает, чего ещё он не учитывает.
Без индикатора как то не то, когда захотите, найдёте на github библиотеку для tm1637 от lpodkalicki. Полный код программы был Яндексе, но похоже больше его там нет.
Помогите в написании кода на тиньку13, извините если не по теме обсуждения. Дожил до седых волос но так и не осилил программирование. Есть проект в котором обычная логики занимает занимает не прилично много места. кто поможет с радостью поделюсь разработанными печатными платами
Добавлено after 13 minutes 21 second: ещё немного в картинках, как переделать выключатель Vico в кнопку без фиксации расскажу
Как программа различит режимы 1,3 и 2,4 для первого канала? Кстати PB5 это RESET и нужно быть осторожным при его переводе на порт IO. Лучше начать со второго канала.
Михаил7878, уверены, что хотите использовать вывод RESET для вход D3? Нет ли другого типа МК (с большим количеством выводов), либо в другой конфигурации (без использования RESET)?
Почему спрашиваю: напр. в случае неточности или необходимости исправления программного кода, дополнение по какому-то параметру МК теперь будет "залочен" для обычных программаторов - RESET нет. Вам понадобится HV программатор/Fusebit Doctor для "разблокировки". Написание программного кода можно протестировать на симуляторе, но эти доп. операции "усложняют" процесс реального тестирования, отладки и т.д.
(Хорошо указать это, чтобы потом такие темы не появлялись на форуме типа, как: почему не программируется ATtiny13A, как разблокировать МК и прочие ).
veso74, выбор пал на тиньку 13 из-за малых её размеров и не больших размеров печатной платы. Мой программатор Чип прог+ справится с таким. По большому счёту тинка13 будет эмулировать работу трёх D триггеров и возможностью устранения дребезга при нажатии кнопок.
Добавлено after 48 seconds: Игорь_396, По большому счёту тинка13 будет эмулировать работу трёх D триггеров и возможностью устранения дребезга при нажатии кнопок.
Добавлено after 40 seconds: akl,По большому счёту тинка13 будет эмулировать работу трёх D триггеров и возможностью устранения дребезга при нажатии кнопок.
Игорь_396, По большому счёту тинка13 будет эмулировать работу трёх D триггеров и возможностью устранения дребезга при нажатии кнопок.
Как я понял, сохранится родной функционал пульта? Т.е. кнопки 1-2-3 вкл/выкл, кнопка 4 выкл все. Верно? Приемник с кнопками не коротнет у вас? Какие у него выходы?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения