|
Кварц 32768, не запускается |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Mar 23 2008, 18:28
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(acex2 @ Mar 23 2008, 21:12)  Емкости нужны. Вот это почитайте: http://www.atmel.com/dyn/resources/prod_do...nts/doc8001.pdfУ нас как-то был такой же косяк на 165P - решилось выбором правильного кварца (подробнее тут: http://www.atmel.com/dyn/resources/prod_do...nts/doc8064.pdf ), максимально короткими дорожками от кварца до проца и тщательной промывкой платы после пайки. Спасибо - счас почитаю
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Mar 24 2008, 08:30
|

Местный
  
Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476

|
Цитата(ILYAUL @ Mar 24 2008, 10:17)  Попробуйте параллельно кварцу поставить резистор на 1 мегаом.
Ставил - не помогло. Кварц стоит прямо на ножках (сейчас) , флюс использовался спиртовой.
Сегодня попробую кварц от ноута, с его схемой вкл. Часовой генератор очень маломощний ,поэтому частота может пропадать даже при прикосновении щупом осцилографа.А наводку подавать незначит что это именно частота 32768гц. Проблема может в прерываниях
Сообщение отредактировал yarunt - Mar 24 2008, 09:11
--------------------
|
|
|
|
|
Mar 24 2008, 12:51
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
ILYAUL - нащёт фусов Вы хорошо подумали? Не должно там быть (ДШ) про фусы относительно часового кварца, инженер должен сам решать как их шить, взависимости от решаемой задачи и часового кварца со схемой включения. Код К примеру в даташите на Атмегу 48/88/168 написано (дословный перевод, страница 152): Источник тактов для Timer/Counter2 называется clkT2S. По умолчанию clkT2S подключён к основной тактовой системы ввода/вывода называемой clkIO. Установкой бита AS2 в регистре ASSR, Timer/Counter2 ассинхронно тактируется от пина TOSC1. Это позволяет использовать Timer/Counter2 в качестве Real Time Counter (RTC). Когда AS2 установлен, пины TOSC1 и TOSC2 отсоединены от порта С. Таким образом кварцевый резонатор может быть включён между выводами TOSC1 и TOSC2 для обеспечения несависимого источника тактирования для Timer/Counter2. Встроенный Генератор оптимизирован для работы с часовым квацем частотой 32.768 kHz. Подачу внешнего тактирующего сигнала на TOSC1 не рекомендована. информация к размышлению: По поводу времени запуска кварцевого генератора: время запуска (точнее выход на максимальную амплитуду генерации) практически определяется формулой: tзап.=Q/f, где Q добротность резонатора, f - генерируемая частота (Гц) Добротность низкочастототных кварцев составляет от 30000 до 2000000, конкретно часового кварца добротность может состовлять примерно от 30000 до 300000, откуда следует, что генератор на часовом кварце будет выходить на режим от 1 до 10 секунд. Время запуска можно значиельно снизить уменьшив добротность кварца шунтированием последнего резистором, например 5.1 МОм, однако это снижает стабильность работы кварцевого генератора (хотя этим снижением во многих случаях можно пренебречь). Аналогичного эффекта можно добиться применив керамические резонаторы (которые сами по себе имеют низкую добротность). ну и нащёт фусов: В AVR существует регистр SUT, который отвечает за задержку сигнала сброса, необходимую для полного выхода генератора на рабочий режим. Это время должно быть примерно в два раза больше (для запаса с учетом климатики, рабочего напряжения и т.д.). Оно выбирается в регистре SUT двумя битами: 00 - 5 циклов генератора 01 - от 0.4 до 0.6 мс 10 - от 3.2 до 4.8 мс 11 - от 128 до 192 мс Информации в нете куча! Думаю что помог! Удачи!
Сообщение отредактировал sKWO - Mar 24 2008, 12:53
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Mar 26 2008, 11:53
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(ILYAUL @ Mar 25 2008, 21:34)  Счас почитаю DS на 164 посмотрю , что пишут они на счёт SUT для 164. Но паралельно написал в Atmel- обязательно напишу , что они ответят , если конечно ответят Не знаю какой Вы используете супервизор, если внутренний то посмотрел бы ещё на него и заменил BOD (brown-out detector) на «спящий» BOD. Может поможет, говорят он глючный. Поскольку у Вас Atmega164P посмотрите про режимы технологии AVR-микроконтроллеры picoPower компании Atmel с ультранизким потреблением.
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 2 2008, 16:58
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(ILYAUL @ Apr 2 2008, 19:56)  Всё таки я его запустил. Поздравляю, не знал что столько проблем может быть с часовым кварцом. Ставил простой, выпаянный с китайских часов к МЕГЕ8535 и 88, 168 тикал как "часы"
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Oct 23 2008, 11:10
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
У меня также не запускается часовой кварц, подключеный к AT90USB1287. Конденсаторов на выводах кварца нет. Пример RTC взял из AVR134, немного подкорректировал: Код void rtc_Init(void) { //volatile unsigned int temp0, temp1; // for(temp0=0; temp0<0x0040; temp0++) // Wait for external clock crystal to stabilize // for(temp1=0; temp1<0xFFFF; temp1++); delay_ms(2000);
DDRF |= (1<<MCLK); PORTF |= (1<<MCLK); // Настроить MCLK на выход TIMSK2 &=~((1<<TOIE2)|(1<<OCIE2A)); // Disable TC2 interrupt ASSR |= (1<<AS2); // set Timer/Counter2 to be asynchronous from the CPU clock // with a second external clock(32,768kHz)driving it. TCNT2 = 0x00; TCCR2B = 0x05; // prescale the timer to be clock source / 128 to make it // exactly 1 second for every overflow to occur while(ASSR&0x11); // Wait until TCNT2, TCCR2B is updated // TC2 TIFR2 |= (1 << TOV2); TIMSK2 |= (1<<TOIE2); // set 8-bit Timer/Counter2 Overflow Interrupt Enable __enable_interrupt(); // set the Global Interrupt Enable Bit } Проблема в отсутствии конденсаторов или в настройках? МК распаян на монтажной платке. Работоспособность проверяю изменением пина (BEEP) в обработчике прерывания TIMER2_OVF_ISR(). Кварц - на расстоянии 1...1,5 см от выводов TOSC1, 2.
|
|
|
|
|
Oct 23 2008, 15:33
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(ILYAUL @ Oct 23 2008, 17:03)  пока в DS не нашёл сию строчку "Applying an external clock source to TOSC1 requires EXCLK in the ASSR Register written to one logic one. Сие онзначало - чтобы запустить часовой кварц надо бы подключить внутренний генератор , при этом эти выходы перестают быть портами ВВ . Сие означает совсем другое - у Вас плохо с английским На самом деле установка EXCLK бита в "1" означает работу от внешнего источника тактовых импульсов (32768 Гц) , подключенного к TOSC1 выводу вместо кварца 32768 Гц. PS. Проблема была в кварце: поменял на выпаяный из старого советского будильника кварц, и все заработало, даже без конденсаторов. Но, все-же, конденсаторы нужны - для кварца 12pF надо повесить на выводах на землю по 25pF, так не нашел никакой информации о наличии встроенных конденсаторах в данном контроллере.
Сообщение отредактировал alux - Oct 24 2008, 11:47
|
|
|
|
|
Dec 28 2009, 09:21
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Пришлось снова поднимать старую тему... Не работает асинхронный таймер на Atmega8535. Фьюзы запрограммированы так: CKOPT=0, CKSEL=F, SUT=2. Основной кварц - 16МГц. Часовой кварц припаян на соответствующие ножки мк без конденсаторов. Код #pragma vector=TIMER2_OVF_vect __interrupt void TIMER2_OVF_ISR() { PORTD ^= (1 << GREEN); }
void Initialise() { delay_ms(1000);
// Timer2 initialisation with a second external clock (32,768kHz) driving it // Set Timer/Counter2 to be asynchronous from the CPU clock ASSR |= (1 << AS2); TCNT2 = 0x00; TCCR2 = 0x05; //(1 << CS22) | (0 << CS21) | (1 << CS20); // prescale the timer to be clock source/128 to make it // exactly 1 second for every overflow to occur //while(ASSR & ((1 << TCR2UB) | (1 << TCN2UB))); // Wait until TCNT2, TCCR2B is updated TIFR |= (1 << TOV2); // Clear TC2 interrupt flag TIMSK |= (1 << TOIE2); // set 8-bit Timer/Counter2 Overflow Interrupt Enable
MCUCR = (1 << SE); // Idle по команде __sleep()
__enable_interrupt(); // allow all enabled interrupts }
void main() { Initialise(); // set up I/O registers, flags & variables
for(;;) { //Idle. Спать до следующего прерывания __sleep(); } } Если раскоментировать строчку while(ASSR & ... , то программа остается в этом цикле навсегда. Без этой строчки программа работает, но не запускается прерывание таймера2. Эрраты на Atmega8535 нет. Какие будут соображения?
|
|
|
|
|
Dec 28 2009, 13:48
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 24-06-09
Из: Беларусь
Пользователь №: 50 607

|
Если контроллер в TQFP-корпусе - проверьте монтаж и удалите все следы флюса от кварца, дорожек и ножек чипа. В 90% проблем с часовым кварцем на меге - именно это. Проверьте осциллографом или частотомером наличие генерации
|
|
|
|
|
Dec 29 2009, 16:51
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 25-04-07
Пользователь №: 27 301

|
Проблема в кварцах (либо херовом генере в меге). В своё время я тоже долго долбался с этим. Были куплены кварцы штук сорок а запускаться не хотели сразу, точнее запускались где-то через минуту. Потом случайно нашел один кварц купленный на рынке и с ним все заработало сразу... Но выкидывать кучу купленных кварцев мне не захотелось и начал методом тыков экспериментировать...в результате всё воркен...добавил всего лиш задержку в код в нужном месте.
//Init Timer2 TCCR2B:= (1 shl CS22) or (1 shl CS21) or (1 shl CS20); //1024 Presc Delay_ms(400); //Добавлено для быстрого выхода генератора часового кварца на рабочий режим ASSR:= (1 shl AS2); //Enable Async Mode (включение тактирования от часового кварца) TCNT2:= 0; TIMSK2:= (1 shl TOIE2); //Enable Timer2 Int Overflov
|
|
|
|
|
Feb 1 2010, 13:22
|
Участник

Группа: Участник
Сообщений: 67
Регистрация: 7-12-09
Пользователь №: 54 109

|
Так значит, кварцевые резонаторы трудно проверить вне схемы, только подключением к процессору? Следы флюса не дают кварцу запуститься? Это верно и для других микроконтроллеров? В частности для MSP430F2012?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|