большое спасибо. с английским у меня туго. напрячь мозг, и понять небольшой кусок даташита еще могу, а вот в сотне листов непонятной тарабарщины найти нужные тебе строки трудно......
значит, если я правильно понял, при использовании Т2 в качестве часов реального времени, и при присоединении кварца к ТОSC1,2 внутренние конденсаторы на 36 пик подключаются автоматически???
я сейчас попробовал без внешних конденсаторов - все продолжает тикать. посмотрю что будет с точностью хода. Единственно смущает, почему у меня до отпайки внешних конденсаторов часы спешили на 2 минуты в сутки, ведь по идее должны были отставать, т.к. емкость была больше номинальной (36пф встроенных + 18пф внешних). короче понаблюдаю что будет.
еще вопрос по усыплению и пробуждению контроллера. я делаю так. Есть прерывание обслуживающее динамическую индикацию. частота 488гц. внутри этого прерывания слушаю один из пинов. Как только на этом пине сигнал о пропаже питания, сразу разрешаю усыплять контроллер по команде SLEEP.
Код: Выделить всё
if (PINB.4==0) { // если пропало напряжние
MCUCR=0b01110000; // разрешаем усыплять контроллер по команде SLEEP
PORTA=0; PORTB=0; DDRB=0b01101111; PORTC=0; PORTD=0; // перевожу порты в состояние наменьшего потребления
TCCR0=0x00; // останавливает Т/С0
GICR&=0xdf; // запрещаем прерывание от нажатия кнопок
GIFR=0x20; // сбрасываеи флаг внешнего прерывания, предотвращая случайное срабатывание кнопок при засыпании/просыпании
}
дальше, в основном цикле есть строчка
Код: Выделить всё
while (MCUCR == 0b01110000) // если работаем от батареи, то сидим здесь и не вылазим - усыпляем контроллер
{
#asm("sleep")
if (PINB.4==1) // если напряжение появилось
{
MCUCR=0b00110000; // запрещаем усыплять контроллер по команде SLEEP
TCCR0=0x03; // запускаем Т/С0
PORTB=0x04; DDRB=0x6B; // возвращаем конфигурацию порта В в рабочее состояние
}
}
и пока на PINB.4 не появится сигнал о появлении напряжения питания, сижу в этом цикле безвылазно.
а как это делали вы в своих часах. ваши исходники смотрел, но разобраться в чужом коде дело не легкое.......... Или у меня все нормально получилось, и ничего менять не нужно??