Вопрос такого характера. Возможно ли после подачи низкого уровня на ногу Reset начинать программу не с начала, а с другого места?
Суть в том, что не хватает ноги, а бит RSTDISBL ставить не хочется.
Нет не игнорируется. Все будет последовательно.Viper115 писал(а):Игнорируется ли эта строка при простой подаче питания
А иной раз изобретение велосипеда может дать неожиданные находки ))))Viper115 писал(а): не буду изобретать велосипед
Ну, вот. ))) Можно и без ПЗУ обойтись.Pink-Pank писал(а):держать флаг в одном из регистров. Или в оперативке.
cbiyst компиляторы делают это вовсе не из-за того, что ОЗУ долго сохраняет данные (что по большому счету неверно), а для обеспечения всегда одного и того же предсказуемого состояния программы при старте.Pink-Pank писал(а):ОЗУ сохраняет свои значения до нескольких секунд после пропажи питания.Не зря СИшные компиляторы принудительно зануляют объявленные переменные в стартовом коде.
Viper115 писал(а):Attiny13. Ассемблер.
Вопрос такого характера. Возможно ли после подачи низкого уровня на ногу Reset начинать программу не с начала, а с другого места?
Это и вправду будет велосипед... Причем с квадратными колесамиСКАЗОЧНИК писал(а):сохранять в ПЗУ какую-нибудь переменную типа флага. А при инициализации после сброса ее проверять.
Код: Выделить всё
IN R16,MCUCR ;читаем регистр состояния
SBRS R16,EXTRF ;проверяем бит внешнего сброса
RJMP NO_EXT_RES ;если не было внешнего сброса, переход
;
;делаем что-то, если внешний сброс был
;
RJMP EXIT
NO_EXT_RES:
;
;делаем что-то, если не было внешнего сброса
;
EXIT:
чешется чаще всего от нечистоплотности - помойте язык мылом.Pink-Pank писал(а):Прям так и чешется язык поспорить. )))
А Вы не задумывались о том, почему компиляторы принудительно инициализируют ОЗУ, но не делают этого с периферийными регистрами?... Наверное, есть на то веская причина...А точно! Компилятор умеет предсказывать состояние периферии при старте! )
чешется чаще всего от нечистоплотности - помойте язык мылом.
ARV писал(а):компиляторы делают это вовсе не из-за того, что ОЗУ долго сохраняет данные (что по большому счету неверно), а для обеспечения всегда одного и того же предсказуемого состояния программы при старте.
Непредсказуемо потому, что явно не инициализируется аппаратно. Но ведь всем известно, на каких физических принципах строится оперативка. И что с ней бывает по пропаже питания. А у нас здесь даже не пропажа питания. А просто системный сброс. Поэтому вся ОЗУ и РОНы будут хранить свои последние значения, которые были до сброса, до тех пор, пока не будут изменены на другие. Вот именно это я и предлагал использовать.все эти проблемы возникли именно из-за того, что состояние ОЗУ после подачи питания непредсказуемо.