Страница 1 из 2
Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 18:18:14
Pika4u
Практики ради начал делать часы на Тини2313 и писать прошу. Прошивка написана, но даже в протеусе с внешним 8МГц кварцем врет. За 10 минут отстали на 2 секунды. Часы тикают по прерыванию 0 таймера. Делитель таймера=256. Во всех функциях прерывания разрешены. Вывод на ЛСД. Что не так-то? Вот код, связанный с прерыванием:
Код: Выделить всё
void main(void)
{
asm("sei");
TCNT0=0;
OCR0A=250;
TCCR0B|=(1<<CS02);
TCCR0B&=~((1<<CS01)|(1<<CS00));
TIMSK=1;
}
#pragma vector=TIMER0_COMPA_vect
__interrupt void Timercomp(void)
{
TCNT0=0;
takt++;
if(takt==125)
{
takt=0;
second++;
}
if(second==60)
{
second=0;
minute++;
}
if(minute==60)
{
minute=0;
hours++;
}
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 18:59:13
Дрон
Что в Протезе врёт,то это ещё ни о чём не говорит,т.к. Протез симулирует не в реальном времени.В железе тоже врёт?Можно немного поигратса с кондёрами заземляющими кварц.Я всегда старась запускать на максимально возможно частоте,для большей точности временных интервалов.
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:08:24
Pika4u
Я просто нажимал Pause и сверял показания на часах Протеуса и схеме

В железе проверял только работоспособность, точность проверю позже-детали завтра придут.
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:27:47
phanis
TCCR0A = (1<<WGM01);//Clear Timer on Compare Match (CTC) mode, автоматом будет TCNT0=0; при достижении TCNT0=OCR0A=250
#pragma vector=TIMER0_COMPA_vect
__interrupt void Timercomp(void)
{
TCNT0=0;// можно будет удалить.
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:32:08
Pika4u
Хм, спасибо за совет. Ща погоняю в Протеусе. А остальные настройки(TCCR0B) надо убирать?
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:33:06
Pika4u
Сам же и отвечу. Не надо.

Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:36:57
Дрон
Ждём испытаний в железе.Я однажды в часы на на пик16ф628 вписал термометр и календарь. В пихнул всё это в Протез запустил и ужаснулся что они отстают от системных. До дописывания термометра и календаря они не отставали,временные интервалы я не менял. Собрал в железе и заметил что они идут точно. Появилась гипотеза,что чем больше кода Протез 'жуёт' тем сильнее тормозит.Допишите туда ещё чегонибуть и отставать будет сильнее.

Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:38:19
Pika4u
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:40:50
phanis
Код: Выделить всё
TCCR0B|=(1<<CS02);
TCCR0B&=~((1<<CS01)|(1<<CS00));
TCCR0B=(1<<CS02); //можно просто так
TIMSK =(1<<OCIE0A); //Timer/Counter0 Output Compare Match A Interrupt Enable
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:44:26
Pika4u
Да ведь TIMSK так и выставлен(раз прерывание работает).
Вот что у меня. А насколько мне известно, OCIE0A-это и есть 1-ый бит TIMSK.
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:47:55
phanis
Не увидел в первом посте..
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 19:49:20
Pika4u
Добавил. у кого есть ещё идеи по поводу отставания?
Re: Часы на ATTiny2313.
Добавлено: Вс апр 15, 2012 20:34:46
phanis
нужно выставить OCR0A=249;//с 0.. по 250 получается 251 значений
Re: Часы на ATTiny2313.
Добавлено: Пн апр 16, 2012 14:38:59
Pika4u
Хм...Спасибо! Помогло! За 37 минут ни на секунду не отстали!
Re: Часы на ATTiny2313.
Добавлено: Пт май 18, 2012 19:52:17
Cricket2107
Мяу уважаемые коты! Подскажите плиз такой вопрос: Делаю сейчас часы на тиньке 2313
http://habrahabr.ru/post/38443/ . Побродив по инету обратил внимание на то, что везде в часах на тиньке 2313 стоит обычный кварц, а можно ли поставить именно часовой? Хочу сделать точные часы, а не +/- хз сколько.
Re: Часы на ATTiny2313.
Добавлено: Пт май 18, 2012 20:42:34
ILYAUL
Cricket2107 писал(а):Мяу уважаемые коты! Подскажите плиз такой вопрос: Делаю сейчас часы на тиньке 2313
http://habrahabr.ru/post/38443/ . Побродив по инету обратил внимание на то, что везде в часах на тиньке 2313 стоит обычный кварц, а можно ли поставить именно часовой? Хочу сделать точные часы, а не +/- хз сколько.
Можно , почему же нельзя . Есть такой генератор у MAXIM DS32KHZ с точностью от +/- 1 сек/год или +/-0.5 сек/год там разберётесь почему . Подаете частоту на вход T1 выбранного Вами таймера и вперёд - пишите прогу. Кстати основной кварц при этом обязан быть на своём месте , не обязательно тот что в ссылке, но быть должен.
Re: Часы на ATTiny2313.
Добавлено: Пт май 18, 2012 20:44:15
Nickolai
Cricket2107 писал(а): Побродив по инету обратил внимание на то, что везде в часах на тиньке 2313 стоит обычный кварц, а можно ли поставить именно часовой? Хочу сделать точные часы, а не +/- хз сколько.

вот такие
http://ryaskin65.narod.ru/Project03/Project03.html
В устройстве использованы часы реального времени DS1307N
Датчика температуры DS18B20 я не подключал, поэтому показывают только время.
Работают точно.
Re: Часы на ATTiny2313.
Добавлено: Пт май 18, 2012 20:49:13
Cricket2107
Понятно для начала попробую запустить на обычном на 8 МГц, если точность хода будет отстой переделаю с этим генератором.
Re: Часы на ATTiny2313.
Добавлено: Пт май 18, 2012 20:53:16
_Alex
Введите програмную корректировку времени, есть часы реального времени со встроенным термокомпенсированным кварцевым резонатором DS3231.
Всеравно, рано или позно отключат питания и время сбросится, а с микросхемой часов на батарейке, будет работать.
Re: Часы на ATTiny2313.
Добавлено: Вс май 20, 2012 20:47:19
watchmaker
Насчет кварца. Он у тебя 8.000.000 или 8.388.608? Со вторым значительно удобнее.