|
Бинарные часы - проверка заряда батарейки.
| |
| Чт, 28.09.2017, 06:35 | Сообщение # 11
|
nolpofaze
Постов: 442
Друзья |
Цитата S77 ( ) когда батарейку надо будет менять(а это надо еще как-то понять) ну есть же АЦП, пускай он и меряет.
|
|
| Пт, 29.09.2017, 00:34 | Сообщение # 12
|
S77
Постов: 18
ОК |
Короче за время курения даташитов и прочих раздумий набежало опять несколько вопросов. Чтобы мне установить CKSEL = 1001 нужно сделать так? CKSEL3 галочку CKSEL2 пусто CKSEL1 пусто CKSEL0 галочку Подразумевая что галочка 0, а ее отсутствие 1. И тогда я опираясь на разделы 13.2.3(стр.53) и 13.5(стр.56) ставлю кварц на 32,762кГц и подключаю к ноге XTAIL1 и XTAIL2 кондеры по 6pF? Я просто не понял, что такое System Osc и Timer Osc. Да и смотря на другие схемы в интернете многие ставят в пределах 12-22pF.
Теперь про сон. Мне нужно, чтобы мк просыпался по нажатию кнопки. Т.е. я вставил батарейку мк начал считать время, диоды при этом не горят. Нажал кнопку, светодиоды загорелись, прогорели 5 секунд и отключились. Мк опять ушел в сон. Я так понял, во время сна время считает асинхронный таймер(Timer2). Непонятно только на что он опирается.
Исходя из этой схемы я не совсем понял разницу между двумя зелеными прямоугольниками. Отличие Crystal Oscillator от Low-Frequency Crystal Oscillator в том, что второй специально сделан по 32,768кГц, а на первый можно вешать все, что душе угодно? Пробудить мк из спячки можно только(стр.65): Переполнением второго таймера, т.е. мк просыпается через определенные промежутки времени, что мне не подходит. Есть какая-то страшная вещь PCINT. Она как я понял во время сна и смотрит не изменилось ли состояние на ногах. И если изменилось то надо просыпаться. Портов с этим PCINT - 23. Т.е. с помощью каждого из них я могу проверять прерывания? Цитата с хабра:
Цитата Действительно щас залез в даташиты… PCINT у 48/88 на все ножки) и прерываний на них всех не одно, а 4 =) Или все же могу только 4? И как этот товарищ понял, что именно 4? Куда глядеть в даташите? В пункте 16.1(стр.84) только 3 PCINT'а указанно. INT вроде подходят потому что смотрят изменения уровня с 1 на 0 или наоборот. Но их всего два. WDT тоже не подходит ввиду того, что это тоже таймер. Не тот, что Timer2, но все же. TWI Adress Match это вообще не понятно что.
В полвторого ночи, нет сил, чтобы вникнуть. Ладно я пока спать завтра допишу, что не успел или забыл сейчас.
|
|
| Пт, 29.09.2017, 06:49 | Сообщение # 13
|
nolpofaze
Постов: 442
Друзья |
S77, В ASSR пишешь AS2 (асинхронная работа timer2) Цитата S77 ( ) кондеры по 6pF как бы вроде и не надо, кварц на Цитата S77 ( ) XTAIL1 и XTAIL2 , корпус кварца заземлить. Контроллер работает на частоте по умолчанию, но все основное время спит, втихаря щёлкая таймером 2, изредка выходя из комы чтоб добавить 1 секунду или показать время. 1)на инт вешаешь кнопку, по которой будут загораться/тухнуть светодиоды, в прерывании по INT0,INT1 обрабатываешь тык на кнопку; 2)в прерывании по переполнению таймера 2 (раз в секунду, переполнение происходит на 256 тик, предделитель таймера2 ставим 128) выполняешь счет времени. Можно как-то так, только надо следить, чтобы контроллер успевал прожевывать счет времени, между пробуждением и спячкой асинхронный таймер должен отработать несколько своих тактов и выполнить все свои дела.
|
|
| Вс, 01.10.2017, 15:58 | Сообщение # 14
|
S77
Постов: 18
ОК |
т.е. алгоритм выглядит так подаю питание спим просыпаемся каждую секунду по прерыванию таймера2 но с небольшой задержкой заснули если нажали кнопку проснулись с целью включить диоды, но на ход таймера это не влияет Просто если он просыпается по прерыванию вторго таймера, то разве не будут диоды мигать каждую секунду?
Походу придется делать проверку условия каким образом мк проснулся. Плюс ко всему, при прекращении питания сбрасывается время.
|
|
| Пн, 02.10.2017, 07:50 | Сообщение # 15
|
nolpofaze
Постов: 442
Друзья |
S77, 1) почитай про прерывания; 2) подпрограммы (функции) на каждое прерывание свои. В подпрограмме (функции) где считается время, наверное, нету смысла зажигать светодиоды. Проснулся прибавил единицу, протупил 3-4 такта, уснул. По инту, проснулся, зажег светодиоды, выждал время (1-2-3-4-5... секунд), уснул. Это если все обрабатывать в прерываниях. Да и на такое простое устройство, нет смысла городить, что-то сложное.
|
|
Внимание! Форум переехал на Tehnodium.ru
|
|