Фильтр АЦП atmega 8 по нижней границе

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

kote52 писал(а): Давай те код,
пример кода не сколькими сообщениями выше.
Вы сами начните и вам помогут.
kote52 писал(а):Вообще есть мысли смотреть регистр TIFR1
неверно
Реклама
Встал на лапы
Сообщения: 121
Зарегистрирован: Пт мар 19, 2021 08:58:45

Сообщение kote52 »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4080747#p4080747"]пример кода не сколькими сообщениями выше.[/uquote]
та реализация для neid и под его задачи... я же более усложнил вопрос "если мне нужно понимать когда высокий уровень наступил и делать какое либо действие, по длительности - это 500us, а не просто считать период равный 1ms, т.е. = 1 переполнению. т.е. если выход настрое на инвертируемый, и заполнение 50% сначало ждем в периоде пока пройдет низкий уровнь, и как только появляется высокий вот тогда какое либо действие" Так что пока "вежливый" сарказм у вас тут, с этим в соседнюю тему ATmega + 12bit ADC, там вас ждет собеседник по уровню из церковно приходской школы, я же не претендую и не за этим на форум пришел!)

Добавлено after 51 minute 47 seconds:
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4080552#p4080552"]А чего вы хотите добиться?[/uquote]
Я добиваюсь от более опытных людей мне подать на что мне смотреть или как рассуждать, и по сути только Вы и Starichok51 что то сказали, но его метод я пока просто отставил в сторону, и хотел еще выслушать форумчан с их идеями, а к методу Starichok51 я тоже вернусь... Метод Dimon456 иной и в нем по мойму есть решение, я не понимаю на что смотреть, человек же ходит вокруг да около - чего он хочет... научить? он же говорил что можно как то интересней все обыграть в споре с Starichok51.
Задачи ТС были такими да. Мои я обрисовал, ТС не против вроде что в его теме. Написал еще раз сообщение выше в ответе Dimon456!
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4080552#p4080552"]Если синхронизироваться с ШИМом - пожалуйста, вот вам два прерывания на начало и конец импульса.
Могу только повторить: скорее всего, я с какого-то момента потерял нить рассуждения. ТС вроде бы хотел измерять по нижнему уровню ШИМа. Значит по TIMERx_COMPy можно запускать преобразование. Ну а там по алгоритму: можно просто выкинуть первое и ограничиться вторым. А можно складывать пока не наступит TIMERx_OVF - тогда посчитать среднее арифметическое из того что успело намериться.[/uquote]
т.е. запустить TIMERx_COMPy и TIMERx_OVF из одного я буду знать начало импульса, из другого когда он закончится?
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Спойлер

Код: Выделить всё

ISR(TIMER1_OVF_vect)
{	
	// сюда попадаем при нарастающем фронте 
}

ISR(TIMER1_COMPA_vect)
{
	// сюда попадаем при спадающем фронте 
}


#define PERIOD_kHz 7999UL     //настроим Т1 на 1мс (1 кГц) = 8000000/1000Гц=8000-1=7999
#define IGLA   500                //Импульс 40.0%

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=ICR1
// OC1A output: Disconnected
// OC1B output: Non-Inverted PWM
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 1 ms
// Output Pulse(s):
// OC1B Period: 1 ms Width: ... ms
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (0<<WGM10);	 // OC1B output: Non-Inverted PWM
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); 

TCNT1=0;

ICR1=0x1F3F;	// 1F3F(7999) - 1кГц - 1.0000 ms

OCR1A=0;

OCR1B = (PERIOD_kHz*(IGLA))*0.001;				// 40% OC1B output: Non-Inverted PWM

OCR1A=OCR1B;	// 

// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (1<<OCIE1A) | (1<<TOIE1);

sei();
Встал на лапы
Сообщения: 121
Зарегистрирован: Пт мар 19, 2021 08:58:45

Сообщение kote52 »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4080787#p4080787"]
Спойлер

Код: Выделить всё

ISR(TIMER1_OVF_vect)
{	
	// сюда попадаем при нарастающем фронте 
}

ISR(TIMER1_COMPA_vect)
{
	// сюда попадаем при спадающем фронте 
}
[/uquote]
Спасибо! Надеюсь вы меня поняли, что прежде чем написать это, то мне надо понимать что я двигаюсь в правильном направление, когда сомнения ясно дело не будешь писать этого в форуме! И кстати в даташит я полез читать про TIFR регистр, исходя из ваших слов - "Можно все на одном таймере сделать, если знать как работает таймер". Значит чего то не дочитал или не знал об его устройстве.
Еще раз всем спасибо. Буду в практике пробовать применять!
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 19097
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

Dimon456, а зачем ты разделил прерывания на канал А, а выход ШИМ на канал В?
всё это может прекрасно работать только на одном канале - и прерывания и выход.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Starichok51, что же вы то не сделали? делайте.
Реклама
Модератор
Аватара пользователя
Сообщения: 19097
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

а я не делал и делать не собираюсь - мне это не нужно.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Встал на лапы
Сообщения: 121
Зарегистрирован: Пт мар 19, 2021 08:58:45

Сообщение kote52 »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4080886#p4080886"]а я не делал и делать не собираюсь - мне это не нужно.[/uquote]
В ЭТОЙ ТЕМЕ ИНТЕРЕСНЫ ИДЕИ И ПРИМЕРЫ РЕАЛИЗАЦИЙ ЭТИХ ИДЕЙ, а так же свежие идеи на тематику темы! Выяснение отношений и бадалово и прочие парнокопытные позывы, на кухню к жене, если есть... В первую очередь это к тебе Starichok51!
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

У жены есть скалка, а местами сковородка.
Starichok51 писал(а):мне это не нужно
а что вам нужно?
Starichok51 писал(а):то проверяешь пин этого порта
Добавлено after 9 minutes 44 seconds:
kote52 писал(а):то мне надо понимать что я двигаюсь в правильном направление
Мой студент то же двигался точно в таком же правильном направлении, и удвигался до водителя яндекс-такси.
Правильное направление - это то направление, до которого вы сами дошли, а не подсмотрели чужое решение. Вам ясно было сказано
Dimon456 писал(а):пример кода не сколькими сообщениями выше.
плюс
COKPOWEHEU писал(а):По прерыванию TIMERx_COMPY для прямого ШИМ попадаете на низкий уровень на выходе, по TIMERx_OVF - на высокий.
Теперь отвечаю на вопрос
Starichok51 писал(а):а зачем ты разделил прерывания на канал А, а выход ШИМ на канал В?
так интереснее будет, может kote52 сам додумается.
Встал на лапы
Сообщения: 121
Зарегистрирован: Пт мар 19, 2021 08:58:45

Сообщение kote52 »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4081080#p4081080"]
kote52 писал(а):то мне надо понимать что я двигаюсь в правильном направление
Мой студент то же двигался точно в таком же правильном направлении, и удвигался до водителя яндекс-такси.
Правильное направление - это то направление, до которого вы сами дошли, а не подсмотрели чужое решение. Вам ясно было сказано
Dimon456 писал(а):пример кода не сколькими сообщениями выше.
плюс
COKPOWEHEU писал(а):По прерыванию TIMERx_COMPY для прямого ШИМ попадаете на низкий уровень на выходе, по TIMERx_OVF - на высокий.
[/uquote]
Сам я не знал и не понимал, что можно и по совпадению и по переполнению в таймере работать одновременно((( ... но после поледнего сообщения COKPOWEHEU, уже шел к этому и даже задал ему вопрос по этому поводу, потом вы прислали код... Угрызения совести меня не мучают по той причине, что без вас - я бы не понял всех тонкостей реализации поставленной мной задачи!

[uquote="Dimon456",url="/forum/viewtopic.php?p=4081080#p4081080"]
Starichok51 писал(а):а зачем ты разделил прерывания на канал А, а выход ШИМ на канал В?
так интереснее будет, может kote52 сам додумается.[/uquote]
Вчера вечером я научился попадать в нужные мне интервалы времени ШИМ сигнала... В протусе потвердил симуляцией.
Предположу, это было сделано чтоб друг другу не мешать, с помощью канал А я могу попасть в любую точку периода задав регистру OCR1A иное значение, отличное от PWR.
Модератор
Аватара пользователя
Сообщения: 19097
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

kote52 писал(а):Предположу, это было сделано чтоб друг другу не мешать, с помощью канал А я могу попасть в любую точку периода задав регистру OCR1A иное значение, отличное от PWR.
да, это можно сделать.
изменяя число в OCR1A, можно попасть в любую точку периода. хоть в заведомый ноль на выходе, хоть в заведомую единицу на выходе, а не именно на самый фронт переключения.
но прерывание по переполнению все равно будет срабатывать на фронте. только прерывание по совпадению ты может "двигать" внутри периода.
важно помнить, что число в OCR1A не должно превышать число в OCR1B.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

Starichok51 писал(а):изменяя число в OCR1A, можно попасть в любую точку периода. хоть в заведомый ноль на выходе, хоть в заведомую единицу на выходе
ок
Starichok51 писал(а):важно помнить, что число в OCR1A не должно превышать число в OCR1B.
хм... а как же тогда попасть "в заведомый ноль на выходе" с запасом времени на переходные процессы
ohmycode!
primuss3.com
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

slav0n, применим оверсемплинг и попадем куда угодно.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

думай пилу 1 мВ/с
ohmycode!
primuss3.com
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Это нормальную плату надо городить.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

та ничего там городить не надо
просто берешь ионистор 10 фарад и заряжаешь стабильным током 10 мА
ohmycode!
primuss3.com
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

А если нет ионистра, тогда как?
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

бери 100 деревянных и иди в магаз за ним
ohmycode!
primuss3.com
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

slav0n писал(а):и иди в магаз
450км, только китайцы, доставка около 2 месяцев.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="slav0n",url="/forum/viewtopic.php?p=4081143#p4081143"]хм... а как же тогда попасть "в заведомый ноль на выходе" с запасом времени на переходные процессы[/uquote]
Выставить OCR1B < OCR1A < TOP. А как иначе? Если у вас физически не хватает времени паузы, куда вы надеетесь попасть?
TOP если что это число, до которого считает таймер. Может быть 256, может ICR или что-то еще. Timer1 гибкий.
Ответить

Вернуться в «AVR»