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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к 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.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
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.RU
 
Регистрация: 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.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,916
Сказал спасибо: 2,980
Сказали Спасибо 3,161 раз(а) в 2,146 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: RESET в AVR

Сообщение от papa_n Посмотреть сообщение
Как это сделать на Си в CVAVR ?
Мануал к нему есть? Выложите сюда, посмотрим наискосок.
ForcePoint вне форума  
Непрочитано 08.02.2013, 16:54  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
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, время: 08:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot