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

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

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

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

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

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

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

 
Опции темы

Отработка секундного импульса на AVR

Непрочитано 27.03.2010, 22:33  
begun
Гражданин KAZUS.RUN
 
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

Спасибо за ценный совет, но все таки ,если без подсчета инструкции ,просто пробовать менять коэффициенты деления ,можно ли в принципе дабится точной установки секундного интервала если в дальнейшем программа не изменится?Или это в принципе не возможно?
Спасибо.
Реклама:
begun вне форума  
Непрочитано 27.03.2010, 22:34  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
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.RUN
 
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
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.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: отработка секундного импульса на AVR

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

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

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

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

vovaf
spballiance

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

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

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 28.03.2010, 12:51  
begun
Гражданин KAZUS.RUN
 
Регистрация: 18.07.2006
Сообщений: 894
Сказал спасибо: 244
Сказали Спасибо 31 раз(а) в 28 сообщении(ях)
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, время: 23:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.