Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 27.03.2010, 22:33  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Спасибо за ценный совет, но все таки ,если без подсчета инструкции ,просто пробовать менять коэффициенты деления ,можно ли в принципе дабится точной установки секундного интервала если в дальнейшем программа не изменится?Или это в принципе не возможно?
Спасибо.
Реклама:
begun вне форума  
Непрочитано 27.03.2010, 22:34  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Сообщение от vovaf Посмотреть сообщение
Использовав прерывание по переполнению и записью в счетчик начального значения Вы никогда не получите точного хода часов, смотрите даташит по вопросу вхождения в прерывания
Счетчик в таймере и вхождение в прерывание - разные вещи и работают они ассинхронно. Поэтому время входа, если оно достаточно маленькое - не играет роли. Конечно если не делать глупостей по установке регистров таймера в самом обработчике прерывания. begun сделал это неправильно.

begun, не могу на лету разобрать ваш код инициализации таймера "магическими" числами.

Вот смотрите, как должно быть (пример для 4 МГц, WinAVR):

#include ‹avr/io.h›
#include ‹stdint.h›

int main()
{
// 4000000 Гц / 64 / 50 = 1250 Гц

TCCR0 =
_BV(CS01) | _BV(CS00) | // / 64
_BV(WGM01);

const uint8_t k = 50;
OCR0 = k - 1;

// Enable timer 0 output compare interrupt.
TIMSK |= _BV(OCIE0);

sei();

for ( ; ; ) ;

return 0;
}

void Tick1Hz()
{
// Вызывается ровно 1 раз в секунду.

// Считаем время
...
}

static short _Counter;

ISR(TIMER0_COMP_vect)
{
// Вызывается ровно 1250 раз в секунду.
++_Counter;
if (_Counter == 1250)
{
// Попадаем сюда каждый 1250 раз, т.е. 1 раз в секунду.
_Counter = 0;
Tick1Hz();
}
}

Таймер 0 генерирует прерывание сравнения (TIMER0_COMP_vect) с частотой ровно 1250 Гц. Обратите внимание, что значение второго делителя (50) записывается в OCR0 на единицу меньше. Никаких обращений к регистрам таймера в обработчике прерывания нет, соответственно время вхождения в прерывание не играет никакой роли. Код проверенный, работает как часы.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.

Последний раз редактировалось alexgap; 27.03.2010 в 22:41.
alexgap вне форума  
Непрочитано 27.03.2010, 22:48  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

alexgap
Большое спасибо за приведение кода .
Я пока знаю только CVAVR и постараюсь разобратся в WinAVR пока не
очень вник.
Спасибо.
begun вне форума  
Непрочитано 27.03.2010, 22:50  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

у меня был в практике прецизионный драйвер для шаговых двигателей на ат89s52. позволял загонять их в нештатные режимы, в которых только сама механическая система служила ограничением
там все инструкции были рассчитаны с погрешностью в 1такт
есть на форуме DDS на асме, в котором тоже шаг выставления частоты определяется кол-вом инструкций обработчка.

к чему это я асинхронный режим рулит для данной задачи на СИ
spballiance вне форума  
Непрочитано 27.03.2010, 23:00  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Сообщение от begun Посмотреть сообщение
Я пока знаю только CVAVR и постараюсь разобратся в WinAVR пока не
очень вник.
Да вы просто разберитесь с режимами таймера. Добейтесь асинхронности между счетом таймера и выполнением кода, чтобы не возникало погрешностей. Мой пример как раз это и делает. На CVAVR перенесется на раз-два. Если будет совсем трудно, то можно поставить WinAVR + AVR Studio и проверить пример - у вас появится точка опоры.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 27.03.2010, 23:17  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Сообщение от begun Посмотреть сообщение
просто пробовать менять коэффициенты деления
Кварцы имеют два резонанса, последовательный и параллельный. Один из них находится выше по частоте. Плюс ёмкости монтажа отсюда набегает отклонение частоты генерации. Подключите частотомер и измерьте на какой частоте работает ваш МК. Далее можно расчитывать коэфициенты.
picavr вне форума  
Непрочитано 27.03.2010, 23:22  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Понял,
В принципе по Вашим советам уже скопилось достаточно материала
для анализа и размышлении.
Постараюсь оправдать Ваши старания помочь и результаты сообщу.
Спасибо.
begun вне форума  
Непрочитано 28.03.2010, 09:29  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

vovaf
spballiance

Пока хочу попробовать Ваше предложение, но не понятно ,как на timer 2
повесить кварц .?Есть чтоли специальные входы ,или надо соединить вместо основного кварца?
Спасибо.
begun вне форума  
Непрочитано 28.03.2010, 10:39  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Сообщение от begun Посмотреть сообщение
Пока хочу попробовать Ваше предложение, но не понятно ,как на timer 2
повесить кварц .?Есть чтоли специальные входы ,или надо соединить вместо основного кварца?
Пины TOSC1 и TOSC2. В случае mega8 эти пины совпадают с XTAL1 и XTAL2. Т.е. вместо вашего старого кварца нужно подключить новый на 32768 Гц. Перед этим перевести процессор на тактирование от внутреннего RC генератора установкой соответствующих фьюзов.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 28.03.2010, 12:51  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

alexgap

Большое спасибо за разъясекеия .Представляю каково, когда по зову человечности один человек должен объяснять другому простые для него вещи .
Честь и хвола Вам и всем ,кто это делает так безкорыстно.
Не знаю сумею ли Я когда нибудь достичь такого уровня ,чтобы другим помогать.
Результаты сообщую
begun вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AVR JTAGICE MKII - проблемы firmware... Luxurious AVR 25 20.10.2014 10:50
На WinAVR + AVR Studio c CVAVR Vetal-soft Embedd С 87 03.03.2013 20:31


Часовой пояс GMT +4, время: 10:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot