можно сделать все, и то, что сделан ATOMIC_BLOCK это только доказывает
попробуйте элегантно решить следующую задачу: написать функцию, которая возвращает значение volatile long переменной с ATOMIC_BLOCK это решается вот так:
МК работает от внутреннего генератора 4МГц с предварительным делителем на 16 = 250кГц. Ставлю в Протеусе для симуляции внешний генератор на 250кГц. Прерывание срабатывает через 16 секунд вместо 1с. Причем таже программа в AVR Studio с установкой 250кГц работает корректно. Что я упустил в Протеусе?
Архив с проектом:
prw07 писал(а):МК работает от внутреннего генератора 4МГц
Тинька 13 физически этого не может (читай раздел Calibrated Internal RC Oscillator даташита на Tiny13 вЫнимательно - только 9.6 и 4.8 ).
prw07 писал(а):с предварительным делителем на 16
А вот в это верю, и в листинге Вашей программы установки регистра CLKPR прописаны именно для делителя на 16.
prw07 писал(а): Ставлю в Протеусе для симуляции внешний генератор на 250кГц.
Т.е. нахально задаёте тактовую частоту микроконтроллера 250кГц, а затем с помощью установки регистра CLKPR=0b00000100 ещё и делите её на 16. Итого получаем тактовую 15.625кГц. Ну, и что Вам не нравится??? Как сказал известный сатирик - "Может в консерватории что-нибудь подправить?"
AVK писал(а):Такая проблема, нельзя поставить breakpoint ниже определенной строки в исходнике.
На то, что не пронумеровано не поставите, и проблема здесь не в Протеусе, а в компиляторе. Так что подсказали Вам правильно. Можно попробовать на время отладки вырубить (или понизить уровень) оптимизацию кода в компиляторе, или сделать одну из переменных, которая используется в функции глобальной и volatile.
AVK писал(а):... раскоментил одну строчку ... и все заработало.
Ну, так "дело было не в бобине" (ИМХО - Протеусе), компилятор "гадил". Либо неявная ошибка в программе, которую он неадекватно обработал. И с таким сталкивался.
Не надо с больной головы на здоровую.
Если строки не пронумерованы, то их нет в исполняемой программе.
То есть мы туда не попадаем в любом случае.
И это в любом компилере.
Может не в тему но все же:
не однократно замечал, что при отладке в протеусе и параллельном редактировании кода в кодевижен, протеус перестает воспринимать некоторые строки в коде, хотя их отображает. Помогает "ресет всех окон" в отладке.
Может это только у меня, но вот так вот было не раз.
Такая фигня иногда происходит и с 4й студией. HEX исполняется последний, а код показывается до последней правки. Помогает принудительное "сохранить все" в студии. При этом иногда жутко бесит поведение точек останова в протеусе после правки кода в студии. То они встают на старое место при каждом запуске, то исчезают вовсе. Галка исправлять точки при запуске не помогает
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Народ! Возникла проблема, мне надо в протеусе микруху DM74LS164N для управления индикаторами но там нет такой и аналог не могу найти. Плата с этими микрухами и индикаторами стоит в станке поэтому другие не могу использовать. Мне надо между этой платой и контроллером станка вставить свой контроллер для вывода доп информации. Подскажите как быть? Где взять библиотеку где она есть или какой у неё есть аналог, немогу найти аналог такой чтоб он был в протеусе.