реклама на сайте
подробности

 
 
> Atmega 16 (Bascom) Тормозят часы, Замедленная работа часов
Stasevuch
сообщение Dec 25 2007, 22:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



Казалось бы ни чем особо не примечательная программа - вывод текущего времени на LCD. Но вот незадача - часы идут но крайне медленно ( с 10-12 секундным запазданием). Естественно , при изменениях значения тактовой кварца отставание так же меняется - но это не выход. На симуляции в Proteus - всё Ок (естественно)! Часовой кварц отсутсвует в схеме. Где копать -то ?!

$regfile = "m16def.dat"
$crystal = 4000000
Enable Interrupts
Config Clock = Soft

Clock:

Locate 1 , 1
Lcd Time$

Goto Clock


Сообщение отредактировал Stasevuch - Dec 25 2007, 22:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 13)
haker_fox
сообщение Dec 26 2007, 00:35
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Stasevuch @ Dec 26 2007, 06:55) *
Часовой кварц отсутсвует в схеме. Где копать -то ?!

Собственно Вы уже ответили на свой вопрос. Какая же может быть точность без часового кварца? Тут и с часовым кварцом порой некоторые неточности наблюдаются, а без него вообще о стабильности говорить не стоит.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
bzx
сообщение Dec 26 2007, 06:33
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Часовой, не часовой,... главное брать резонатор с высокой точностью. А то, что считается, что точность часового кварца выше - дак это стереотип.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
Stasevuch
сообщение Dec 26 2007, 06:48
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



На форуме есть тема об отставании на 4 секунды в сутки (вполне можно говорить о точности кварца).
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Dec 28 2007, 11:16
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



У меня подобная ситуация возникала, когда я ошибся с регистром переполнения таймера (OCRn). В даташите приведена формула для опрделения частоты вызова прерываний таймера при использовании режима CTC:


где
- частота прерываний
- частота кварца
- величина прескаллера таймера. Может равняться (для ATmega16) 1, 8, 64, 256 или 1024
(Формула получена умножением на два формулы для вычисления частоты генерации сигнала, представленной в документации. Для контроллера ATmega16, документация doc2466, стр. 77)

Нужно использовать именно CTC режим - тогда удается довольно тонко подобрать делители частоты кварца. У меня обработка секундного интервала (при чтстоте кварца 16МГц) выглядит так:

Инициализация:
Код
TCCR0 = (1 << WGM01)|(1 << CS02); // CTC режим, преаскаллер 256
TCNT0 = 0;
OCR0 = 249;
    
TIMSK = (1 << OCIE0); // Включаем прерывание по сравнению


В результате, прерывание будет вызываться 250 раз в секунду. Обработка прерывания выглядит так:
Код
uint8_t t = 0, timer_flag = 0;
SIGNAL (SIG_OUTPUT_COMPARE0)
{
    ++t
    if (t == 250)
    {
        t = 0;

       // Этот флаг используется, как событие секундного таймера
        timer_flag = 1;
    }
  
}


В вашем случае (для частоты 4 МГц) нужно задать прескаллер таймера равным 64:
Код
TCCR0 = (1 << WGM01)|(1 << CS01)|(1 << CS00);

Замечу, что это не единственный и не лучший способ добиться секундного интервала на частоте 4МГц. В общем случае, делать такие настройки, чтобы вызовы прерываний таймера проиходили как можно реже. Для этого стоит прескаллер устанавливать в максимально возможное значение и далее подбирать границу переполнения, так чтобы частота делилась нацело.
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 28 2007, 11:38
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



По приведенному коду получается, что в bascom есть некий "черный ящик" - Time$. Ну, а разбираться почему этот черный ящик работает не так как хотелось бы - дело неблагодарное.

Автору - напишите часы самостоятельно, следуя советам из комента #5.
Go to the top of the page
 
+Quote Post
Stasevuch
сообщение Dec 28 2007, 20:07
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



Автор растяпаangry.gif ! Часовой кварц на специально для него предназначеных выводах микроконтроллера решил вопрос на раз - тему можно считать закрытой. Как оказалось - тамера Atmeg-и работают с кварцем задающего генератора , а функция Time и проистекающие от неё (Day,Week...) звызаны с часовым кварцем. Ну по крайней мере такова особенность Bascom.

Сообщение отредактировал Stasevuch - Dec 28 2007, 20:08
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Dec 29 2007, 19:59
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(Stasevuch @ Dec 28 2007, 23:07) *
Как оказалось - тамера Atmeg-и работают с кварцем задающего генератора , а функция Time и проистекающие от неё (Day,Week...) звызаны с часовым кварцем. Ну по крайней мере такова особенность Bascom.

С часовым кварцем работает таймер №2. На него похоже и завязаны фукнции Time, Day. Все-таки настоятельно рекомендую программировать часики вручную - меньше шансов наступить на грабли.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 29 2007, 20:14
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Aesthete Animus @ Dec 29 2007, 21:59) *
рекомендую программировать часики вручную...

Забываетесь это-же Basic - за что "боролись", понимаешь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Dec 29 2007, 20:26
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(zltigo @ Dec 29 2007, 23:14) *
Забываетесь это-же Basic - за что "боролись", понимаешь.

Я когда-то боролся за Basic? Да боже упаси... wink.gif

Сообщение отредактировал Aesthete Animus - Dec 29 2007, 20:26
Go to the top of the page
 
+Quote Post
Stasevuch
сообщение Dec 30 2007, 17:21
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



С учётом сжатых сроков выделенных на разработку ,отсутсвием предварительного опыта работы микроконтроллерами и их переферией , учить С было некогда. Так что школьный курс бейсика пришелся очень кстати.

Сообщение отредактировал Stasevuch - Dec 30 2007, 17:30
Go to the top of the page
 
+Quote Post
radan
сообщение Dec 30 2007, 17:40
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Пользователь №: 21 955



Исходниками не поделитесь? Не для себя прошу - для нашего форума по Баскому http://bascomavr.3bb.ru/.
Go to the top of the page
 
+Quote Post
Stasevuch
сообщение Dec 31 2007, 14:05
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



Цитата(radan @ Dec 30 2007, 20:40) *
Исходниками не поделитесь? Не для себя прошу - для нашего форума по Баскому http://bascomavr.3bb.ru/.


Вобщем то проект довольно специфичен. Atmega 16 + LCD 2*16 + AD420 . Всё сводится к формированию тока в пределах 4-20 ма по заданному закону. Так сказать больше промышленная ориентация проекта , нежели бытовая .Если он в действительности может быть полезен для пополнения коллекции Вашего сайта - то пожалуйста.
Go to the top of the page
 
+Quote Post
radan
сообщение Dec 31 2007, 15:39
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Пользователь №: 21 955



Информации много не бывает. На форуме http://bascomavr.3bb.ru/ мы стараемся собрать воедино разрозненную информацию по Баскому. Кое что есть и на http://ledeffects.net/pages/?id=12.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016