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

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

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

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

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

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

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

 
Опции темы

Выход из спящего режима по INT0

Непрочитано 06.01.2013, 17:59  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Сообщение от niXto Посмотреть сообщение
какая-то ножка как вход болтается в воздухе без подтяжки
Сообщение от putmannn Посмотреть сообщение
ldi temp, 0b11111011
out DDRD, temp
ldi temp, 0b00000000
out PORTD, temp
. .
Реклама:
omercury вне форума  
Непрочитано 06.01.2013, 18:49  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

omercury, делал эту ножку выходом подтянутым к +5, т.к. на кнопке всегда +5 кроме момента нажатия. Потребление не изменилось.
Вся непонятка в том, что я в ресете инициализирую все ноги и ТОЧНО ТАК ЖЕ инициализирую их в программе когда требуется уснуть. Совершенно одинаково они у меня сконфигурированы, но потребляет во-втором случае на 100 мкА больше. Что то работает, а что не понимаю.
Осциллографом измерил напряжения на всех ногах, они совершенно одинаковы в обоих случаях сна, но потребление разное.
putmannn вне форума  
Непрочитано 06.01.2013, 18:56  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Либо так
Сообщение от putmannn Посмотреть сообщение
ldi temp, 0b11111011
out DDRD, temp
ldi temp, 0b00000100
out PORTD, temp
либо внешний резистор на кнопку.

Остальное увидеть можно?
omercury вне форума  
Непрочитано 06.01.2013, 19:37  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

omercury, схему и программу ?
Как Вы сказали выше то же потребление 250 мкА.
Я "общался" с ЕЕПРОМ, может она жрёт ?
АЦП используется.

Последний раз редактировалось putmannn; 06.01.2013 в 19:42.
putmannn вне форума  
Непрочитано 06.01.2013, 22:28  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Обнаружил проблему.
Просыпаясь по прерыванию INT0 проц отрабатывает прерывание, в конце которого стоит RETI, после прыгает на команду стоящую за SLEEP, там у меня RET и вместо того, чтобы вернуться в вызвавшую процедуру, прыгает на RESET.
В стеке получается нули ? а как же вернуться к выполнению программы ?
Читал что засыпать надо в главном цикла, а я из главного цикла перехожу по RCALL в подпрограмму сна, может это мне всё портит (не те данные которые были до сна) ?
Попробывал уснуть из главного цикла, тоже завис проц, прыгнул наверное неизвестно куда, что же делать...

Последний раз редактировалось putmannn; 06.01.2013 в 22:36.
putmannn вне форума  
Непрочитано 06.01.2013, 22:38  
Slava1355
Прописка
 
Аватар для Slava1355
 
Регистрация: 13.06.2004
Адрес: Москва
Сообщений: 193
Сказал спасибо: 12
Сказали Спасибо 32 раз(а) в 18 сообщении(ях)
Slava1355 на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Сообщение от putmannn Посмотреть сообщение
omercury, схему и программу ?
Как Вы сказали выше то же потребление 250 мкА.
Я "общался" с ЕЕПРОМ, может она жрёт ?
АЦП используется.
В части потребления посмотри вложенный фрагмент из одного моего проекта с инициализацией ATMega8.
Обрати внимание на строку:
sbi ACSR,ACD ;shut down comparator to save power

Кстати, там есть два полезных модуля:
Registers clearing
и
SRAM clearing

Эти модули гарантируют, что при каждом запуске/перезапуске контроллер начнет работу с "чистого листа".

И еще, если собираешься пробуждать процессор по INT0, то есть ограничения по длительности импульса запуска. По короткому импульсу (‹ 1мс) он может не сработать, читаем даташит. Приходится использовать специальные схемные решения.
Вложения:
Тип файла: txt ATMega8_ini.txt (3.6 Кб, 78 просмотров)
Slava1355 вне форума  
Непрочитано 06.01.2013, 22:54  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Сообщение от Slava1355 Посмотреть сообщение
И еще, если собираешься пробуждать процессор по INT0, то есть ограничения по длительности импульса запуска. По короткому импульсу (‹ 1мс) он может не сработать, читаем даташит. Приходится использовать специальные схемные решения.
Спасибо, инициализацию буду использовать.
Импульс от кнопки (датчик холла), самое быстрое .1 секунды и более.
putmannn вне форума  
Непрочитано 07.01.2013, 11:40  
putmannn
Почётный гражданин KAZUS.RUN
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 1,040
Сказал спасибо: 368
Сказали Спасибо 98 раз(а) в 93 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Такое ощущение, что просыпаясь контроллер идёт на ресет, т.к.
Код:
INT_0 :	
ldi		temp,	akbf
cbr		temp,	16
sbr		temp,	255
sts		akbf,	temp
reti
этот код не изменяет переменную akbf, я её читаю на дисплее, а она как была при старте программы =16, так и осталась, а должна быть 255.

У меня в ЕЕПРОМ запоминается значение яркости (от 1 до 10), если не уходить в сон, значение корректное, и при выключении питания и как только не мучал плату оно стабильно. Но как только я засыпаю, значение в ЕЕПРОМ портится, но не каждый раз, 50/50/

Последний раз редактировалось putmannn; 07.01.2013 в 11:49.
putmannn вне форума  
Непрочитано 07.01.2013, 13:17  
Slava1355
Прописка
 
Аватар для Slava1355
 
Регистрация: 13.06.2004
Адрес: Москва
Сообщений: 193
Сказал спасибо: 12
Сказали Спасибо 32 раз(а) в 18 сообщении(ях)
Slava1355 на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Сообщение от putmannn Посмотреть сообщение
Такое ощущение, что просыпаясь контроллер идёт на ресет, т.к.
Код:
INT_0 :	
ldi		temp,	akbf
cbr		temp,	16
sbr		temp,	255
sts		akbf,	temp
reti
этот код не изменяет переменную akbf, я её читаю на дисплее, а она как была при старте программы =16, так и осталась, а должна быть 255.

У меня в ЕЕПРОМ запоминается значение яркости (от 1 до 10), если не уходить в сон, значение корректное, и при выключении питания и как только не мучал плату оно стабильно. Но как только я засыпаю, значение в ЕЕПРОМ портится, но не каждый раз, 50/50/
Можно получить комментарии от автора по фрагменту программы, а то не вижу в ней смысла?

INT_0 :
ldi temp, akbf - загружаем в temp переменную (а точнее константу) akbf
cbr temp, 16 - очищаем в переменной 4-й бит
sbr temp, 255 - устанавливаем в переменной все биты в "1" (зачем тогда предыдущая операция?)
sts akbf, temp - запоминаем в SRAM по адресу akbf значение temp (0xFF)
reti

В результате работы этого фрагмента переменная akbf не должна измениться, а в SRAM по адресу akbf должно находиться значение 255 (0xFF).

Последний раз редактировалось Slava1355; 07.01.2013 в 13:22.
Slava1355 вне форума  
Непрочитано 07.01.2013, 13:20  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Выход из спящего режима по INT0.

Значит, что-то не так в коде, где он? У меня все работает

При тактировании от встроенного генератора, после записи в еепром нужно дождаться окончания записи и только потом валиться в повер-довн. Т.к. логика программатора тактируется от встроенного генератора и при его отключении в процессе записи могут быть нюансы
niXto вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как устранить дребезг на вход INT0 begun Микроконтроллеры, АЦП, память и т.д 53 30.01.2018 17:21
Считывание байта по INT0 neox-neox Микроконтроллеры, АЦП, память и т.д 28 11.03.2011 21:10
Не работают входы INT0/ INT1 для 90S2313 в Протеусе welder_2002 Микроконтроллеры, АЦП, память и т.д 9 06.05.2009 19:09
mega16 - int0 - наводка? mel2 Микроконтроллеры, АЦП, память и т.д 10 26.07.2006 08:08
HDD 2 режима? IgorN Ремонт оргтехники 9 21.10.2003 12:30


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


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