Реклама на сайте 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, 00:47  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка импульса

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

Сообщение от Yurkin2014 Посмотреть сообщение
По 100 не годится: будет слишком большая ошибка установки УОЗ.
......
Вот, в таблице видно, шаг по оборотам непостоянный:
Ага, сначала хотел поругаться, а потом дочитал пост.
Динамический шаг, это правильно.

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

Вот еще один хороший человек
ага, достучался я до Вас
omercury, Очень рад Вас видеть

Дак а где же эти внешние прерывания находятся GIMSK|=0x40;MCUCR=0x03; EIFR=0x40; я так понимаю что в таймере им делать нечего. Даже в книге Белова 2 слова про MCUCR(фронты) а остальное не понятно.


*Предлагал уже, но наш парень горячий - хочет сразу кодить.* - я просто учусь, и много чего не понимаю

Последний раз редактировалось SAHA_T; 11.09.2014 в 03:07.
SAHA_T вне форума  
Непрочитано 11.09.2014, 07:35  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Задержка импульса

Сообщение от omercury Посмотреть сообщение
Динамический шаг, это правильно.
Там есть еще один нюанс.
Регулировочная характеристика центробежного регулятора не зря имеет излом. Это вызвано тем, что на малых углах изменение скорости поршня небольшие, а вот при увеличении угла опережения скорость поршня меняется быстрее. Другими словами, сразу после импульса поршень бежит быстро к ВМТ, потом скорость уменьшается (синусоида). Судя по двум пружинам в центробежнике, отмахиваться от этого нельзя (иначе его бы упростили).
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
SAHA_T (11.09.2014)
Непрочитано 11.09.2014, 11:52  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка импульса

Дак в таблице и будет видно длительность импульса на определенном обороте
22 5632 10653,40909
23 5888 10190,21739
24 6144 9765,625
25 6400 9375
26 6656 9014,423077
27 6912 8680,555556
28 7168 8370,535714
29 7424 8081,896552
30 7680 7812,5
31 7936 7560,483871
32 8192 7324,21875

и эту длительность можно изменить в таблице, под себя, таким образом компенсировать некоторые огрехи вызванные на определенных оборотах

Последний раз редактировалось SAHA_T; 11.09.2014 в 11:58.
SAHA_T вне форума  
Непрочитано 11.09.2014, 13:04  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Задержка импульса

Если не получается, то нужно упростить прогамму для начала. Выкинуть таблицы и обороты. Просто в main() настроить порты, таймер и прерывание, в регистр сравнения занести какое-нибудь число, например 1000. Затем в прерывании INT0 просто дёрнуть одной ножкой МК, а в прерывании по совпадению дрыгнуть другой ножкой. И всё.
Для начала добиться работоспособности этого куска. Подать импульсы на вход INT0 и посмотреть, как дёргаются ножки.
Вот, типа, пример:
Код:
void main(void)
{
	DDRB=0xff;  //определяем порт B на выход

	// настройка Таймера1
	TCCR1B=0x04
	TIMSK=0xE0;  //прерывания по переполнению и сравнению
	OCR1A=1000;
	
	// Настройка INT0
	GIMSK|=0x40; //разрешаем INT0
	MCUCR=0x03;
    
	sei();       //глобальное разрешение прерываний
    
	while(1){};
}

interrupt [EXT_INT0] void ext_int0_isr(void)
{
	TCNT1L=TCNT1H=0x00; // Сбрасываем Таймер1 = 0
	TCCR1B=0x02; // Запускаем Таймер1
	PORTB.3=1; 
	delay_us(100);
	PORTB.3=0;
}

interrupt [TIM1_COMPA] void timer1_compa_isr(void) 
{
	PORTB.4=1; 
	delay_us(100);
	PORTB.4=0;
	TCCR1B=0x00; // Останавливаем Таймер1
};

Последний раз редактировалось Yurkin2014; 11.09.2014 в 13:07.
Yurkin2014 вне форума  
Сказали "Спасибо" Yurkin2014
SAHA_T (11.09.2014)
Непрочитано 11.09.2014, 17:56  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка импульса

Юрий, спасибо за помощь !!!

С прерываниями я уже разобрался, и в данном коде прерывания работают прекрасно.
Такой нюанс, прерывания выполняются поочередно.

Исправил ошибки в коде и значения из таблицы начали сохраняться в регистре
OCR1AH=(int)(tablica[oborot]››8 ); //заносим задержку
OCR1AL=(int)tablica[oborot]; //в счётчик
Оборот пришлось уменьшить на 1 т.к отсчет происходит с нуля.

Тут также есть нюанс как только подать питание на МК то счетчик сразу начнет считать и при каждом вычитывании OCR1A будет происходить выходной импульс, следовательно в прерывании сравнения я обнуляю значение OCR1A, что бы в дальнейшем при простое оно не вызывалось.


Не пойму, что за глюк, принудительно заношу в oborot значение больше чем 369 к примеру 1000, далее условие срабатывает приравнивает 369, идем в таблицу, берем значение и заноси в регистр, но почему то заносится 114-е значение из таблицы 7100 вместо 369(17200), т.е происходит переполнение )
if(oborot›369)oborot = 369;
OCR1AH=(int)(tablica[oborot]››8 ); //заносим задержку
OCR1AL=(int)tablica[oborot]; //в счётчик

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

Ах, Yurkin2014, не потакайте "низменным пристрастиям" топикстартера!
Научите думать прежде, чем что-либо делать, а главное - думать - что делать хотя бы одного человека.


SAHA_T, плюньте Вы пока на кодинг.
Позже это окупится сторицей.

Расскажите своими словами логику работы программы для начала на верхнем уровне, вот прямо по шагам, с момента прихода импульса датчика на целый оборот.


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

Эх, я в неловком положении

*Расскажите своими словами логику работы программы для начала на верхнем уровне, вот прямо по шагам, с момента прихода импульса датчика на целый оборот.*
-срабатывает внешнее прерывание
-останавливаем счетчик
-берем значение из счетчика и смотрим в таблицу
-сбрасываем счетчик
-запускаем счетчик
-подсчитываем длительность импульса с помощью таблицы, т.е оборот равен определенной длительности импульса с шагом 256мкс
-далее условие на заниженные обороты, т.е нижний порог оборотов

-заносим значение в регистр сравнения, в данном случае OCR1A

т.е получается что мы заносим в регистр сравнения длительность импульса а нужно ....
SAHA_T вне форума  
Непрочитано 11.09.2014, 22:38  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Задержка импульса

Чем быстрее будет перезапущен счетчик, тем точнее определение периода оборота.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
 

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

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

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:37.


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