Не определенное состояние пина после ухода в глубокий сон

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Не определенное состояние пина после ухода в глубокий сон

Сообщение daaar »

Использую attiny13, к int0 подключена кнопка, шим на OCR0A. МК находится в режиме PW_DOWN_MODE, просыпается только по INT0, соответственно. Когда просыпается:
1. отключаю прерывание по int0
2. запускается ШИМ(OCR0A = 200)
3. пока кнопка нажата бесконечный while
4. OCR0A = 0;
5. включаю прерывание по INT0, прерывание заканчивается и МК снова засыпает
Проблема в том, что после того как он засыпает, на ножке ШИМ случайным образом появляется логическая единица. Я в чем-то ошибся и надо порт как-то к земле притягивать? В моем понимании вывод ШИМ должен быть прижат к земле во сне
Спойлер#define F_CPU 600000
#include <avr/io.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define ClearBit(reg, bit) reg &= (~(1<<(bit)))
#define SetBit(reg, bit) reg |= (1<<(bit))

#define PWM_PIN 0
#define BTN 1

ISR (INT0_vect) {
ClearBit(GIMSK, INT0);
OCR0A = 200;
while(~PINB & (1 << BTN));
OCR0A = 0;
SetBit(GIMSK, INT0);
}

int main(void){
DDRB = (1 << PWM_PIN); // set pins for output
PORTB = (1 << BTN); // set pullup for BTN
TCCR0A = (1 << COM0A1) | (1 << COM0A0) | (1 << WGM00) | (1 << WGM01);
TCCR0B = (1 << CS01);
TCNT0 = 0;
OCR0A = 0;

GIMSK |= (1 << INT0);
MCUCR |= (1 << SE) | (1 << SM1);
sei();

while(1){
sleep_cpu(); // sleep cpu
}
}
Аватара пользователя
Starichok51
Модератор
Сообщения: 19043
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение Starichok51 »

перед уходом в сон ты САМ должен отключить ножку от ШИМ и подать на нее ноль - если тебе там нужен ноль.
а так, в каком состоянии находилась ШИМ, в таком она и остается.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение daaar »

Starichok51, благодарю. До этого пробовал просто в POTRB записать ноль, не подумал что надо в самом таймере пин в обычный режим перевести
Аватара пользователя
Starichok51
Модератор
Сообщения: 19043
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение Starichok51 »

а что у тебя подключено к ножке ШИМ, ели тебе мешает там единица?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение daaar »

Starichok51, да вроде случайное состояние пина в принципе не очень хорошо. У меня там висит транзистор, который рулит движком и упор в низкое энергопотребление
Аватара пользователя
Starichok51
Модератор
Сообщения: 19043
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение Starichok51 »

это я на всякий случай спросил, хотя и так понятно, что там может что-то остаться во включенном состоянии.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение daaar »

У меня единственная проблема в том, что в режиме глубокого сна потребление 3мА
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение parovoZZ »

где-то утечка тока. Надо очень тщательно прорабатывать схемотехнику и программу. У меня глубокий сон - это 1 мкА или даже меньше.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19043
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение Starichok51 »

по типовым характеристикам из даташита 3 мА - это активный режим, а не сон.
сейчас посмотрел твой текст в первом посте.
нехорошо делать
OCR0A = 0;
зачем таймеру создавать конфликтную ситуацию. запиши в main раз и навсегда
OCR0A = 200;
а перед уходом в сон отсоедини ножку от ШИМ и запиши на эту ножку ноль.
а при выходе из сна опять подсоедини ножку к ШИМ.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Карбофос
Опытный кот
Сообщения: 760
Зарегистрирован: Сб окт 22, 2016 17:33:32
Откуда: кг

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение Карбофос »

[uquote="daaar",url="/forum/viewtopic.php?p=4102439#p4102439"]в режиме глубокого сна потребление 3мА[/uquote]
Эта фраза очень некорректна.
Потребление чем? Attiny13?
Чем измеряли?
Где схема?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение akl »

daaar
Попробуйте так
DDRB <- 0xFD
PORTB <- 0x22
ACSR <- ACD
MCUCR <- 1<<SE|1<<SM1;|0<<SM0
Думаю, что после разрешения SLEEP POWER DOWN конструкция while, в том как есть сейчас, приведет к зависону.
john1770
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт ноя 15, 2016 12:48:20

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение john1770 »

Выход в ноль потребляет много тока, необходимо настраивать ножку на вход.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение parovoZZ »

Даташит говорит об обратном. Ножки на вход надо оставлять только те, которые "слушают" или по-другому никак. Вот только она должна быть подтянута к шине питания или к нулевой шине. Иначе входной шум будет "дёргать" входной триггер Шмитта, что негативно будет сказываться на энергопотреблении.
А в нуле ножка на выход или в единице, на энергопотреблениии это не сказывается никак.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19043
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение Starichok51 »

ну как это не сказывается?
если ножка осталась в единице и к ней подключена какая-то нагрузка, то нагрузка и во время сна будет потреблять ток от питания через ножку.
и наоборот, если нагрузка подключена к питанию (+5В) и ножка осталась в нуле, то тоже от питания будет потребление тока.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение parovoZZ »

речь шла про конкретный выход, а не нагрузку. Либо писатель не русский и не смог донести правильно свою сакральную мысль.
Я же говорю - чтобы добиться потребления 1 мкА и менее, необходимо очень тщательно прорабатывать схемотехнику и программу. На от,бись не взлетит.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение daaar »

Схема такая:
Изображение

Собрано все на макетке, питается от 12 вольт.

Выводы: R - на красный светодиод, G на зеленый, BTN - кнопка, LED - вывод подключен к полевику которые зажигает ленту от 12 вольт, ADC - из схемы видно куда подключен
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение parovoZZ »

с такой схемой о powerdown можно не беспокоиться. Здесь и без этого хватает токопотребляющих цепей.

Добавлено after 1 minute 49 seconds:
Re: Не определенное состояние пина после ухода в глубокий сон
кстати, в делителе напряжения BAT верхний резистор должен быть 10к. Так рекомендует даташит. Иначе измерения будут нелинейными.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение daaar »

parovoZZ, а что именно будет потреблять? У меня всё выключено в режиме сна, единственный потребитель это LDO получается

То есть норм будет работать если референсным напряжением поставлю напряжение питания МК? Нижний резистор оставить на 5.1 ком?
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение parovoZZ »

LDO - это он на бумаге. А по факту на нем падает 7 вольт. LDO - не более 1 вольта.
Референс можно брать абсолютно любой удобный. Только обязательно помнить - блок АЦП перед сном обязательно выключать ручками!!! В этом блоке есть аналоговые цепи и при потере тактирования они не отключаются от шины питания, а продолжают кушать ток.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

Re: Не определенное состояние пина после ухода в глубокий со

Сообщение daaar »

parovoZZ, получается надо отключать ручками АЦП, ШИМ. Если использую i2c или spi их тоже?
Ответить

Вернуться в «AVR»