Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

Часы на ATTiny2313.

Вс апр 15, 2012 18:18:14

Практики ради начал делать часы на Тини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++;
}
Последний раз редактировалось Pika4u Вс апр 15, 2012 19:48:51, всего редактировалось 1 раз.

Re: Часы на ATTiny2313.

Вс апр 15, 2012 18:59:13

Что в Протезе врёт,то это ещё ни о чём не говорит,т.к. Протез симулирует не в реальном времени.В железе тоже врёт?Можно немного поигратса с кондёрами заземляющими кварц.Я всегда старась запускать на максимально возможно частоте,для большей точности временных интервалов.

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:08:24

Я просто нажимал Pause и сверял показания на часах Протеуса и схеме :)) В железе проверял только работоспособность, точность проверю позже-детали завтра придут.

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:27:47

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

Хм, спасибо за совет. Ща погоняю в Протеусе. А остальные настройки(TCCR0B) надо убирать?

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:33:06

Сам же и отвечу. Не надо. :)))

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:36:57

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

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:38:19

:))) :))) Я сравниваю с часами Протеуса, а не системными. :))) Хм..с кодом выше отставание такое же. За 3 минуты-отстали на пару секунд. :)))

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:40:50

Код:
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

Да ведь TIMSK так и выставлен(раз прерывание работает).
Код:
TIMSK=1;
Вот что у меня. А насколько мне известно, OCIE0A-это и есть 1-ый бит TIMSK.

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:47:55

Не увидел в первом посте..

Re: Часы на ATTiny2313.

Вс апр 15, 2012 19:49:20

Добавил. у кого есть ещё идеи по поводу отставания?

Re: Часы на ATTiny2313.

Вс апр 15, 2012 20:34:46

нужно выставить OCR0A=249;//с 0.. по 250 получается 251 значений

Re: Часы на ATTiny2313.

Пн апр 16, 2012 14:38:59

Хм...Спасибо! Помогло! За 37 минут ни на секунду не отстали!

Re: Часы на ATTiny2313.

Пт май 18, 2012 19:52:17

Мяу уважаемые коты! Подскажите плиз такой вопрос: Делаю сейчас часы на тиньке 2313 http://habrahabr.ru/post/38443/ . Побродив по инету обратил внимание на то, что везде в часах на тиньке 2313 стоит обычный кварц, а можно ли поставить именно часовой? Хочу сделать точные часы, а не +/- хз сколько.

Re: Часы на ATTiny2313.

Пт май 18, 2012 20:42:34

Cricket2107 писал(а):Мяу уважаемые коты! Подскажите плиз такой вопрос: Делаю сейчас часы на тиньке 2313 http://habrahabr.ru/post/38443/ . Побродив по инету обратил внимание на то, что везде в часах на тиньке 2313 стоит обычный кварц, а можно ли поставить именно часовой? Хочу сделать точные часы, а не +/- хз сколько.

Можно , почему же нельзя . Есть такой генератор у MAXIM DS32KHZ с точностью от +/- 1 сек/год или +/-0.5 сек/год там разберётесь почему . Подаете частоту на вход T1 выбранного Вами таймера и вперёд - пишите прогу. Кстати основной кварц при этом обязан быть на своём месте , не обязательно тот что в ссылке, но быть должен.

Re: Часы на ATTiny2313.

Пт май 18, 2012 20:44:15

Cricket2107 писал(а): Побродив по инету обратил внимание на то, что везде в часах на тиньке 2313 стоит обычный кварц, а можно ли поставить именно часовой? Хочу сделать точные часы, а не +/- хз сколько.


:solder: вот такие http://ryaskin65.narod.ru/Project03/Project03.html
В устройстве использованы часы реального времени DS1307N
Датчика температуры DS18B20 я не подключал, поэтому показывают только время.
Работают точно.

Re: Часы на ATTiny2313.

Пт май 18, 2012 20:49:13

Понятно для начала попробую запустить на обычном на 8 МГц, если точность хода будет отстой переделаю с этим генератором.
Последний раз редактировалось Cricket2107 Пт май 18, 2012 20:54:09, всего редактировалось 1 раз.

Re: Часы на ATTiny2313.

Пт май 18, 2012 20:53:16

Введите програмную корректировку времени, есть часы реального времени со встроенным термокомпенсированным кварцевым резонатором DS3231.
Всеравно, рано или позно отключат питания и время сбросится, а с микросхемой часов на батарейке, будет работать.
Вложения
DS3231.pdf
(373.12 KiB) Скачиваний: 656

Re: Часы на ATTiny2313.

Вс май 20, 2012 20:47:19

Насчет кварца. Он у тебя 8.000.000 или 8.388.608? Со вторым значительно удобнее.
Тема закрыта