Страница 1 из 1
часовой кварц и atmega8
Добавлено: Пн янв 05, 2015 15:23:30
electronic1
Всем привет. Начал изучать мк. Хочу сделать часы-таймер с нуля.
Делал часы на кварце 8МГц , но они начали отставать... Хочу сделать на часовом кварце 32768 Гц.
Не могу настроить работу с таким кварцем. Протеус молчит, хотя с 8 МГц кварцем все работало и часы шли.
Код настройки кварца для таймера Т2 мк atmega8
Код: Выделить всё
//настраиваем таймер T2
cli();
TIMSK &= ~((1<<OCIE2)|(1<<TOIE2));
ASSR = (1<<AS2);
TCNT2 = 0;
TCCR2 |= (1<<CS22) | (1<<CS20);
while(ASSR & 0x1F);
TIFR |= ((1<<OCF2) |(1<<TOV2));
TIMSK |= (1<<TOIE2);
sei();
Ну и считаем импульсы в прерывании:
Руководствовался этой статьей
http://www.getchip.net/posts/052-kak-za ... -32768-gc/ и даташитом на атмега8..
Помогите.. что не так?
Re: часовой кварц и atmega8
Добавлено: Пн янв 05, 2015 16:10:46
eess9
а зачем вы смотрите 4-й бит? Он же зарезервирован, возможно в этом проблема. Попробуйте так:
Re: часовой кварц и atmega8
Добавлено: Вт янв 06, 2015 09:07:58
eess9
Да еще не доглядел. А что вы за прерывание используете? Зачем вам от регистра сравнения?
Re: часовой кварц и atmega8
Добавлено: Вт янв 06, 2015 09:40:00
electronic1
У меня стоит по совпадению, так было с 8 МГц кварцем.
Сейчас так, но не работает:
прерывание по переполнению
настройки таймера:
Код: Выделить всё
cli();
TIMSK &= ~((1<<OCIE2)|(1<<TOIE2));
ASSR = (1<<AS2);
TCNT2 = 0;
OCR2 = 32768;
TCCR2 |= (1<<CS22) | (1<<CS20);
while(ASSR & 0x0F);
TIFR |= ((1<<OCF2) |(1<<TOV2));
TIMSK |= (1<<TOIE2 | 1<<OCIE2);
sei();
А может протуес гнать? Настройки поставил на часовой кварц.

Re: часовой кварц и atmega8
Добавлено: Вт янв 06, 2015 10:04:23
eess9
Работает в протеусе
Re: часовой кварц и atmega8
Добавлено: Вт янв 06, 2015 10:25:48
electronic1
eess9 писал(а):Работает
Благодарю за помощь!
Re: часовой кварц и atmega8
Добавлено: Вт янв 06, 2015 10:29:04
eess9
Всегда пожалуйста
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 09:30:59
electronic1
Собрал в железе. Поставил кварц 32768Гц. Прошил фьюзы. atmega8 определяется и читается, значит фьюзы прошиты правильно.. Заливаю прошивку мигания диодом в прерывании как у eess9, то есть его программу, и не работает. Пишу программу что бы мигала без прерывания, светодиод мигает.
В чем может быть проблема?
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 10:59:58
eess9
Вы уверены, что часовой кварц припаян к выводам PB6, PB7? Прозвоните что есть электрический контакт. Замените кварц, может битый.
А в какие значения фьюзы установили?
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 11:13:07
electronic1
eess9 писал(а):Вы уверены, что часовой кварц припаян к выводам PB6, PB7?
А в какие значения фьюзы установили?
Пробовал с двумя кварцами. Если кварц убираю то мк не определяется программатором, ставлю обратно - все нормально. То есть контакт есть.
Фьюзы поставил такие:
CKSELL3..00 - 1001
SUT0 -1
SUT1 -0
Остальное не трогал..
Через ногодрыг мигалка работает, убираю кварц перестает.
А вот спрерываниями от таймера нет..
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 11:30:07
oleg110592
включите тактирование МК от внутреннего генератора, таймер 2 будет работать от часового кварца
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 11:47:55
electronic1
Благодарю! Я пол дня мучал код и где что накосячил. В даташите не написано про это...
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 12:29:37
eess9
А фьюзы посмотреть в проекте протеуса? Поскольку у Atmega8 обычный и часовой кварцы цепляются на одни и те же линии (взаимоисключающие), то для меня само собой разумеющееся, что МК работает от внутреннего осциллятора когда таймер 2 используется асинхронно.
Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 12:36:28
Dr. Alex
Вообще для работы с таким кварцем 32768кГц, надо включить таймер в Ассинхронном режиме! И кварц вешать на ноги TOSC2, TOSC1!

Re: часовой кварц и atmega8
Добавлено: Чт янв 08, 2015 13:04:26
oleg110592
а мега16 то причем, у автора сообщения МК мега8 и таймер работает в асинхронном режиме и кварц тоже "повешен" на TOSC2 TOSC1
Re: часовой кварц и atmega8
Добавлено: Вс янв 11, 2015 13:07:01
Alkul
А зачем, простите, для разработки часов или таймера "упираться" именно в "часовой" кварц на 32.768кГц?
Можно взять любой из кварцев на частоту, с которой при любых коэффициентах предделителя таймеров получаются "круглые" числа. Например, кварцы на частоты 1.8432МГц, 2.4576МГц, 3.2768МГц, 4.608МГц, 4.9152МГц, 6.144МГц, 7.3728МГц, 9.216МГц, 18.432МГц. С любым из этих кварцев можно запрограммировать таймер, например, на прерывание по переполнению через, допустим, 10 мс. В обработчике прерывания инкрементировать некую переменную, при этом достижение этой переменной значения 100 считать как прошествие одной секунды, при этом увеличивать количество секунд на 1, а указанную переменную снова обнулять и начинать отсчет следующей секунды?
Кроме частот, перечисленных мной, на частотах 12 МГц при коэффициентах предделителя 8 и 64, а также 10 МГц при коэффициенте 8 точно также отсчитывается ровно 10 мс.
Re: часовой кварц и atmega8
Добавлено: Вс янв 11, 2015 13:37:48
oleg110592
для часов обычно нужно резервное питание, если основное пропадет

. У меги, в спящем режиме Power Save асинхронный таймер работает, остальное тактирование отключается, этим достигается малое потребление. По прерыванию асинхронного таймера мега просыпается, добавляет секунды, минуты и пр. и проверяет не появилось ли основное питание, если нет - опять спать.
Re: часовой кварц и atmega8
Добавлено: Пн янв 12, 2015 16:17:03
СКАЗОЧНИК
Прошу прощения, конечно, но не хотелось ради такого глупого вопроса создавать целую тему.
Короче, проблема. АТМЕГА8, была прошита изначально на внешний кварц 16 МГц, сам прошивал. Игрался с фьюзом СКОРТ. Нормально прошивается. Короче, пока не заметил на осциллографе, что кварц генерит еще какую-то низкую гармонику в районе 333 Гц. Решил вообще кварц убрать, т.к. думаю из-за него у меня проблемы с программой. Перепрошил на внутренний RC генератор 8 МГц. Проверяю осцилом (не знаю зачем), а генерация все равно есть у кварца 16 МГц. Отпаял его.
МК перестал видеться программатором. ткнул отверткой в XTAL1, увидел. Понял, что нужен внешний такт. Кварц не стал припаивать, т.к. на программаторе есть выведенный провод тактирования. Воткнул его, смотрю, а фьюзы, как будто не были прошиты. Перепрошил снова. Опять та же картина. И так постоянно.
Короче, не хочет менять тактовый сигнал...
Может с МК чего?
Все. похоже разобрался... Пациент умер большей вероятность. Шьется через раз, не запускается от внутренного генератора. С внешним миром общаться отказывается. Только через программатор через раз.
Re: часовой кварц и atmega8
Добавлено: Пт янв 16, 2015 12:47:40
pcb432
Обычным щупом осц-а на кварц нельзя вставать, только если щуп с делителем.
Да земляной конец щупа должен подключаться как можно ближе к точке измерения.
Re: часовой кварц и atmega8
Добавлено: Пт янв 16, 2015 13:18:10
СКАЗОЧНИК
pcb432 писал(а):Обычным щупом осц-а на кварц нельзя вставать
Это то тут причем???? Я же говорю, что генерация осталась, потому что фьюзы не перепрошиваются... Хотя пишет, что все ОК.
Кстати, щуп с делителем х10.
Если вы говорите о другой гармонике, то это меня не сильно заботит. ))) Больше интересно, умер ли МК? И может ли быть такое, что не выполнилось условие производителя, что его можно перепрошить 10000 раз? Потому, что он продолжает "успешно" прошиваться. Но программу не меняет...
