Страница 4 из 7
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 12:46:23
Dimon456
kote52 писал(а): Давай те код,
пример кода не сколькими сообщениями выше.
Вы сами начните и вам помогут.
kote52 писал(а):Вообще есть мысли смотреть регистр TIFR1
неверно
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 13:51:36
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 из одного я буду знать начало импульса, из другого когда он закончится?
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 14:06:27
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();
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 14:23:42
kote52
[uquote="Dimon456",url="/forum/viewtopic.php?p=4080787#p4080787"]
Спойлер
Код: Выделить всё
ISR(TIMER1_OVF_vect)
{
// сюда попадаем при нарастающем фронте
}
ISR(TIMER1_COMPA_vect)
{
// сюда попадаем при спадающем фронте
}
[/uquote]
Спасибо! Надеюсь вы меня поняли, что прежде чем написать это, то мне надо понимать что я двигаюсь в правильном направление, когда сомнения ясно дело не будешь писать этого в форуме! И кстати в даташит я полез читать про TIFR регистр, исходя из ваших слов - "Можно все на одном таймере сделать, если знать как работает таймер". Значит чего то не дочитал или не знал об его устройстве.
Еще раз всем спасибо. Буду в практике пробовать применять!
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 17:46:25
Starichok51
Dimon456, а зачем ты разделил прерывания на канал А, а выход ШИМ на канал В?
всё это может прекрасно работать только на одном канале - и прерывания и выход.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 18:13:16
Dimon456
Starichok51, что же вы то не сделали? делайте.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 19:01:52
Starichok51
а я не делал и делать не собираюсь - мне это не нужно.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Вт авг 24, 2021 20:04:56
kote52
[uquote="Starichok51",url="/forum/viewtopic.php?p=4080886#p4080886"]а я не делал и делать не собираюсь - мне это не нужно.[/uquote]
В ЭТОЙ ТЕМЕ ИНТЕРЕСНЫ ИДЕИ И ПРИМЕРЫ РЕАЛИЗАЦИЙ ЭТИХ ИДЕЙ, а так же свежие идеи на тематику темы! Выяснение отношений и бадалово и прочие парнокопытные позывы, на кухню к жене, если есть... В первую очередь это к тебе Starichok51!
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 08:43:10
Dimon456
У жены есть скалка, а местами сковородка.
Starichok51 писал(а):мне это не нужно
а что вам нужно?
Starichok51 писал(а):то проверяешь пин этого порта
Добавлено after 9 minutes 44 seconds:
kote52 писал(а):то мне надо понимать что я двигаюсь в правильном направление
Мой студент то же двигался точно в таком же правильном направлении, и удвигался до водителя яндекс-такси.
Правильное направление - это то направление, до которого вы сами дошли, а не подсмотрели чужое решение. Вам ясно было сказано
Dimon456 писал(а):пример кода не сколькими сообщениями выше.
плюс
COKPOWEHEU писал(а):По прерыванию TIMERx_COMPY для прямого ШИМ попадаете на низкий уровень на выходе, по TIMERx_OVF - на высокий.
Теперь отвечаю на вопрос
Starichok51 писал(а):а зачем ты разделил прерывания на канал А, а выход ШИМ на канал В?
так интереснее будет, может
kote52 сам додумается.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 09:51:52
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.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 10:08:45
Starichok51
kote52 писал(а):Предположу, это было сделано чтоб друг другу не мешать, с помощью канал А я могу попасть в любую точку периода задав регистру OCR1A иное значение, отличное от PWR.
да, это можно сделать.
изменяя число в OCR1A, можно попасть в любую точку периода. хоть в заведомый ноль на выходе, хоть в заведомую единицу на выходе, а не именно на самый фронт переключения.
но прерывание по переполнению все равно будет срабатывать на фронте. только прерывание по совпадению ты может "двигать" внутри периода.
важно помнить, что число в OCR1A не должно превышать число в OCR1B.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 11:00:27
slav0n
Starichok51 писал(а):изменяя число в OCR1A, можно попасть в любую точку периода. хоть в заведомый ноль на выходе, хоть в заведомую единицу на выходе
ок
Starichok51 писал(а):важно помнить, что число в OCR1A не должно превышать число в OCR1B.
хм... а как же тогда попасть "в заведомый ноль на выходе" с запасом времени на переходные процессы
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 18:29:02
Dimon456
slav0n, применим оверсемплинг и попадем куда угодно.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 18:54:20
slav0n
думай пилу 1 мВ/с
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 19:44:19
Dimon456
Это нормальную плату надо городить.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Ср авг 25, 2021 23:06:23
slav0n
та ничего там городить не надо
просто берешь ионистор 10 фарад и заряжаешь стабильным током 10 мА
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Чт авг 26, 2021 08:40:32
Dimon456
А если нет ионистра, тогда как?
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Чт авг 26, 2021 08:45:27
slav0n
бери 100 деревянных и иди в магаз за ним
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Чт авг 26, 2021 08:50:36
Dimon456
slav0n писал(а):и иди в магаз
450км, только китайцы, доставка около 2 месяцев.
Re: Фильтр АЦП atmega 8 по нижней границе
Добавлено: Чт авг 26, 2021 08:53:21
COKPOWEHEU
[uquote="slav0n",url="/forum/viewtopic.php?p=4081143#p4081143"]хм... а как же тогда попасть "в заведомый ноль на выходе" с запасом времени на переходные процессы[/uquote]
Выставить OCR1B < OCR1A < TOP. А как иначе? Если у вас физически не хватает времени паузы, куда вы надеетесь попасть?
TOP если что это число, до которого считает таймер. Может быть 256, может ICR или что-то еще. Timer1 гибкий.