| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Одновибратор без перезапуска на Attyny 13 https://radiokot.ru/forum/viewtopic.php?f=57&t=176007 |
Страница 1 из 2 |
| Автор: | dim3740 [ Сб мар 13, 2021 18:04:07 ] | ||
| Заголовок сообщения: | Одновибратор без перезапуска на Attyny 13 | ||
на вход АЦП Аттини 13 в режиме компаратора поступают пакеты импульсов (см фото) Период пакета - не менее 300 мс Нужно ловить первый перепад, выдавать сигнал на выход, игнорировать следующие в пакете и воспринимать новый перепад только после 280...290 мс Код: #define F_CPU 9600000UL // не обязательно #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> // тоже не нужно int main(void) { DDRB |= (1 << PB3); // выход TIMSK0 = (1<<TOIE0); // разрешить прерывание по переполнению таймера счетчика Т0 TCNT0 = 0x00; // обнулить счетный регистр sei(); ACSR|=(0<<ACIE); // прерывание по компаратору вЫкл ACSR|=(0<<ACIS1) | (1<<ACIS0); while(1) { if(ACSR&(1<<ACO)) // по каждому переходу компаратора { PORTB &= ~(1<<PB3); // выход в 0 TCCR0B = (1<<CS00) | (1<<CS02); // запуск таймера без перезапуска // с предделителем 1024(CLK = 1200000 Гц / 1024/256 = 4 Гц, 250 мс) } } } ISR(TIM0_OVF_vect) { TCCR0B = 0x00; // остановка таймера TCNT0 = 0x00; // обнуление счетного регистра PORTB |= (1<<PB3); // выход в 1 } что тут не так? пока косяки идут на лог.анализаторе.... Таймер будет перезапускаться, если его снова запустить?
|
|||
| Автор: | BOB51 [ Сб мар 13, 2021 18:32:30 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
А зачем АЦП для ловли сигнала заранее нормированного под логический уровень??? Для того, что на картинке достаточно прерывания по спаду. И то, ежли у МК помимо отслеживания "куча прочих забот" имеется. |
|
| Автор: | dim3740 [ Сб мар 13, 2021 18:44:03 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
пакет - это звук с выхода усилителя. Там стоит выходной каскад в режиме ограничения, но тем не менее фронты могут быть нечеткие. Особая точность фиксации периода не нужна. |
|
| Автор: | BOB51 [ Сб мар 13, 2021 18:52:22 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Уровень отсечки то всегда будет. В принципе сработка по уровню в какой-то точке всегда будет даже при наихудших условиях. Другое дело ежли уровен где-то посрединке висеть будет. Возможно даже на адуринье подобное втиснуть можно... (хотя мне для подобного ассемблер больше нравится). Есть еще разновидности ждущих одновибраторов на логике-рассыпухе... |
|
| Автор: | dim3740 [ Сб мар 13, 2021 18:53:43 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Если вы знаете, режимы работы компаратора и будет ли перезапускаться таймер по моему коду - подскажите, пожалуйста. |
|
| Автор: | BOB51 [ Сб мар 13, 2021 18:57:53 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Режимы аппаратной начинки могу дать только под ассемблером. Си лишь "в рамках референса" ардуиноIDE (без произвольного доступа к ресурсам аппаратных модулей МК).
|
|
| Автор: | dim3740 [ Сб мар 13, 2021 19:29:09 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Если поможете "под ключ" - то меня устроил бы и ассемблер (я его уже забыл совсем от института). Буду признателен, обсудим в личке. Ардуино - тем более устроит, но.... Сделано так, что Тинька прошивается в панельке под ISP и AVR Studio, затем переносится на плату также в панельку. Всякие аддоны на IDE под тиньку не хочу ставить. Уточняю, что уровень - не нормируемый. На другой вход Тиньки заведено опорное напряжение, и потенциометром устанавливается уровень сравнения компаратора. Это не стоит пересматривать. |
|
| Автор: | BOB51 [ Сб мар 13, 2021 19:54:43 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Под ардуиноIDE имеется вполне приличный перечень дополнительных платформ с аттини13. Ограничения по установке платформ касаются только работы на компьютере с виндовс ХР (и то преодолимы). Прошивка из ардуиноIDE через ISP программатор (который делается из ардуино-нано) также затруднений не вызывает. Да и симулятор там имеется весьма солидный. Так что можно попробовать. Вот вариант для аттини13 "в стиле адуринко"(платформа micro core лт MCUdude). Контролируется изменение уровня на входе D1 и зажигается светик на D4 на время блокирующего интервала. СпойлерКод: const byte test_input = 1; // 2; номер цифрового вывода, соответствующий входу // активный уровень равен изменению состояния (arduino pin D1) const byte test_output = 4; // номер цифрового выхода активный уровень =0 (arduino pin D4) const unsigned long wait_time = 300; // константа времени задержки в милисекундах // более максимальной длительности пакета volatile byte flag = 0; // передаточный флаг void pak_ap(); // объявление функции обработчика прерывания void setup() { // put your setup code here, to run once: digitalWrite(test_input,HIGH); digitalWrite(test_output,HIGH); pinMode(test_input,INPUT_PULLUP); pinMode(test_output,OUTPUT); attachInterrupt(digitalPinToInterrupt(test_input), pak_ap, CHANGE); } void loop() { // put your main code here, to run repeatedly: while(!flag) { } digitalWrite(test_output,LOW); delay (wait_time); flag=0; digitalWrite(test_output,HIGH); } void pak_ap() { flag=1; } на всяк случай надо еще прошивку через ардуино IDE проверить да работу на реал - макете... Пока натуртесты на макетке не делал. ![]() Таки работает от кнопки... Как вариант можно работу с АЦП посмотреть - напрямую в референсе компрартора нет, а лезть в ассемблер - там больше времени на анализ и подготовку надо. Да и схема должна быть в обязательном порядке. |
|
| Автор: | Demiurg [ Вс мар 14, 2021 09:17:59 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
... Изобрази картинкой с временными диаграммами, что приходит на вход, что хочешь получить на выходе. Словами, как ты написал не совсем понятно. |
|
| Автор: | dim3740 [ Вс мар 14, 2021 09:39:41 ] | ||
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 | ||
диаграмму приложил. Если нужно, еще раз уточняю, что верхний (входной) сигнал условно нарисован нормируемым, т.е. логическим. В реалии - это звуковой сигнал в режиме ограничения, т.е. перегруженный. Я не знаю, как это понятнее написать... Число "импульсов" в пакете может быть различным, но период следования пакетов - задан в определенных границах. Поэтому является ВОЗМОЖНЫМ и определение параметров выходного сигнала - периода и длительности.
|
|||
| Автор: | BOB51 [ Вс мар 14, 2021 10:28:36 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
В подобной конструкции наиболее сложная часть - нормирование и привязка к "земле" уровня отсутствия входного сигнала. Состояние покоя на сигнальном входе МК должно быть то-ли логической единицей, то-ли "землей". А вот во время самого сигнала - то уже произвольно - от gnd до +питания-0,5вольта (или наоборот - в зависимости какой уровень будет выбран как "отсутствие сигнала"). Простая привязка к опорному напряжению на неинвертирующем выводе компаратора может вызвать проблемы при наличии шумов... Да и усиление самого встроенного компаратора (именно в данном случае - аттини13) не поддается регулировке. Основная проблема именно там и будет подстерегать. Посему и конкретная схемка не помешает. Согласно Ваших диаграмм мой вышеприложенный СКОТч вполне выполнит задачу. Разве что выходной сигнал надо инвертировать (у меня под светик сделан). А вот ежли входной аналоговый да ненормированный сигнал гнать - тогда не помешает пересмотреть книжи Рюмика серии "1000 и одна микроконтроллерная схема" ( их на сегодня три книжи в серии...) или схемы формирователей-ограничителей любительских частотомеров.
|
|
| Автор: | Demiurg [ Вс мар 14, 2021 10:34:47 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Если я правильно понял задачу, вход чисто логический. Со стороны сигнала, понять что на выходе звука. Если потребуется усилить, выпрямить и подать на компаратор, чтобы получить логический сигнал. Уточняю задачу. Пришла первая пачка, формируем одиночный сигнал. Во время подачи сигнала игнорируем, что на входе. С какой частотой приходят пачки неважно. И сколько времени нет входного сигнала тоже не важно? Всё правильно? Вообще хотелось бы понять, что за устройство вам требуется. И какие задачи устройство должно выполнять. |
|
| Автор: | BOB51 [ Вс мар 14, 2021 10:39:37 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Да вот тут и неразбериха - судя по тому, что топикстартер выше написал у него входной сигнал сравнивается с заданным уровнем средствами компаратора тиньки. Статус "покоя"(отсутствия сигнала) в этом случае неопределен (неизвестна схемотехника). Т.е. сигнал аналоговый (хотя и "покореженный"). А на приводимых диаграммах - вроде как "нормированная логика"... Посему и разобраться в "тонкостях" проблематично.
|
|
| Автор: | dim3740 [ Вс мар 14, 2021 10:40:46 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Я посмотрю скетч ...спасибо. Правда, его надо "привязывать" к компаратору все равно. Что касается точности - думаю, у меня требования к ним очень невелики. Важнее простота в данном случае. Аттини, переменный резистор, кондер по питанию - все. Входа, выхода, питание. |
|
| Автор: | Demiurg [ Вс мар 14, 2021 10:42:43 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
ТС, ответьте на вопросы выше. Вдогонку ещё один вопрос. Что с аналоговым сигналом? Размах и так далее. |
|
| Автор: | dim3740 [ Вс мар 14, 2021 10:51:56 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Аналоговый сигнал снимается через типовой выход китайского МП3 плеера. На плеер записан семпл - это ограниченный, перегруженный короткий импульс звуковой частоты. Длительность - ту которую нужно для работы схемы. Пусть это 30 мс, и частота 2 кгц. Период следования не чаще 250 мс. Выход выпрямляем через однополупериодный диод. И подаем на компаратор Аттини без всяких "усилителей" и нормировщиков. Задача - мерять период следования "пакетов / импульсов". На аттини - возложена первая задача - преобразование формы и нормирование. На выход можно иметь сигнал любой скважности - важны только фронты для измерения. Задачу измерения НЕ рассматриваем! Это другой вопрос. |
|
| Автор: | NStorm [ Вс мар 14, 2021 10:58:57 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Если смотреть на ваши диаграммы, то всё просто. Много лишнего было: Код: #define F_CPU 9600000UL
#include <avr/io.h> #include <util/delay.h> int main(void) { DDRB |= (1 << PB3); // выход while(1) { if(ACSR&(1<<ACO)) // по каждому переходу компаратора { PORTB &= ~(1<<PB3); // выход в 1 _delay_ms(280); PORTB |= (1<<PB3); // выход в 0 } } } |
|
| Автор: | BOB51 [ Вс мар 14, 2021 11:00:59 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Я посмотрю скетч ...спасибо. Правда, его надо "привязывать" к компаратору все равно. Что касается точности - думаю, у меня требования к ним очень невелики. Важнее простота в данном случае. Аттини, переменный резистор, кондер по питанию - все. Входа, выхода, питание. Если сигнал на входе уже нормирован по амплитуде, то компаратор там совершенно лишний. Вот схемка макетки на которой тестировался СКОТч: https://img.radiokot.ru/files/20529/2gpqssq40l.GIF описаниа платформы под адуринку https://github.com/MCUdude/MicroCore "без усилителей и нормировщиков" это задача АЦП, а не компаратора. И в любом варианте при выпрямлении будет постоянная составляющая... Опять же элементы схемотехники важны. |
|
| Автор: | dim3740 [ Вс мар 14, 2021 11:04:43 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
NStorm, про то и речь))) Код в принципе работает ,(но ненадежно , он не мой), однако, подсказали сейчас, что таймер можно заменить делеем. Потом - что значит "по каждому переходу компаратора" - это любому фронту? Добавлено after 2 minutes 39 seconds: "без усилителей и нормировщиков" это задача АЦП, а не компаратора. И в любом варианте при выпрямлении будет постоянная составляющая... Опять же элементы схемотехники важны. Я тут чайник(( Компаратор - для меня это всегда тот же АЦП, только с устройством сравнения. |
|
| Автор: | NStorm [ Вс мар 14, 2021 11:06:25 ] |
| Заголовок сообщения: | Re: Одновибратор без перезапуска на Attyny 13 |
Потом - что значит "по каждому переходу компаратора" - это любому фронту? Ну это вообще-то слова были в исходном коде Но вообще нет. Срабатывать это будет когда на выходе компаратора будет 1. |
|
| Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


