Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос по SLEEP в Тиньке13
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 21, 2025 10:51:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
В сети
 Заголовок сообщения: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Пн янв 10, 2022 20:18:13 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
С АВР сталкиваюсь редко, и вот понадобилось на время уходить в сон.
Накидал тестовую программу в Студии, где мигает светодиод, а во время паузы между переключениями МК должен засыпать. И вот что то не могу разобраться с просыпанием, что делаю не так.
Буду признателен реальной помощи в разъяснении проблемы.
Проект в Протеусе прилагаю
Код:
//ATtiny13 SLEEP_test
#include <avr/io.h>
#include <avr/wdt.h> // здесь организована работа с ватчдогом
#include <avr/sleep.h> // здесь описаны режимы сна
#include <avr/interrupt.h> // работа с прерываниями
#include "bitop.h"
#define   F_CPU 1200000UL    //Частота генератора 9600000/8
#include <util/delay.h>
//----------
#define    SIG 2
//----------
unsigned char FLAG = 0;
//----------
void CPU_Init(void);
void sleep_wdog (void);
/***********************************/

ISR(WDT_vect)
    {
      clrbit (WDTCR, WDTIE); // запрет прерывания по ватчдогу
   }
/***********************************************/   
int main(void)
{
   CPU_Init();
   while(1)
   {
      setbit(PORTB, SIG);
      sleep_wdog ();
      clrbit (PORTB, SIG);
      sleep_wdog ();
   }
      
      
 } // окончание бесконечного цикла   
//*************************************************      

      void CPU_Init(void) // инициализация порта
      {
         PORTB = 0b00000000;
         DDRB = 0b00010100;
      }
//*********************************************************************   
 void WDT_Init(void)
    {
    wdt_reset(); // сбрасываем   
    wdt_enable(WDTO_1S); // настройка прескалера на 1s и разрешение работы WDT
    setbit(WDTCR,WDTIE); // разрешить прерывание от WDT
    sei(); // enable global interrupts
    set_sleep_mode(SLEEP_MODE_IDLE); // 
   }       
//*********************************************************************   
 void sleep_wdog (void)
      {
      wdt_reset(); // сбрасываем
      wdt_enable(WDTO_1S); // настройка прескалера на 1s и разрешение работы WDT
      setbit(WDTCR,WDTIE); // разрешить прерывание от WDT
      sei(); // enable global interrupts
         
      set_sleep_mode(SLEEP_MODE_IDLE);
      sleep_enable();
      sleep_cpu();
     }



Вложения:
test.rar [15.63 KiB]
Скачиваний: 94
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Пн янв 10, 2022 21:44:29 
Говорящий с текстолитом
Аватар пользователя

Карма: 18
Рейтинг сообщений: 236
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1549
Откуда: Тюмень
Рейтинг сообщения: 0
Опишу словами, что нужно сделать… после конфигурации портов конфигурируете работу сторожевого таймера. А именно – настраиваете необходимый предделитель; - разрешаете прерывание по данному таймеру; - разрешаете работу данного таймера; - очищаете флаг прерывания данного таймера; производите сброс данного таймера и разрешаете глобальные прерывания. В теле программы уходите в глубокий сон. В прерывании по сторожевому таймеру (Watchdog Time-Out) повторно разрешаете прерывание (записываете 1 в бит WDTIE регистра WDTCR), затем переключаете светодиод и выходите из прерывания. А так как в теле программы выполняется только уход в сон – МК вновь засыпает до следующего пробуждения. Если в прерывании по сторожевому таймеру не разрешить повторно прерывание то после выхода из прерывания МК перезагрузится (произойдёт reset МК). :)


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Вт янв 11, 2022 18:26:44 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
Опишу словами, что нужно сделать…

Всё это делал, эффект - ноль.
Нашел схожий примерчик для ардуины, якобы рабочий вариант. Переделал его под студию, эффект тот же. Независимо от настройки ВДТ, при выходе из прерывания - резет МК . :?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Вт янв 11, 2022 19:15:59 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 1
Может FUSE-бит WDTON установлен?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Вт янв 11, 2022 20:25:41 
Говорящий с текстолитом
Аватар пользователя

Карма: 18
Рейтинг сообщений: 236
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1549
Откуда: Тюмень
Рейтинг сообщения: 0
Всё это делал, эффект - ноль.

Значит, что-то сделали не так, или чего-то не учли... :dont_know: И немаловажно, как напомнил akl необходимо проверить бит WDTON (таймер должен быть отключён).

Давайте проверим так ли это… залейте мой вариант прошивки (по выше изложенному алгоритму).
Вложение:
test.hex [259 байт]
Скачиваний: 98

К выводу РВ3 (2) и РВ4 (3) подключены светодиоды. Светодиод РВ3 будет переключатся (триггерный режим) по прерыванию сторожевого таймера. Светодиод РВ4 будет зажигаться при старте программы (такая конфигурация портов), а выключатся при первом пробуждении после выхода из прерывания по сторожевому таймеру. Это сделано для того, чтобы увидеть сбрасывается МК по таймеру или просто пробуждается как задумано.

Если данная прошивка будет работать как написано выше, значит ищите косяк в своём алгоритме. Если будет работать криво, значит необходимо заменить МК.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Ср янв 12, 2022 04:14:23 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
Может FUSE-бит WDTON установлен?

Кстати, что при установленном, что при сброшенном WDTON, эффект тот же, как в "железе", так и в Протеусе. :shock:

Добавлено after 13 minutes 18 seconds:
Вложение:
test.JPG [199.49 KiB]
Скачиваний: 77
Давайте проверим так ли это… залейте мой вариант прошивки (по выше изложенному алгоритму).

К выводу РВ3 (2) и РВ4 (3) подключены светодиоды. Светодиод РВ3 будет переключатся (триггерный режим) по прерыванию сторожевого таймера. Светодиод РВ4 будет зажигаться при старте программы (такая конфигурация портов), а выключатся при первом пробуждении после выхода из прерывания по сторожевому таймеру. Это сделано для того, чтобы увидеть сбрасывается МК по таймеру или просто пробуждается как задумано.

Фото картинки Протеуса, эффекта нет, как при WDTON =1, так и = 0
Вложение:
test.JPG [199.49 KiB]
Скачиваний: 77


Вы проверяли у себя в симуляторе или "железе"? Вечером могу попробовать проверить в железе, но что то сомневаюсь, что будет по другому чем в Протеусе.
Сейчас пробовал с одним диодом такой вариант, картинка как у вас на выводе.


Вложения:
sleep_test.c [1.49 KiB]
Скачиваний: 92
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Ср янв 12, 2022 08:15:54 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
Попробовал в железе нижеследующую программу. Режим POWER DOWN, интервал 1сек, ток потребления <5мкА. Переключатель светика на PB0/5 лапа.
Вложение:
SLEEP_PWD_1SEC.zip [1.09 KiB]
Скачиваний: 100

Запрограммировал WDTON. На выходе ничего при токе потребления 160мкА. Вернул обратно.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Ср янв 12, 2022 10:04:42 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
Попробовал в железе нижеследующую программу

Ваш вариант в "железе" работает :beer: , а вот в Протеусе не хочет.
Попробую этот вариант сделать на Си, так хотел внедрить этот кусок в код для игрушки. Сова у меня стоит в прихожей, при появлении человека плавно разгораются и тухнут глазки. Старенького повербанка хватает на месяц, вот и задумал во время всех временных задержек, а их достаточно, чтобы тинька засыпала. Может и аккумулятора тогда на полгода хватит :)
Вывод: В Протеусе проверять связку вачдога и слипа нельзя, врёт безбожно :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Ср янв 12, 2022 10:20:22 
Говорящий с текстолитом
Аватар пользователя

Карма: 18
Рейтинг сообщений: 236
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1549
Откуда: Тюмень
Рейтинг сообщения: 0
Вы проверяли у себя в симуляторе или "железе"?

Симуляторами не пользуюсь, так как однажды протеус "взорвал мозг"... с тех пор проверяю исключительно на железе… свою прошивку также проверил на своей девборде... замечаний не обнаружил, светодиод на РВ3 мигает как задумано. МК не перегружается от сторожевого таймера, а только просыпается как и положено.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Ср янв 12, 2022 11:19:24 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
свою прошивку также проверил на своей девборде... замечаний не обнаружил, светодиод на РВ3 мигает как задумано. МК не перегружается от сторожевого таймера, а только просыпается как и положено.

Ваш вариант в железе работает :beer:
А исходник ваш можно посмотреть?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Ср янв 12, 2022 14:31:54 
Говорящий с текстолитом
Аватар пользователя

Карма: 18
Рейтинг сообщений: 236
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1549
Откуда: Тюмень
Рейтинг сообщения: 0
А исходник ваш можно посмотреть?

Можно…
Вложение:
test.png [29.78 KiB]
Скачиваний: 91

Только он Вам ничего не скажет, так как мы пишем на разных языках. :) Всё что я сделал, описано выше простыми словами. :beer:


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Чт янв 13, 2022 09:45:35 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
Всех форумчан принявших участие в обсуждении проблемы, благодарю за дельную помощь и советы.
Проблема решена, ошибки найдены и устранены. Теперь вместо 1.5 мА в обычном режиме работы, ток МК в состоянии сна снижен до 4 мкА.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Чт янв 13, 2022 11:47:12 
Говорящий с текстолитом
Аватар пользователя

Карма: 18
Рейтинг сообщений: 236
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1549
Откуда: Тюмень
Рейтинг сообщения: 0
Вы не озвучивали проблему в экономии потребления… а так как светодиод работал во время сна, то у меня не возникло подозрений по данному поводу. :dont_know:


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопрос по SLEEP в Тиньке13
СообщениеДобавлено: Чт янв 13, 2022 12:17:08 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 38
Зарегистрирован: Вс май 21, 2006 16:07:59
Сообщений: 1230
Откуда: Алтай
Рейтинг сообщения: 0
светодиод работал во время сна

В моей схеме, с одним светодиодом, если при выключенном светодиоде потребление - 1,5мА, то при вЫключеном светодиоде и уходе на это время МК в сон - 5мкА.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: veso74 и гости: 32


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y