ATmega168 на 32KHZ как выставить

alexbmd
Offline
Зарегистрирован: 15.01.2016

смотрю по даташиту, есть у большинства атмег какойто секретный параметр 32Кгц тактовка и очень экономичный в этом режиме становится МК. Это наверно фьюзами его надо в этот режим загнать ?  или ак выставить такую частоту ? для автономности надо

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alexbmd пишет:

смотрю по даташиту, ....  или ак выставить такую частоту ? для автономности надо

Так в даташите же всё написано!

Только как выставите, начинайте потихоньку забывать про среду ардуино и большинство библиотек.

alexbmd
Offline
Зарегистрирован: 15.01.2016

сори пока только учусь... запутано там все написано, в целую картину пока инфа не собирается.

правильно я понял что для 32кгц надо иметь внешний кварц на эти самые 32кгц ?

а с внутреним (или обычном внешним) кварцом минимум который можно поставить только 128кгц ?

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

ЕвгенийП пишет:

Только как выставите, начинайте потихоньку забывать про среду ардуино и большинство библиотек.

с чего бы это начать забывать про среду ардуино и большинство библиотек?

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

alexbmd пишет:

сори пока только учусь... запутано там все написано, в целую картину пока инфа не собирается.

правильно я понял что для 32кгц надо иметь внешний кварц на эти самые 32кгц ?

а с внутреним (или обычном внешним) кварцом минимум который можно поставить только 128кгц ?

для понимания общей картины:

ты можешь тактировать контроллер дуино штатным образом, если есть возможность физически подключить кварц 32768Gz.

т.е. у тебя контроллер обладает пинами XTAL1 и XTAL2 для подключения кварца для тактирования ядра контроллера и пинами TOSC1 и TOSC2 для подключения кварца для тактирования таймера

если в твоём контроллере отсутвуют пины TOSC1 и TOSC2, то ты можешь подключить кварц 32768Gz к пинам XTAL1 и XTAL2, но в этом случае тебе нужно сконфигурировать фьюзы для тактирования ядра контроллера от внутреннего генератора.

теперь у тебя есть программная возможность усыплять/будить ядро контроллера по событию прерывания таймера.

т.е. это не совсем так, как ты себе представил - просто подключить кварц 32768Gz и контроллер заработает на этой частоте не получится, но можно будить и усыплять контроллер с этой частотой программно.

здесь можно почитать

http://microsin.net/programming/avr/avr134-real-time-clock-with-asynchronous-timer.html

http://microcontrollerov.net/microcontrolleri/mega/AVR134-Chasy-Realnogo...

пример скетча для Atmega8, без режима сна, но для понимания, как программно реализуется конфигурация в среде Дуино ИДЕ и что можно что-то делать по прерыванию таймера TIMER2.


volatile boolean l = 0;

void setup() {
///////////////////////////////////////////////////////////////////
cli(); // запрет прерываний глобально
TIMSK &= ~(_BV(TOIE2) | _BV(OCIE2)); // отключение прерывания Таймера 2
ASSR |= _BV(AS2); // перевод Таймера 2 в асинхронный режим тактирования от кварцевого резонатора 32768Гц
TCNT2 = 0x00; // начальная инициализация счётчика
TCCR2 = 0x05; // установка коэффициента деления 128
OCR2  = 0x00; // совпадение с частотой 1 Гц
while (ASSR & (_BV(TCN2UB) | _BV(OCR2UB) | _BV(TCR2UB))); // ждём готовности таймера
TIMSK |= _BV(TOIE2); // разрешаем прерывание от Таймера 2
sei(); // разрешаем прерывания глобально
///////////////////////////////////////////////////////////////////

pinMode(4, OUTPUT); // LED_01
digitalWrite(4, 1);

}

ISR (TIMER2_OVF_vect) {l = 1;} // обработка событий по прерыванию счётчика

void loop() {

if (l == 1) {l = 0;
digitalWrite(4, !digitalRead(4)); // индикация секунд - RTC_TIC
}

}

 

alexbmd
Offline
Зарегистрирован: 15.01.2016

щяз я конечно буду это читать все но пока хотел уточнить

без внешнего кварца на сколько минимально я могу установить скорость (такты?) ?

 

edit: прочел первую статью. доходчиво объяснили.  но пока всеже непонятно про вариант без внешнего кварца

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

alexbmd, 128kHz. Зачем вам это? Выбор этой частоты автоматически означает отказ от всех  удобных функций ардуино. Включая разумеется и бутлоадер. Помимо того нужно будет создавать новую секцию-описание для boards.txt

alexbmd
Offline
Зарегистрирован: 15.01.2016

можно и 128 но лучше 32 %)

для автономности. в первом посте написал.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

alexbmd, что вы хотите делать? Многое будет невозможно, например считать температуру с цифрового датчика, обменяться по беспроводной связи, итп.

alexbmd
Offline
Зарегистрирован: 15.01.2016

тут вы правы я еще пока до конца не вижу картину . по чуть читаю чтото понимаю. пока хочу разобраться с первым шагом - какое железо/обвязка нужна для экономии, в каких вариантах железа какую экономию получаем. и в каких режимах/тактах это железо должно работать

а вижу я это так:

60 сек спим в максимальной коме

просыпаемся проверяем датчик, если ничего нет опять спим 60 сек.

если есть - играем громко музыку максимум 3 минуты или пока не нажата кнопка.

если играла музыка то спим 1 час в максимальной коме

 

тк сами задачи у меня тоже не ахти какие. в целях экономии эти активные задачи тоже проводить с минимально возможной энергией

alexbmd
Offline
Зарегистрирован: 15.01.2016

dimax пишет:

Многое будет невозможно, например считать температуру с цифрового датчика,

а почему при 128кгц мы не сможем прочитать проводной датчик ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

alexbmd, цифровые датчики передают информацию с определённой скоростью.  Принимающее устройство должно успеть принять и обработать каждый бит до того, как придёт следующий. Поэтому скорости М.К. менее 1МГц обычно не применяются.

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

Разрабатывал метеостанцию. Большую часть времени спал с возможностью проснутся только от внешнего прерывания. Так вот этим прерыванием был импульс раз в секунду от часов реального времени ds3231. Тут же смотрел сколько времени и засыпал пока не настанет следующая минута. Просыпаясь в новой минуте опрашивал датчики, обновлял дисплей и засыпал.

Спит микроконтроллер с состоянием ног каким было назначено до сна. Так вот если подать лог 1 на ногу будильника и уснуть - будильник будет играть.

по поводу асинхронного режима. атмега 8 уже около 5 лет работает от аккумулятора 800мач от старого телефона без подзарядки,  в режиме 6 часов в сутки активного режима, остальное время живет от аккумулятора который еще ни разу не подзаряжался! Потребление 11 микроампер. Естественно все устройства, такие как ацп отключены в регистрах. Тактирование атмеги от внутреннего генератора 1Мгц. Устройство - часы.

Green
Offline
Зарегистрирован: 01.10.2015

p-a-h-a пишет:

Большую часть времени спал с возможностью проснутся только от внешнего прерывания. Так вот этим прерыванием был импульс раз в секунду от часов реального времени ds3231.

А мог бы просыпаться ещё реже - раз в 8 сек. Только акк от саморазряда не быстрее разряжается?)
Ой, некрофилию поддерживаю.(

b707
Offline
Зарегистрирован: 26.05.2017

p-a-h-a пишет:

по поводу асинхронного режима. атмега 8 уже около 5 лет работает от аккумулятора 800мач от старого телефона без подзарядки,  в режиме 6 часов в сутки активного режима, остальное время живет от аккумулятора который еще ни разу не подзаряжался! Потребление 11 микроампер.

какая-то путаница в тексте.

6 часов в сутки активного режима в течении 5 лет на АКБ 800мАч? - даташит с вами не согласен.... в таком режиме этой батарейки не хватит и на полгода...

Или в активном режиме от розетки. а на акамуляторе только спит?

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

Да, вы правильно догадались. От розетки 5 часов, остальное время в просоньях считает секунды. Часы с резервным питанием в общем.

Green
Offline
Зарегистрирован: 01.10.2015

Я уже который раз не могу не восхищаться от творения импортных конструкторов. На велосипедике стояло 2 датчика - скорости и каденса. Датчики неразборные. Хватило лет на 4-5. Но, после разборки в них обнаружилась 1632 всего лишь.! И это всё при активной эксплуатации. А вы говорите 800 ма/ч!