реклама на сайте
подробности

 
 
> Режим Power-down
KIG
сообщение Aug 19 2007, 15:45
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Использую режим power-down на МК ATmega16. Пробуждение МК осуществляю с помощью внешнего прерывания на ножке INT0 (по смене логического уровня). На эту ножку подаю напряжению с помощью потенциометра от 0 В до 4,5 В (сначала 0В, затем 4,5В). Перед командой "sleep" отправляю цифру 15 в программу Terminal. В функции обработки прерывания INT0 отправляю цифру 11 в Terminal. Однако ничего не получаю (ни 15, ни 11). Думаю что пробуждение МК не происходит. Подскажите, пожалуста, в чем дело?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 19)
prottoss
сообщение Aug 19 2007, 16:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Раз Вы до СЛИПа посылаете 15 и не получаете, вероятно что то с USART не так...


--------------------
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 19 2007, 17:39
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Цитата(prottoss @ Aug 19 2007, 19:26) *
Раз Вы до СЛИПа посылаете 15 и не получаете, вероятно что то с USART не так...


Пробовал без СЛИПа. Сначала пришла цифра 15, а затем постоянно приходила цифра 11 (постоянно срабатывало прерывание). Напряжение на INT0 было 1,17В. Ниже этого значения прерывание не срабатывало.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 19 2007, 20:01
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(KIG @ Aug 19 2007, 20:39) *
Пробовал без СЛИПа. Сначала пришла цифра 15, а затем постоянно приходила цифра 11 (постоянно срабатывало прерывание). Напряжение на INT0 было 1,17В. Ниже этого значения прерывание не срабатывало.

Давайте поподробнее опишите. А то не понятно ничего.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 19 2007, 23:39
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(prottoss @ Aug 19 2007, 19:26) *
Раз Вы до СЛИПа посылаете 15 и не получаете, вероятно что то с USART не так...

В Power-Down вся периферия отключается.
если после записи в UDR сразу уйти в Power-Down - ничего естессно не отправится.

Цитата(KIG @ Aug 19 2007, 18:45) *
Подскажите, пожалуста, в чем дело?

Поэксперементируйте вначале с режимом IDLE.
Когда с уходом в idle программа будет работать как задумано - переходите к отладке Power-Down.
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 20 2007, 07:10
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Подробнее...
Пытаюсь работать с режимом Power-down (Atmega16). Пробуждение осуществляю с помощью внешнего прерывания, которое должно возникнуть от смены логического уровня на ножке INT0. Для определения проснулся МК или нет отправляю цифру 11 на комп в функции обработки прерывания. Однако ничего не получаю.
Go to the top of the page
 
+Quote Post
Elegorod
сообщение Aug 20 2007, 07:14
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 2-02-07
Пользователь №: 24 993



Все правильно. Из режима Power Down можно выйти прерыванием только по низкому уровню, а не по смене логического уровня. В режиме Idle все должно работать нормально
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 20 2007, 07:43
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Цитата(defunct @ Aug 20 2007, 02:39) *
В Power-Down вся периферия отключается.
если после записи в UDR сразу уйти в Power-Down - ничего естессно не отправится.


Перед командой Sleep поставил задержку и цифра 15 стала приходить. Спасибо. Но разбудить МК (т.е. получить 11) не удается. Возможно причина в неправильных уровнях напряжения (1В и 4,5В)?

Попробовал пробуждение МК по низкому уровню. На ножку INT0 подал 4,5В. Цифра 11 приходит постоянно. А разве низкий уровень это не напряжение менее 1/3 питания (Напряжение питания МК 5В).
Go to the top of the page
 
+Quote Post
Andreas1
сообщение Aug 20 2007, 07:55
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142



Цитата
А разве низкий уровень это не напряжение менее 1/3 питания (Напряжение питания МК 5В).

А в даташиту заглянуть? Порог переключения при +5В около 1,5В с гистерезисом в 0,5В, т.е для переключения в ноль надо менее 1,2В, желательно еще меньше.
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 20 2007, 08:08
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Перед командой Sleep поставил задержку и цифра 15 стала приходить. Спасибо. Но разбудить МК (т.е. получить 11) не удается. Возможно причина в неправильных уровнях напряжения (1В и 4,5В)?

Попробовал пробуждение МК по низкому уровню. На ножку INT0 подал 4,5В. Цифра 11 приходит постоянно. А разве низкий уровень это не напряжение менее 1/3 питания (Напряжение питания МК 5В).

Цитата(Andreas1 @ Aug 20 2007, 10:55) *
А в даташиту заглянуть? Порог переключения при +5В около 1,5В с гистерезисом в 0,5В, т.е для переключения в ноль надо менее 1,2В, желательно еще меньше.


Следовательно, прерывание возникать не должно, но почему-то происходит!
Go to the top of the page
 
+Quote Post
muravei
сообщение Aug 20 2007, 12:53
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(KIG @ Aug 19 2007, 19:45) *
На эту ножку подаю напряжению с помощью потенциометра от 0 В до 4,5 В (сначала 0В, затем 4,5В).

Как -то у Вас все заморочисто! Сделайте нормальный формитователь импульса на кнопке с одновибратором - нажали импульс . А так что у Вас там на входе , может наводки какие.
Откуда Вы берете эти 4.5 в ?
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 20 2007, 14:02
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Цитата(muravei @ Aug 20 2007, 15:53) *
Как -то у Вас все заморочисто! Сделайте нормальный формитователь импульса на кнопке с одновибратором - нажали импульс . А так что у Вас там на входе , может наводки какие.
Откуда Вы берете эти 4.5 в ?


4.5 В получаю с выпрямительного мостика, который через потенциометр подключается к обмотке трансформатора на напряжение в 6,5 В. На входе измерил напряжение с помощью мультиметра, оно равно 4,5В.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 20 2007, 14:31
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(KIG @ Aug 20 2007, 17:02) *
4.5 В получаю с выпрямительного мостика, который через потенциометр подключается к обмотке трансформатора на напряжение в 6,5 В. На входе измерил напряжение с помощью мультиметра, оно равно 4,5В.


А зачем потенциометр? Обычно просто подаётся питание внешнее. При пропадании питания возникает прерывание. При появлении также. Иногда подают на компаратор. Если стоит задача оперативно среагировать на пропадание питания и успеть что-то ещё сделать.

Следует иметь ввиду, что если у вас в схеме кроме процессора ничего нет, то при переключении питания разряд кондёров основного питания может затянуться на длительное время, что приведёт к нехорошим последствиям. То есть питание переключилось, а однокристалка в PD не ушла, или ушла ч/з минуту к примеру. Таким образом эту минуту однокристалка будет работать в активном режиме от батарейного питания. Чтобы этого избежать надо либо компаратор использовать, либо поставить резистор разряда прямо на основное питание. Для быстрого разряда ёмкостей.
Go to the top of the page
 
+Quote Post
muravei
сообщение Aug 20 2007, 14:56
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(KIG @ Aug 20 2007, 18:02) *
4.5 В получаю с выпрямительного мостика, который через потенциометр подключается к обмотке трансформатора на напряжение в 6,5 В. На входе измерил напряжение с помощью мультиметра, оно равно 4,5В.

И что после мостика нет электролитов? Тогда у Вас должны возникать прерывания с частотой 100 гц!

Цитата(SasaVitebsk @ Aug 20 2007, 18:31) *
Обычно просто подаётся питание внешнее. При пропадании питания возникает прерывание.

Вы совсем запутаете человека!
Цитата(KIG @ Aug 20 2007, 18:02) *
4.5 В получаю с выпрямительного мостика, который через потенциометр подключается к обмотке трансформатора на напряжение в 6,5 В. На входе измерил напряжение с помощью мультиметра, оно равно 4,5В.

Так Вы можете спалить процессор: напряжение из переменных 6.5в будет примерно 1.5 раза больше.
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 20 2007, 17:17
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



И всё же почему МК не просыпается после подачи на ножку INT0 напряжения низкого уровня (менее 1.2В)?
Go to the top of the page
 
+Quote Post
muravei
сообщение Aug 20 2007, 17:55
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(KIG @ Aug 20 2007, 21:17) *
И всё же почему МК не просыпается после подачи на ножку INT0 напряжения низкого уровня (менее 1.2В)?

Так я таки непонял - то он у Вас не просыпается от низкого , то не засыпает от высокого! smile.gif
Судя по Вашему описанию , он может "заснуть" навсегда! Нарисуйте схему , как Вы его мучаете.
На Вашем месте я бы отключил всякие мостики с потенциометрами , от греха подальше, и включил бы
внутренний подтягивающий резистор на ИНТ0 . Коротил бы его потихоньку кнопкой на землю. Оно конечно дребезг, но понятнее бы было.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 20 2007, 18:06
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(KIG @ Aug 21 2007, 01:17) *
И всё же почему МК не просыпается после подачи на ножку INT0 напряжения низкого уровня (менее 1.2В)?
Возможно по тому, что INT0 у Вас не правильно проинициализировано? Приведите код инициализации.


--------------------
Go to the top of the page
 
+Quote Post
KIG
сообщение Aug 21 2007, 06:59
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Цитата(prottoss @ Aug 20 2007, 21:06) *
Возможно по тому, что INT0 у Вас не правильно проинициализировано? Приведите код инициализации.


void init_devices(void)
{
CLI(); //disable all interrupts
uart0_init();
MCUCR = 0x20;
GICR = 0x40;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialised
}

//
void main(void)
{
init_devices();
putchar(15);
putchar(15);
for (i=1; i<50; i++);//Delay
MCUCR|=(1<<SE);
asm("sleep");
while (1);
}
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 21 2007, 07:15
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(KIG @ Aug 21 2007, 14:59) *
Код
void init_devices(void)
{
...
MCUCR = 0x20;
...
}

В приведенном куске Вы инициализируете режим Power-Down mode и внешние прерывания INT0 и INT1 генерируются низким уровнем

Только я не понял, где Вы проверяете, что МК проснулся? smile.gif После sleep ничего нет...


--------------------
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 21 2007, 09:13
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(muravei @ Aug 20 2007, 17:56) *
Вы совсем запутаете человека!

Наверное не совсем корректно выразился. Я имел ввиду, что если PD используется при переходе на батарейное питание при пропадании основного, то именно основное питание непосредственно и подаётся на ножку INT. Использование же режима PD прямо в схеме без батарейного чрезвычайно редко. Обычно используется IDLE.

Прошу прощения, если кого ввёл в заблуждение. smile.gif Конечно лучше обсуждать конкретную схему. Тогда будут более конкретные подсказки. Во всяком случае я надеюсь. smile.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01526 секунд с 7
ELECTRONIX ©2004-2016