AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
08.02.2013, 12:33
|
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: RESET в AVR
Сообщение от ForcePoint
|
Опрос MCUSR надо поставить в секцию "_no_init" (Или как-то она там называется, нет примера под руками. Если это GCC). Т.е. что-бы инфа оттуда была считана во временную переменную до выполнениея пролога Си-программы.
|
А можно поподробнее об этом
Может кто знает как это сделать для CVAVR ?
Последний раз редактировалось papa_n; 08.02.2013 в 12:50.
|
|
|
|
08.02.2013, 12:36
|
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: RESET в AVR
Не сочтите за неучтивость,
Но каким боком тут экономия?..и ЖСМ...
Вопрос о входе в подпрограмму при сбросе по WDT...
Спасибо
|
|
|
|
08.02.2013, 12:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: RESET в AVR
Сообщение от papa_n
|
Да, мне нужно отрабатывать сессию с ком портом ПК, пока ПК ее не разорвет
|
По каким признакам определяется начало и конец сессии? В конце концов, при асинхронном протоколе (т.е. когда очередные данные могут появится в ЛЮБОЙ момент времени) что вкладывается в понятие СЕССИЯ? Этот термин по OSI уровням находится "этажом выше", чем физика СОМ-порта.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
08.02.2013, 13:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: RESET в AVR
ut1wpr, я так понимаю - ему надо спать пока не поступят данные (любой высокий уровень) в usart, но я не в курсе, можно ли прерывание usart использовать как выход из спящего..
может быть, tx от компа продублировать на int0, и по нему выводить? просто для "просыпания" компу надо послать байтик..
|
|
|
|
08.02.2013, 13:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: RESET в AVR
а конец сессии - видимо таймаут x мсек, сбрасывается в прерывании usart..
|
|
|
|
08.02.2013, 13:12
|
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: RESET в AVR
В другом цикле... "Нижнем" это основной рабочий цикл, в нем будет ити программа... он там будет и засыпать, и просыпаться...
Но меня интересует, корректный сброс МК что бы войти подпрограмму обработки данных с ПК
|
|
|
|
08.02.2013, 13:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: RESET в AVR
Идиётский вопрос позволите?
Зачем вообще сбрасывать МК?
|
|
|
|
08.02.2013, 13:25
|
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: RESET в AVR
Сообщение от omercury
|
Идиётский вопрос позволите?
Зачем вообще сбрасывать МК?
|
МК выполняет свою программу, но вот в прерывании UART пришла комбинация, после которой он должен оставить все, и отрабатывать с ПК.
НО в основной программе не возможно отследить это.
Я думаю, что после этой комбинации он сбросится и войдет в "подпрограмму" работы с ПК по параметру флага сброса по WDT.
Других решений пока не придумал
|
|
|
|
08.02.2013, 13:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: RESET в AVR
Сообщение от papa_n
|
НО в основной программе не возможно отследить это.
|
Почему?
Создаёте переменную типа boolean (флаг) и по завершении приёма пакета данных из UART устанавливаете этот флаг. В основном цикле опрашиваете этот флаг и, обнаружив его, переходите к исполнению нужной вам части кода.
WatchDog вообще-то для аварийных ситуаций.
|
|
|
|
08.02.2013, 13:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: RESET в AVR
Сообщение от papa_n
|
МК выполняет свою программу, но вот в прерывании UART пришла комбинация, после которой он должен оставить все, и отрабатывать с ПК.
НО в основной программе не возможно отследить это.
Я думаю, что после этой комбинации он сбросится и войдет в "подпрограмму" работы с ПК по параметру флага сброса по WDT.
Других решений пока не придумал
|
Извините. Но уйдя в прерывание он и без того "оставит все".
Оставьте в покое WDT - он для других подвигов рожден.
Вы пробовали НЕ ПИСАТЬ программу, а немного посидеть с кубиками-кружочками? Стэйт-мэшин продумать, если надо? Или хотя-бы алгоритмику устаканить?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:35.
|
|