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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 04.03.2013, 20:39  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,801
Сказал спасибо: 2,913
Сказали Спасибо 3,123 раз(а) в 2,113 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Сообщение от Vitiril Посмотреть сообщение
кварцованного таймера как формирователя точных временных интервалов невозможно
Сдуру - можно и член сломать. Sic.
Реклама:
ForcePoint вне форума  
Непрочитано 04.03.2013, 20:49  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

main_cnt =1

при одном main_cnt++;

main_count ›= 800 при main_cnt=800;

а при двух main_cnt++; main_cnt всегда нечетное

main_count ›= 800 при main_cnt=801;

На этом и получаете разницу.
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
Vitiril (04.03.2013)
Непрочитано 04.03.2013, 20:53  
Vitiril
Прохожий
 
Регистрация: 05.01.2008
Сообщений: 7
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vitiril на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Прощенье за неточность изложения. Условие в обработчике
if(main_count ›= 800) так выглядит в случае с двумя инкрементами main_count, с одним инкрементом if(main_count ›= 400).
p_off переменная, но принимает действительно четные значения. Но операция с ее участием обеспечивает длительность единицы на выходе, а не период. Или я чего-то не понял?
Vitiril вне форума  
Непрочитано 04.03.2013, 21:13  
Vitiril
Прохожий
 
Регистрация: 05.01.2008
Сообщений: 7
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vitiril на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Благодарю Boba spb. Программа не моя, сейчас поразбирался и действительно увидел косяк. И расхождение по частоте как раз на время одного переполнения таймера. Но тему пока не закрываю, т.к. коллега уверяет, что сигнал гулял по частоте на иных изменениях тела обработчика. Завтра придет, проверим.
Vitiril вне форума  
Непрочитано 04.03.2013, 21:17  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Какая у Вас задача? Частотота ШИМ должна быть константой? Иль Частота может гулять - а главное скважность точно держать?

Алгоритмы разные для этих ШИМов
Boba_spb вне форума  
Непрочитано 04.03.2013, 22:11  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Сообщение от Vitiril Посмотреть сообщение
Получается, что использование кварцованного таймера как формирователя точных временных интервалов невозможно
Вот тут http://www.530.ru/electronics/projects.php?do=p072 у Леонида Ридико все получилось, глядишь и у вас получится.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Эти 2 пользователя(ей) сказали Спасибо gary2007 за это сообщение:
ForcePoint (04.03.2013), Vitiril (04.03.2013)
Непрочитано 04.03.2013, 23:03  
Vitiril
Прохожий
 
Регистрация: 05.01.2008
Сообщений: 7
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vitiril на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Из разговора с коллегой выяснялось, что изменения сигнала по частоте он видел как раз играясь или с переинициализацией TCNT0 или с переменной main_cnt. А я, толком не проверив, вывалил проблему на форум. Благодарю сообщество за науку. Тема закрыта.
Vitiril вне форума  
Непрочитано 09.03.2013, 22:10  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: AVR, меняется время срабатывания прерывания

Сообщение от Boba_spb Посмотреть сообщение
На этом и получаете разницу.
На самом деле это совершенно ни причём. Ну сравнит он 800 с 800 или 800 с 801 - разницы никакой, в чём легко можно убедиться при желании, посмотрев асмовский листинг. Число тактов BRSH ровно столько же, сколько и, например, BREQ. Заменив второй инкремент на штук 7-10 NOP (инкрементируем слово, которое считываем из памяти, а потом его обратно в память записываем), получим точно такой же результат по уменьшению частоты.

А меняется частота просто потому, что состояние порта меняется через время сработки таймера, плюс время выполнения операторов до смены состояния порта. Т.е. таймер сработал скажем 100 мс. Переход в прерывание 5 тактов. Ещё тактов, скажем, 20 (на самом деле хрен его знает сколько CV сохраняет, смотреть листинг надо) на сохранение контекста, ну и предположим 10 тактов инкремент, 10 тактов проверка условия. Итого, состояние порта меняется через 100 мс + 45 тактов. Что даст одну частоту. Добавка ещё одного инкремента даст ещё 10 тактов (опытный программист не побрезгует volatile поставить, так что цикл чтение-инкремент-запись повторится полностью), и соответственно состояние порта будет меняться уже через 100мс + 55 тактов, что даст уже другую частоту.


Сообщение от Vitiril Посмотреть сообщение
Получается, что использование кварцованного таймера как формирователя точных временных интервалов невозможно. Вот это для меня после нескольких лет использования Atmel`овских девайсов новость.
Нет, не получается. Просто - думать надо, что пишешь. Контроллер он тупой - выполняет только то, что программа предписывает.


ЗЫ: Я вообще удивляюсь современным эмбедерам. Ладно студентами учиться не хотят - понимаю, сам студентом не хотел учиться, время весёлое. Даташиты редко читают, тоже можно понять - чтобы найти нужное нужно много не нужного прочитать, да плюс английский (знание языка - тут без комментариев, нет приличных ). Но проработав с контроллером несколько лет делать такие "открытия"... Мне одного года хватило после института что бы пройти стадии "Я нашел ошибку в контроллере, таймер, ацп, компаратор и т.п. работают не правильно", "я нашел ошибку в компиляторе. Я ему вот это, а он гад вот так", "Ничего не знаю, у меня неделю назад работало, я проверил, ищите ошибку в схеме". Думать надо однако.

Последний раз редактировалось Someone; 09.03.2013 в 22:16.
Someone вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита БП по току. Время срабатывания DK Источники питания и свет 8 14.02.2011 01:05
AVR Studio 4 не симулирует прерывания? kvark85 Микроконтроллеры, АЦП, память и т.д 6 12.01.2011 12:07
Прерывания в AVR uk8amk Микроконтроллеры, АЦП, память и т.д 3 17.10.2008 14:25
Как реализовать точное время в сети из AVR? Don_Ambrosio Микроконтроллеры, АЦП, память и т.д 44 15.08.2008 14:02
Впервые за все время попался глючный AVR (Мега64) nml Коллекция глюков 10 19.05.2008 17:18


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


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