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

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

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

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

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

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

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

 
Опции темы
Непрочитано 11.09.2014, 23:13  
mind
Гражданин KAZUS.RU
 
Аватар для mind
 
Регистрация: 21.08.2006
Адрес: РА г.Майкоп
Сообщений: 863
Сказал спасибо: 31
Сказали Спасибо 221 раз(а) в 122 сообщении(ях)
mind на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от omercury Посмотреть сообщение
Я бы порекомендовал сначала заняться алгоритмом...
Видно не осознали Вашу подсказку. Остановить и сразу запустить.....
Реклама:
__________________
mind вне форума  
Непрочитано 11.09.2014, 23:15  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от akegor Посмотреть сообщение
Чем быстрее будет перезапущен счетчик, тем точнее определение периода оборота.
Не обязательно, главное, чтоб перезапуск был через одинаковое во всех циклах время.
omercury вне форума  
Сказали "Спасибо" omercury
SAHA_T (12.09.2014)
Непрочитано 11.09.2014, 23:20  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка импульса

ну как же остановить и сразу запустить, нужно еще и обнулить, т.к счетчик работает по сравнению а не по переполнению
TCCR1B=0x00; //- остановить Timer1
TCNT1L=TCNT1H=0x00; //- обнулить таймер
TCCR1B=0x04;

Последний раз редактировалось SAHA_T; 11.09.2014 в 23:22.
SAHA_T вне форума  
Непрочитано 11.09.2014, 23:26  
mind
Гражданин KAZUS.RU
 
Аватар для mind
 
Регистрация: 21.08.2006
Адрес: РА г.Майкоп
Сообщений: 863
Сказал спасибо: 31
Сказали Спасибо 221 раз(а) в 122 сообщении(ях)
mind на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от SAHA_T Посмотреть сообщение
ну как же остановить и сразу запустить, нужно еще и обнулить, т.к счетчик работает по сравнению
TCCR1B=0x00; //- остановить Timer1
TCNT1L=TCNT1H=0x00; //- обнулить таймер
TCCR1B=0x04;
Подсказали. Не идите снизу вверх. Наооборот сверху вниз. Принципы программирования. Отработайте алгоритм. А потом уж , "вылизывайте" реализцию оного.
__________________
mind вне форума  
Сказали "Спасибо" mind
SAHA_T (11.09.2014)
Непрочитано 11.09.2014, 23:41  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от SAHA_T Посмотреть сообщение
qq=(tablica[oborot]/11111)+100; +100
Откуда Вы взяли именно 100?
Сообщение от Yurkin2014 Посмотреть сообщение
Пока ТС не врубится во внутренюю жизнь МК, ему останется только копировать чужие программы.
Либо написать алгоритм, разбить на элементарные (мелкие) задачи и решать эти задачи последовательно.
omercury вне форума  
Сказали "Спасибо" omercury
SAHA_T (12.09.2014)
Непрочитано 11.09.2014, 23:42  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от SAHA_T Посмотреть сообщение
-срабатывает внешнее прерывание
-останавливаем счетчик
-берем значение из счетчика и смотрим в таблицу
-сбрасываем счетчик
-запускаем счетчик
-подсчитываем длительность импульса с помощью таблицы, т.е оборот равен определенной длительности импульса с шагом 256мкс
-далее условие на заниженные обороты, т.е нижний порог оборотов
-заносим значение в регистр сравнения, в данном случае OCR1A
т.е получается что мы заносим в регистр сравнения длительность импульса а нужно ....
А нужно занести уже подготовленный результат предыдущих вычислений - ДВС очень меееедленный с точки зрения МК процесс.
Я бы сделал немного не так.
Сообщение от SAHA_T Посмотреть сообщение
-срабатывает внешнее прерывание....
-останавливаем счётчик;
- читаем таймер;
- запускаем таймер на отсчёт задержки искрообразования;
- подсчитываем длительность цикла, расчитываем УОЗ, считаем звёзды на небе, готовим данные для показометра оборотов и индикации угла, моргаем светлодиодами, т.е. занимаемся любой ерундой, главное, чтоб она не занимала времени больше, чем двигатель совершает полный оборот и всё это укладывалось в строго определённое время (кстати, для этого можно использовать второй таймер);
- запускаем таймер подсчёта времени оборота на новый цикл и ждём следующего импульса с датчика.

Хочу напомнить, что 10 к. оборотов, это целых 6 миллисекунд или 48000 тактов АВР-ки при 8МГц тактовой...
Это реально дофига.
omercury вне форума  
Сказали "Спасибо" omercury
SAHA_T (12.09.2014)
Непрочитано 12.09.2014, 00:29  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Задержка импульса

Ладно, можно работу системы представить вот так.
Стадион, спортсмен бегает по кругу. Где-то на кругу стоит тренер по фамилии Таймер. Тренер измеряет время, за которое спортсмен пробегает круг. К сожалению, секундомер остался дома, и тренер просто решил считать вслух. Вот спортсмен пробежал мимо него. Тренер начал счёт 0, 1, 2, 3 ... Когда он бегун вновь поравнялся с Таймером, Таймер сказал 100, запомнил это число и снова начал считать: 0, 1, 2, 3 ... Тут всё понятно.
Но через четверть круга стоит фотокамера с дистанционным спуском, кнопка в руках тренера. Таймеру хочется сделать фотографию спортсмена. Он рассуждает так: четверть круга, значит, когда я досчитаю до 25, то как раз бегун будет напротив камеры. Так он и сделал, получился отличный снимок.
Но бегун начал уставать, и в следущий раз пробежал мимо Таймера при счёте 120. Не беда. Таймер начал как обычно: 0, 1, 2 , 3 ... Но в этот раз он нажал на кнопку спуска при счёте 30, так как это есть четверть от 120.
Третий круг. Бегун поравнялся с тренером при счете 132. Тут Таймер напрягся, делить 132 на 4 не так просто. Но Таймер был хитрый. Он заранее сделал таблицу деления на 4, в этой таблице в строчке 132 стояло число 33. Поэтому тренер не думал долго, а посмотрел в таблицу и нажал кнопку на счете 33. И снова отличный кадр!
Вот эта таблица
...
tabl[120] = 30
tabl[121] = 30
tabl[122] = 31
tabl[123] = 31
tabl[124] = 31
tabl[125] = 31
tabl[126] = 32
tabl[127] = 32
tabl[128] = 32
tabl[129] = 32
tabl[130] = 33
tabl[131] = 33
tabl[132] = 33
tabl[133] = 33
tabl[134] = 34
...
В квадратный скобках стоит время одного круга, а само значение таблицы tabl[] есть число для сравнения с текущим счётом. Мы измерили время круга, это же время-число и есть номер строки. Находим значение из таблицы, и когда табличное число сравняется с текущим счётом, тогда и нажимаем на кнопку.
Yurkin2014 вне форума  
Сказали "Спасибо" Yurkin2014
SAHA_T (12.09.2014)
Непрочитано 12.09.2014, 00:32  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка импульса

Во я в замес попал

TCCR1B=0x00; // -останавливаем счётчик;
oborot = (TCNT1L|((int)TCNT1H‹‹8 )); //- читаем таймер;
OCR1AH=(int)(oborot››8 ); //- запускаем таймер на отсчёт задержки искрообразования;
OCR1AL=(int)oborot; //- запускаем таймер на отсчёт задержки искрообразования;
Т.к таймер у нас с делителем 256, то если мы сразу делаем отсчет таймера TCNT1, то в нем будет о или 1, не больше

cycle=(tablica[oborot]); //- подсчитываем длительность цикла
if(oborot›369)oborot = 369;
- рассчитываем УОЗ, как рассчитывать УОЗ, делать еще одну таблицу и присваивать номер равный длительности и равный задержке ? Не могу понять своей логикой, мы имеем длительность импульса, как можно это применить.
TCCR1B=0x04;

рассчитываем УОЗ, считаем звёзды на небе, готовим данные
//для показометра оборотов и индикации угла, моргаем светодиодами, т.е. занимаемся
//любой ерундой, главное, чтоб она не занимала времени больше, чем двигатель совершает
// полный оборот и всё это укладывалось в строго определённое время
//(кстати, для этого можно использовать второй таймер);
//- запускаем таймер подсчёта времени оборота на новый цикл и ждём следующего импульса с датчика.

Последний раз редактировалось SAHA_T; 12.09.2014 в 00:37.
SAHA_T вне форума  
Непрочитано 12.09.2014, 00:34  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от Yurkin2014 Посмотреть сообщение
tabl[120] = 30
tabl[121] = 30
Ага, Case на диапазон.
omercury вне форума  
Сказали "Спасибо" omercury
SAHA_T (12.09.2014)
Непрочитано 12.09.2014, 00:39  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от SAHA_T Посмотреть сообщение
//для
SAHA_T, выделяете в посте нужную часть - вылазит окошко "цитировать" - клик по нему и будет частичной цитатой. Есть под каждым постом и кнопка "цитировать" - цитата всего поста. Лишнее между квотами можно удалить.
omercury вне форума  
Сказали "Спасибо" omercury
SAHA_T (12.09.2014)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержка или опережение импульса SAHA_T Микроконтроллеры, АЦП, память и т.д 85 19.08.2014 00:51
Измерение длительности импульса STM32 anton_1000 ARM 28 22.10.2013 10:51
Ограничитель длительности импульса Pajatel Микроконтроллеры, АЦП, память и т.д 161 05.04.2012 00:35
Как выделить срез импульса? vicselc Поиск схем. Делимся схемами 10 09.07.2007 01:27
LCD DEM 16261(4 bit mode) + AT89C51 ajborman Микроконтроллеры, АЦП, память и т.д 8 21.03.2007 15:26


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


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