Помогите с асинхронным таймером на AtMega8a
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
4 лишних символа не так уж и много, темболее проблем с этим куском у меня нет, мне бы часики точные получить)
- Реклама
Думаю, чтобы улучшить точность хода ваших часов, необходимо изменить разводку платы. Особое внимание нужно уделить часовому кварцу- дорожки от контролёра к нему должны быть минимально возможной длины, под кварцевым резонатором необходимо предусмотреть полигон который соединяется с минусом питания в одной точке. Сам кварцевый резонатор необходимо припаять к полигону на котором он будет находиться. И конечно же не стоит выход контролёра ( динамическая индикация.) располагать в паре миллиметров от дорожки кварцевого резонатора. Воспользуйтесь переназначением выхода контролёра на другой его "пин". Плата на фото выглядит чистой, но спрошу: - Как и чем её мыли после пайки? Недоотмытый флюс под контролёром и между выводов резонатора может доставить много неприятностей. Визуально - невидим, но его тонкая плёнка вносит существенную коррекцию в работу устройства( это- из личного опыта.)
Посмотрев на печатную плату можно увидеть, что можно контролёр повернуть на 45 град. по часовой стрелке, при этом дорожки к кварцевому резонатору станут гораздо короче, минус питания проходит вдоль него и припаять корпус к минусу- дело 1 минуты.
PS
Пожалуй, я бы сделал минусовую шину- пошире, примерно как на фото ниже, корявенько нарисовано но смысл понятен, и кнопки убрать подальше от резонатора.
Посмотрев на печатную плату можно увидеть, что можно контролёр повернуть на 45 град. по часовой стрелке, при этом дорожки к кварцевому резонатору станут гораздо короче, минус питания проходит вдоль него и припаять корпус к минусу- дело 1 минуты.
PS
Пожалуй, я бы сделал минусовую шину- пошире, примерно как на фото ниже, корявенько нарисовано но смысл понятен, и кнопки убрать подальше от резонатора.
- Вложения
-
- 1ie5cs5fsy_1.jpg
- (63.29 КБ) 262 скачивания
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
Отмывал изопропиловым спиртом, особенно уделял внимание дорожкам кварца, корпус уже подтянул к земле, скобой из жесткой медной проволки. Мне кажеться он спешит довольно равномерно, потому попытаюсь ввести корректировку времени (пока по расчетам нужно отнимать еденицу из счётчика 2, каждые 980 тиков, если я все правильно посчитал, можно к примеру ввести отдельную переменную которая будет за это отвечать)
Вам огромное спасибо за помощь и + к карме, без вашей помощи, я бы не справился)
Добавлено after 7 hours 58 minutes 56 seconds:
Появился еще один вопрос, я могу паралельно прерыванию по совпадению с 127, сделать прерывания по совпадению с 63?
Я посчитал, и по идеии для корректировки нужно отнимать единицу из второго счётчика каждые 7,5 секунд, и вот мне надо получить эти пол секунды. Ну либо второй вариант, по очереди отнимать единицу через 7 и через 8 секунд. Что посоветуете?
Вам огромное спасибо за помощь и + к карме, без вашей помощи, я бы не справился)
Добавлено after 7 hours 58 minutes 56 seconds:
Появился еще один вопрос, я могу паралельно прерыванию по совпадению с 127, сделать прерывания по совпадению с 63?
Я посчитал, и по идеии для корректировки нужно отнимать единицу из второго счётчика каждые 7,5 секунд, и вот мне надо получить эти пол секунды. Ну либо второй вариант, по очереди отнимать единицу через 7 и через 8 секунд. Что посоветуете?
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
То что на коленке написал за пару минут (каждые 15 секунд, отнимаю по два из второго счетчика) помоголо, за 9 часов, ушло на 3 секунды
осталось еще немного пошаманить, и думаю все будет довольно точно
осталось еще немного пошаманить, и думаю все будет довольно точно
- Сообщения: 593
- Зарегистрирован: Ср янв 06, 2010 10:01:46
Частота, на которой должен работать ХОРОШИЙ часовой кварц, выбрана кратной степеням двойки. Поэтому, при наличии в схеме такого кварца и грамотно написанной программы, коррекция хода потребуется минимальная. Т.е. верная программа делит точно до секунды, и остается только точность кварца/конденсаторы/монтаж. Я собрал около десятка часов/таймеров, и максимальный уход у меня был около 4 секунд за 10 дней.Jack-Sidr писал(а):Что посоветуете?
Я бы рекомендовал:
1. попробовать настроить таймер, как я советовал выше по теме.
2. если результаты не улучшатся, поменять кварц.
3. попробовать поиграться с конденсаторами и фьюзом CKOPT
4. если ничего не помогло, и плата чистая, тогда я не знаю
- Реклама
это самое правильно решение.metan писал(а):3. попробовать поиграться с конденсаторами и фьюзом CKOPT
в узком диапазоне можно изменять частоту конденсаторами.
1. отключить внутренние конденсаторы.
2. изменением внешних конденсаторов подбирать частоту по минимальной погрешности.
и необязательно менять емкость одновременно обоих конденсаторов. гораздо точнее подгонка частоты будет подбором одного конденсатора.
3. но может случиться такое, что даже при маленькой емкости параллельных конденсаторов, частота будет ниже требуемой (ниже 32768).
тогда ставим конденсатор последовательно с кварцем - это позволит повысить частоту. и дальше возвращаемся к пункту 2 - подгонять частоту параллельными конденсаторами.
но последовательный конденсатор должен иметь уже не маленькую емкость (может, сотни-тысячи пик), чтобы не сильно снизить эквивалентную емкость кварца.
есть еще и способ 4. для снижения частоты параллельно кварцу поставить маленькую емкость для увеличения эквивалентной емкости кварца.
например, в советских наручных часах "Электроника" стоял крошечный подстроечный конденсатор для регулировки точности хода часов.
то есть, не придумывать "костыли" с вычитанием или прибавлением единички с некоторой периодичностью, а поиграть настройкой частоты.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Зачем трахаться с конденсаторами, когда все решается на программном уровне.
Вот у стартера часы убежали за 8,5 часов на 30 секунд, т.е. за 30'600 насчитали 30'630 секунд.
30'630/30'600*32768Гц~32'800Гц. Что без внешних конденсаторов вполне логичная величина, которая забивается в OCR1A=32800-1 таймера Т1. Таймер переводится в режим CTC. Организуется счетчик секунд на 59, после отсчета которым в последнюю 60-ю секунду заносится число, представляющее разность между минутным интервалом и периодом 59 секунд. Вот длительностью последней секунды можно программно корректировать минутный интервал и получить примерно такое

Вот у стартера часы убежали за 8,5 часов на 30 секунд, т.е. за 30'600 насчитали 30'630 секунд.
30'630/30'600*32768Гц~32'800Гц. Что без внешних конденсаторов вполне логичная величина, которая забивается в OCR1A=32800-1 таймера Т1. Таймер переводится в режим CTC. Организуется счетчик секунд на 59, после отсчета которым в последнюю 60-ю секунду заносится число, представляющее разность между минутным интервалом и периодом 59 секунд. Вот длительностью последней секунды можно программно корректировать минутный интервал и получить примерно такое
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
Тоже не вижу смысла с конденсоторами играться, главное что частота не плавает, а значит можно настроить программно, я уже уменьшил убегание с 31 секунды до 3 секунд, немного настрою корректировку, и выйду на нормальную частоту, темболее так хоть математически можно посчитать корректировку, а не по воле случая тыкать конденстары и пытаться поймать частоту.
akl, а каким образом ты в 8-битный асинхронный таймер запишешь 32800?
у ТС же используется 8-битный таймер с внешним кварцем на 32768...
у ТС же используется 8-битный таймер с внешним кварцем на 32768...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
Лично я решил отнимать тики с второго счётчика, через определенные интервалы
Starichok51 У mega8 имеется 16-разрядный таймер Т1 и возможность работы от Low-Frequency Crystal Oscillator 32'768Гц. Не нужно заморачиваться с предделителями и ограничивать возможность подключения встроенных конденсаторов FUSE-битом CKOPT. Это просто рабочий вариант.
про существование Таймера1 я знаю.
остается только объяснить это топикстартеру, чтобы он отказался от Таймера2, и не мучился с "изобретением" этой убогой коррекции времени...
остается только объяснить это топикстартеру, чтобы он отказался от Таймера2, и не мучился с "изобретением" этой убогой коррекции времени...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Сообщения: 593
- Зарегистрирован: Ср янв 06, 2010 10:01:46
Я тоже не вижу, если программа и кварц нормальные, понадобится только МИНИМАЛЬНАЯ коррекция (никак не секунды в час)Jack-Sidr писал(а):Тоже не вижу смысла с конденсоторами играться
См. мою первую рекомендацию. Сделайте для начала деление частоты кварца ровно на 32768.
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Вообще то нет.akl писал(а):Starichok51 У mega8 имеется 16-разрядный таймер Т1 и возможность работы от Low-Frequency Crystal Oscillator 32'768Гц. Не нужно заморачиваться с предделителями и ограничивать возможность подключения встроенных конденсаторов FUSE-битом CKOPT. Это просто рабочий вариант.
Только таймер T2 позволяет тактировать от кварца 32'768, сохранив тактирование основного ядра от внутреннего RC-генератора 8МГц.
Если Т1 вы будете тактировать от кварца 32'768 то и основное ядро будет также тактироваться от 32'768.
К примеру UART от 32'768 работает кое как на скорости 110 бит/сек,
тогда как от RC-1МГц - кое как 9600 бит/сек,
от RC-8МГц - 19200 бит/сек и более.
Смотря для чего ему надо, может и 32'768 достаточно будет.
пожалуй, для этих часов не нужен UART. да и процессору в часах мизерный объем работы.
так что вполне можно запустить Таймер1 от кварца 32768 Гц.
так что вполне можно запустить Таймер1 от кварца 32768 Гц.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
Таймер1 не вариант, поскольку хочу реализовать бесперебойное питание, что-бы при пропадании внешнего питания, кидало мк в сон, а таймер продолжал тикать от батарейки.
Добавлено after 9 minutes 44 seconds:
[uquote="metan",url="/forum/viewtopic.php?p=3314506#p3314506"]1. попробовать настроить таймер, как я советовал выше по теме.[/uquote]
Проблема в том, что если я копирую без изменений, WinAvr просто отказывается компилировать
Если заменяю
на
Компилируется, но таймер не запускается совсем, могли бы вы скопировать мой код, скомпилировать в CVAvr и скинуть hex?
Если не трудно.
Добавлено after 9 minutes 44 seconds:
[uquote="metan",url="/forum/viewtopic.php?p=3314506#p3314506"]1. попробовать настроить таймер, как я советовал выше по теме.[/uquote]
Проблема в том, что если я копирую без изменений, WinAvr просто отказывается компилировать
Код: Выделить всё
main.c:80: error: 'TIM2_OVF' undeclared here (not in a function)
main.c:80: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
Код: Выделить всё
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
Код: Выделить всё
ISR(TIMER2_OVF_vect)
Если не трудно.
По поводу питания: ток потребляемый МК прямо пропорционален частоте, и, если правильно настроить режим сна, потребленная энергия зависит только от напряжения питания и от количества выполненных команд (а от частоты не зависит).
поэтому, если часового кварца хватит для тактирования АЛУ (по его производительности) то даже лучше тактировать им, т.к. увеличивается стабильность работы на пониженном напряжении питания при тойже (или даже меньшей из за меньшего Uпит) мощности (есть проект, и я недавно на него ссылку выкладывал, где тинька13 от 1,5в работает, правда т.к. сама кварц не умеет - использует внешний генератор на часовом кварце).
поэтому, если часового кварца хватит для тактирования АЛУ (по его производительности) то даже лучше тактировать им, т.к. увеличивается стабильность работы на пониженном напряжении питания при тойже (или даже меньшей из за меньшего Uпит) мощности (есть проект, и я недавно на него ссылку выкладывал, где тинька13 от 1,5в работает, правда т.к. сама кварц не умеет - использует внешний генератор на часовом кварце).
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 91
- Зарегистрирован: Сб фев 17, 2018 00:08:56
Спасибо, буду пробовать, утром отпишусь про результат.


