часовой кварц и atmega8

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
electronic1
Родился
Сообщения: 8
Зарегистрирован: Пн янв 05, 2015 15:13:59

часовой кварц и atmega8

Сообщение 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();


Ну и считаем импульсы в прерывании:

Код: Выделить всё

ISR(TIMER2_COMP_vect)   
{
...                 
}


Руководствовался этой статьей http://www.getchip.net/posts/052-kak-za ... -32768-gc/ и даташитом на атмега8..
Помогите.. что не так?
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: часовой кварц и atmega8

Сообщение eess9 »

Код: Выделить всё

while(ASSR & 0x1F);

а зачем вы смотрите 4-й бит? Он же зарезервирован, возможно в этом проблема. Попробуйте так:

Код: Выделить всё

while(ASSR & 0x0F);
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: часовой кварц и atmega8

Сообщение eess9 »

Да еще не доглядел. А что вы за прерывание используете? Зачем вам от регистра сравнения?

Код: Выделить всё

ISR(TIMER2_OVF_vect)
{
}
Аватара пользователя
electronic1
Родился
Сообщения: 8
Зарегистрирован: Пн янв 05, 2015 15:13:59

Re: часовой кварц и atmega8

Сообщение electronic1 »

У меня стоит по совпадению, так было с 8 МГц кварцем.

Сейчас так, но не работает:
прерывание по переполнению

Код: Выделить всё

ISR(TIMER2_OVF_vect)   
{
     i++;     
}


настройки таймера:

Код: Выделить всё

   
  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();


А может протуес гнать? Настройки поставил на часовой кварц.
Изображение
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: часовой кварц и atmega8

Сообщение eess9 »

Работает в протеусе
Вложения
ATmega8.rar
(32.65 КБ) 525 скачиваний
Аватара пользователя
electronic1
Родился
Сообщения: 8
Зарегистрирован: Пн янв 05, 2015 15:13:59

Re: часовой кварц и atmega8

Сообщение electronic1 »

eess9 писал(а):Работает


Благодарю за помощь!
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: часовой кварц и atmega8

Сообщение eess9 »

Всегда пожалуйста
Аватара пользователя
electronic1
Родился
Сообщения: 8
Зарегистрирован: Пн янв 05, 2015 15:13:59

Re: часовой кварц и atmega8

Сообщение electronic1 »

Собрал в железе. Поставил кварц 32768Гц. Прошил фьюзы. atmega8 определяется и читается, значит фьюзы прошиты правильно.. Заливаю прошивку мигания диодом в прерывании как у eess9, то есть его программу, и не работает. Пишу программу что бы мигала без прерывания, светодиод мигает.

В чем может быть проблема?
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: часовой кварц и atmega8

Сообщение eess9 »

Вы уверены, что часовой кварц припаян к выводам PB6, PB7? Прозвоните что есть электрический контакт. Замените кварц, может битый.

А в какие значения фьюзы установили?
Аватара пользователя
electronic1
Родился
Сообщения: 8
Зарегистрирован: Пн янв 05, 2015 15:13:59

Re: часовой кварц и atmega8

Сообщение electronic1 »

eess9 писал(а):Вы уверены, что часовой кварц припаян к выводам PB6, PB7?
А в какие значения фьюзы установили?


Пробовал с двумя кварцами. Если кварц убираю то мк не определяется программатором, ставлю обратно - все нормально. То есть контакт есть.

Фьюзы поставил такие:

CKSELL3..00 - 1001
SUT0 -1
SUT1 -0

Остальное не трогал..

Через ногодрыг мигалка работает, убираю кварц перестает.
А вот спрерываниями от таймера нет..
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: часовой кварц и atmega8

Сообщение oleg110592 »

включите тактирование МК от внутреннего генератора, таймер 2 будет работать от часового кварца
Аватара пользователя
electronic1
Родился
Сообщения: 8
Зарегистрирован: Пн янв 05, 2015 15:13:59

Re: часовой кварц и atmega8

Сообщение electronic1 »

Благодарю! Я пол дня мучал код и где что накосячил. В даташите не написано про это...
Аватара пользователя
eess9
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Re: часовой кварц и atmega8

Сообщение eess9 »

А фьюзы посмотреть в проекте протеуса? Поскольку у Atmega8 обычный и часовой кварцы цепляются на одни и те же линии (взаимоисключающие), то для меня само собой разумеющееся, что МК работает от внутреннего осциллятора когда таймер 2 используется асинхронно.
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: часовой кварц и atmega8

Сообщение Dr. Alex »

Вообще для работы с таким кварцем 32768кГц, надо включить таймер в Ассинхронном режиме! И кварц вешать на ноги TOSC2, TOSC1!
Изображение
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: часовой кварц и atmega8

Сообщение oleg110592 »

а мега16 то причем, у автора сообщения МК мега8 и таймер работает в асинхронном режиме и кварц тоже "повешен" на TOSC2 TOSC1
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: часовой кварц и atmega8

Сообщение 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 мс.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: часовой кварц и atmega8

Сообщение oleg110592 »

для часов обычно нужно резервное питание, если основное пропадет :). У меги, в спящем режиме Power Save асинхронный таймер работает, остальное тактирование отключается, этим достигается малое потребление. По прерыванию асинхронного таймера мега просыпается, добавляет секунды, минуты и пр. и проверяет не появилось ли основное питание, если нет - опять спать.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: часовой кварц и atmega8

Сообщение СКАЗОЧНИК »

Прошу прощения, конечно, но не хотелось ради такого глупого вопроса создавать целую тему.

Короче, проблема. АТМЕГА8, была прошита изначально на внешний кварц 16 МГц, сам прошивал. Игрался с фьюзом СКОРТ. Нормально прошивается. Короче, пока не заметил на осциллографе, что кварц генерит еще какую-то низкую гармонику в районе 333 Гц. Решил вообще кварц убрать, т.к. думаю из-за него у меня проблемы с программой. Перепрошил на внутренний RC генератор 8 МГц. Проверяю осцилом (не знаю зачем), а генерация все равно есть у кварца 16 МГц. Отпаял его.
МК перестал видеться программатором. ткнул отверткой в XTAL1, увидел. Понял, что нужен внешний такт. Кварц не стал припаивать, т.к. на программаторе есть выведенный провод тактирования. Воткнул его, смотрю, а фьюзы, как будто не были прошиты. Перепрошил снова. Опять та же картина. И так постоянно.
Короче, не хочет менять тактовый сигнал...
Может с МК чего? :dont_know:

Все. похоже разобрался... Пациент умер большей вероятность. Шьется через раз, не запускается от внутренного генератора. С внешним миром общаться отказывается. Только через программатор через раз.
Станислав
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

Re: часовой кварц и atmega8

Сообщение pcb432 »

Обычным щупом осц-а на кварц нельзя вставать, только если щуп с делителем.
Да земляной конец щупа должен подключаться как можно ближе к точке измерения.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: часовой кварц и atmega8

Сообщение СКАЗОЧНИК »

pcb432 писал(а):Обычным щупом осц-а на кварц нельзя вставать

Это то тут причем???? Я же говорю, что генерация осталась, потому что фьюзы не перепрошиваются... Хотя пишет, что все ОК.
Кстати, щуп с делителем х10.

Если вы говорите о другой гармонике, то это меня не сильно заботит. ))) Больше интересно, умер ли МК? И может ли быть такое, что не выполнилось условие производителя, что его можно перепрошить 10000 раз? Потому, что он продолжает "успешно" прошиваться. Но программу не меняет... :dont_know:
Станислав
Ответить

Вернуться в «AVR»