Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

RESET в AVR

Непрочитано 08.02.2013, 14:00  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от omercury Посмотреть сообщение
Почему?
Создаёте переменную типа boolean (флаг) и по завершении приёма пакета данных из UART устанавливаете этот флаг. В основном цикле опрашиваете этот флаг и, обнаружив его, переходите к исполнению нужной вам части кода.

WatchDog вообще-то для аварийных ситуаций.
Понимаете: основная программа довольно имеет довольно длинные процедуры... например особенно в начале... инициализация по другому юарту ЖСМ модема, там 15 команд ... ну не буду же я вставлять чтение "флага" через строчку???!! не логично...
Нужно конкретно отловить последовательность... Тем более софт для ПК уже есть... и он работает с другими блоками на основе PIC. мне нужно сделать преемственно....
После подачи последовательности следует пауза в 1-1.5 секунды... а потом идет отработка (чтение/запись номеров, считывание данных с флеши)
Реклама:
papa_n вне форума  
Непрочитано 08.02.2013, 14:36  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: RESET в AVR

Понимаете, у вас есть два варианта:
1)Продолжать делать так как сейчас со всеми недостатками с которыми вы уже столкнулись;
2)Сделать правильно как вам здесь советуют. Разрисуйте весь алгоритм на бумаге, разбейте его по блокам-задачам. Каждую задачу попытаться повесить на свой аппаратный ресурс(например вывод буфера UART по прерываниям, задержки только по таймерам и т.д.). Да, это дольше и надо тут включать мозги. Но в итоге ваша система заработает как надо.
Можно конечно прикрутить сюда RTOS, но задача того не стоит ИМХО.
Цитата:
Но все же:
W=MCUSR&0x08;
while(W)
{
}
Согласно ДШ 3 й бит это указатель на то что был сброс по WDT.
Маска по 3-му биту запишется как W=MCUSR&0x04;
Или W = MCUSR & ( 1 ‹‹ 3 );
uk8amk вне форума  
Непрочитано 08.02.2013, 14:41  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от uk8amk Посмотреть сообщение
Маска по 3-му биту запишется как W=MCUSR&0x04;
Может я не догоняю? Но по моему нумерация битов идет с "0" и Ваша комбинация маскируем "2" бит
papa_n вне форума  
Непрочитано 08.02.2013, 14:42  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
Вопрос Re: RESET в AVR

И все же? кто нибудь знает как в CVAVR прочитать MCUSR ?
papa_n вне форума  
Непрочитано 08.02.2013, 15:06  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от papa_n Посмотреть сообщение
Может я не догоняю?
В самую дырочку!
Команда W = MCUSR & ( 1 ‹‹ 3 ); три раза сдвигает единичку влево из бита "0", грузит это в аккумулятор и складывает результат с содержимым MCUSR по "И". То есть читает бит4 регистра статуса.

Вам нужен МК с двумя UART и почитать про прерывания.
Причём последнее нужнее всего.
omercury вне форума  
Непрочитано 08.02.2013, 15:47  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: RESET в AVR

Мой МК имеет 4 ре Uart -a
Ну хоть кто нибуть подскажет как в CVAVR прочитать регистр MCUSR?

Выше кто то написал что надо
Цитата:
Опрос MCUSR надо поставить в секцию "_no_init" (Или как-то она там называется, нет примера под руками. Если это GCC). Т.е. что-бы инфа оттуда была считана во временную переменную до выполнениея пролога Си-программы.
Как это сделать на Си в CVAVR?

Последний раз редактировалось papa_n; 08.02.2013 в 15:49.
papa_n вне форума  
Непрочитано 08.02.2013, 16:27  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от papa_n Посмотреть сообщение
Как это сделать на Си в CVAVR?
Код:
unsigned char mcusr_reg=MCUSR;
_Артём_ вне форума  
Непрочитано 08.02.2013, 16:28  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от papa_n Посмотреть сообщение
Как это сделать на Си в CVAVR ?
Мануал к нему есть? Выложите сюда, посмотрим наискосок.
ForcePoint вне форума  
Непрочитано 08.02.2013, 16:54  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от _Артём_ Посмотреть сообщение
Сообщение от papa_n Посмотреть сообщение
Как это сделать на Си в CVAVR?
Код:
unsigned char mcusr_reg=MCUSR;
Я б туды volatile дописал.

UPD:
А зачем его вообще читать?
Обычно делается так:
Код:
if (MCUSR & _BV(имя флага))код...

Последний раз редактировалось omercury; 08.02.2013 в 17:14.
omercury вне форума  
Непрочитано 08.02.2013, 17:13  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от omercury Посмотреть сообщение
Я б туды volatile дописал.
Обрадую Вас!
Не так не так не читает(((
papa_n вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собираем глюки и "подводные камни" AVR и AVR Studi Don_Ambrosio Коллекция глюков 27 14.11.2010 12:24
reset pic16c67 smv2012 Микроконтроллеры, АЦП, память и т.д 3 27.09.2008 17:52
Как BOR-reset в MSP430F2013 sher007 Микроконтроллеры, АЦП, память и т.д 3 24.09.2008 12:56
RESET на AVR 4ubaika Микроконтроллеры, АЦП, память и т.д 5 22.03.2007 18:35
надежность линии RESET на микроконтроллерах AVR korobov_michael Микроконтроллеры, АЦП, память и т.д 5 15.01.2007 13:50


Часовой пояс GMT +4, время: 17:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.