AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
19.08.2009, 08:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Хм...
Всё это НУЖНО обнулять программно. В начале программы ВСЕ используемые регистры нужно инициализировать.
Да, это сложно - но код не такой уж и большой, не так уж много регистров в АВР.
Хотя сейчас собираюсь переходить на хМеги - вот там виселица, одних только прерываний 122 штуки
А обнулять счетчик юсарта - зачем? Пусть досчитает биты и просто проигнорируем то, что он там принял. Но если надо - обнуляется он выключением/включением RXEN или TXEN. Так же обнуляются остальные счетчики - АЦП ТВИ и др
Так что begun мой вам совет - исправьте программу так, чтоб не нужно было ресетить контроллер. Пусть работает в бесконечном цикле, и в паузах переводите его в SLEEP. Будут вопросы - пишите, поможем, сами тоже когдато начинали)
|
|
|
|
19.08.2009, 12:33
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Друзья!
Сама плата стоит в разрез телефонной линии и каждый раз хочешь, не хочешь, подвергается коммутаци по питанию.
отсюда и все проблемы. Я бы запитал его параллельно, но тут вопрос энергопотребления.После установки VOD
уже информация при коммутации не стирается и RESET уже трогать не нужно.
Но, конечно ,гораздо привлекательнее поставить контроллер параллельно телефонной линии и так все пощитать.
Но вопрос об низком энергопотреблении ,как я понял, не простой и ,как уже спрашивал , не знаю можно ли его рассмотреть здесь, или это отдельная тема и нужно задать отдельно?
В дабавок ко всему Я от Вас учусь и как быть корректным на форумах, чтобы общение было нормальное.
Еще раз спасибо всем.
|
|
|
|
19.08.2009, 13:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Ну давайте по порядку.
Сообщение от niXto
|
Хм...
Всё это НУЖНО обнулять программно. В начале программы ВСЕ используемые регистры нужно инициализировать.
Да, это сложно - но код не такой уж и большой, не так уж много регистров в АВР.
Хотя сейчас собираюсь переходить на хМеги - вот там виселица, одних только прерываний 122 штуки
|
Что - "всё"? Память? Да, нужно инициализировать то, что нужно. И это не сложно; это делается естественным образом наряду с инициализацией портов, счётчиков и т.д. Если так уж хочется обнулить память, можно так:
Код:
|
ldi Yh,high(RAMEND)
ldi Yl,low(RAMEND)
clr r16
cyc:
st Y,r16
sbiw Y,1
cpi Yh,high(SRAM_START)
brne PC+2
cpi Yl,low(SRAM_START)
brne cyc |
Сообщение от niXto
|
А обнулять счетчик юсарта - зачем? Пусть досчитает биты и просто проигнорируем то, что он там принял. Но если надо - обнуляется он выключением/включением RXEN или TXEN. Так же обнуляются остальные счетчики - АЦП ТВИ и др
|
Там много чего ещё есть ![Улыбка](images/smilies/icon_smile.gif) АЦП, SPI, TWI, EEPROM на запись, UART, WatchDog - все они представлены автоматами с памятью, и доступа у программиста к этой памяти нет. Поэтому "пусть досчитает - проигнорируем" неприемлемо - мы не знаем, досчитал он или нормально сосчитал! Так можно пропустить байт или принять искажённый. Поэтому переход на 0 адрес при любых ухищрениях не тождествен ресету. Правильный способ сделать полноценный ресет из программы - использовать watchdog, как уже писали выше.
|
|
|
|
19.08.2009, 13:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Сообщение от makakus
|
Ну давайте по порядку.
Сообщение от niXto
|
Хм...
Всё это НУЖНО обнулять программно. В начале программы ВСЕ используемые регистры нужно инициализировать.
|
Что - "всё"? Память?
Там много чего ещё есть АЦП, SPI, TWI, EEPROM на запись, UART, WatchDog - все они представлены автоматами с памятью, и доступа у программиста к этой памяти нет. Поэтому "пусть досчитает - проигнорируем" неприемлемо - мы не знаем, досчитал он или нормально сосчитал! Так можно пропустить байт или принять искажённый. Поэтому переход на 0 адрес при любых ухищрениях не тождествен ресету. Правильный способ сделать полноценный ресет из программы - использовать watchdog, как уже писали выше.
|
Во-первых Я нигде не говорил, что надо переходить на 0000. ВСЕ мои программы вертятся в бесконечном цикле и ресет только аппаратный - а после него должно пройти 64мс прежде чем начнется работа по программе. Переходов на 0000 у меня нигде нет.
И если кому интересно - прикрепляю книгу
Евстифеев А.В.
Микроконтроллеры AVR семейств Tiny и Mega фирмы
ATMEL, 5-е изд., стер. — М.: Издательский дом «Додэка-XXI»,
2008. — 560 с.
ISBN 978-5-94120-220-1
Русский перевод АТМЕЛских даташитов, качество исходное, 2,5МБ
Прикрепленный файл: 8967238.pdf
|
|
|
|
19.08.2009, 15:41
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
уважаемый niXto!
не могли бы Вы посаветовать,как можно перевести
микроконтроллер в режиме SLEEP.Я читал в книге Белова и в даташит на Atiny 2313 ,что нужно поставить бит SE
регистра SMCR в единичное состояние, затем выбрать один из возможных режимов с помощью битов SM1 и SM0
регистра MCUCR и далее дать команду SLEEP. Однако я
в списке регистров Atiny2313 не нашел упомянутый регистр и не знаю как в СИ CVAVR дать команду SLEEP.
В другой книге вычитал, что это Асемблерсуая команда.
значит так прямо записать в CVAVR на CИ нельзя.
Так какже войти в режим пониженого энергопотребления
если можно дать пару строчек кода?
Заранее благодарен.
|
|
|
|
19.08.2009, 15:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
вобщето я на ассемблере пишу
ИМХО под такие мелкие контроллеры (по сравнению хотябы с АРМ) лучше АСМ
А так все верно
|
|
|
|
19.08.2009, 16:47
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
понял,
спасибо.
|
|
|
|
31.07.2010, 11:35
|
|
Прохожий
Регистрация: 31.07.2010
Сообщений: 2
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: RESET в AVR
Здравствуйте!
Столкнулся с проблемкой по программному ресету через сторожевой таймер: если контроллер (ATmega164) побывал в режиме сна (powersave), то сторожевой таймер переставал ресетить. Если кому встречался подобный случай, то прошу поделиться опытом.
Спасибо.
|
|
|
|
31.07.2010, 13:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: RESET в AVR
Сообщение от apr_
|
Столкнулся с проблемкой по программному ресету через сторожевой таймер: если контроллер (ATmega164) побывал в режиме сна (powersave), то сторожевой таймер переставал ресетить
|
Что записано в регистр WDTCSR?
При старте регистр MCUSR обнуляется?
Повер-сэйв не использую, но в повер-довне никогда на это не натыкался
|
|
|
|
31.07.2010, 15:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: RESET в AVR
Сообщение от begun
|
сечас этой проблемы нет .
|
Но нет никакой гаратии что сия проблема не вылезет в будущем ))))))) Зависит от алгоритма сохранения и восстановления.
Сообщение от Halex07
|
Оригинальной решение!!! Только на фига оно надо.
|
Действительно странно, перегружать контролер после одного из действий по алгоритму.
Сообщение от begun
|
Друзья!Сама плата стоит в разрез телефонной линии и каждый раз хочешь, не хочешь, подвергается коммутаци по питанию. отсюда и все проблемы.
|
Питание комбинированое. Последовательное для основного режима, и паралельное для СЛИП.
В СЛИПЕ жрёт мало, подобрать резистор 100-1000 ком что бы хватало для подержания питания в СЛИП. Просыпатся по появлению питания последовательного.
60В / 1000 000 ОМ = 0,00006 А = 60МКА. А при грамотной схеме и програме, МК в СЛИПЕ потребляет несколько МКА.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
Последний раз редактировалось picavr; 31.07.2010 в 16:02.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:55.
|
|