Обсуждаем контроллеры компании Atmel.
Ответить

Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 18:04:07

на вход АЦП Аттини 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
}



что тут не так? пока косяки идут на лог.анализаторе.... Таймер будет перезапускаться, если его снова запустить?
Вложения
пакет.jpg
(9.85 KiB) Скачиваний: 179

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 18:32:30

А зачем АЦП для ловли сигнала заранее нормированного под логический уровень???
:shock:
Для того, что на картинке достаточно прерывания по спаду.
И то, ежли у МК помимо отслеживания "куча прочих забот" имеется.
8)
Последний раз редактировалось BOB51 Сб мар 13, 2021 18:48:25, всего редактировалось 1 раз.

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 18:44:03

пакет - это звук с выхода усилителя. Там стоит выходной каскад в режиме ограничения, но тем не менее фронты могут быть нечеткие. Особая точность фиксации периода не нужна.

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 18:52:22

Уровень отсечки то всегда будет. В принципе сработка по уровню в какой-то точке всегда будет даже при наихудших условиях.
Другое дело ежли уровен где-то посрединке висеть будет.
:roll:
Возможно даже на адуринье подобное втиснуть можно...
(хотя мне для подобного ассемблер больше нравится).
Есть еще разновидности ждущих одновибраторов на логике-рассыпухе...
:roll:
Последний раз редактировалось BOB51 Сб мар 13, 2021 18:55:50, всего редактировалось 1 раз.

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 18:53:43

Если вы знаете, режимы работы компаратора и будет ли перезапускаться таймер по моему коду - подскажите, пожалуйста.

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 18:57:53

Режимы аппаратной начинки могу дать только под ассемблером.
Си лишь "в рамках референса" ардуиноIDE (без произвольного доступа к ресурсам аппаратных модулей МК).
:beer:

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 19:29:09

Если поможете "под ключ" - то меня устроил бы и ассемблер (я его уже забыл совсем от института). Буду признателен, обсудим в личке.

Ардуино - тем более устроит, но.... Сделано так, что Тинька прошивается в панельке под ISP и AVR Studio, затем переносится на плату также в панельку. Всякие аддоны на IDE под тиньку не хочу ставить.

Уточняю, что уровень - не нормируемый. На другой вход Тиньки заведено опорное напряжение, и потенциометром устанавливается уровень сравнения компаратора. Это не стоит пересматривать.
Последний раз редактировалось dim3740 Сб мар 13, 2021 19:55:26, всего редактировалось 1 раз.

Re: Одновибратор без перезапуска на Attyny 13

Сб мар 13, 2021 19:54:43

Под ардуиноIDE имеется вполне приличный перечень дополнительных платформ с аттини13.
Ограничения по установке платформ касаются только работы на компьютере с виндовс ХР (и то преодолимы).
Прошивка из ардуиноIDE через ISP программатор (который делается из ардуино-нано) также затруднений не вызывает.
Да и симулятор там имеется весьма солидный.
Так что можно попробовать.
:roll:
Вот вариант для аттини13 "в стиле адуринко"(платформа micro core лт MCUdude).
Контролируется изменение уровня на входе D1 и зажигается светик на D4 на время блокирующего интервала.

на всяк случай надо еще прошивку через ардуино IDE проверить да работу на реал - макете... Пока натуртесты на макетке не делал.
:beer:

Таки работает от кнопки...
:roll:

Как вариант можно работу с АЦП посмотреть - напрямую в референсе компрартора нет, а лезть в ассемблер - там больше времени на анализ и подготовку надо.
Да и схема должна быть в обязательном порядке.
8)

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 09:17:59

...

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

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 09:39:41

диаграмму приложил.

Если нужно, еще раз уточняю, что верхний (входной) сигнал условно нарисован нормируемым, т.е. логическим. В реалии - это звуковой сигнал в режиме ограничения, т.е. перегруженный. Я не знаю, как это понятнее написать... Число "импульсов" в пакете может быть различным, но период следования пакетов - задан в определенных границах. Поэтому является ВОЗМОЖНЫМ и определение параметров выходного сигнала - периода и длительности.
Вложения
33333.jpg
(9.06 KiB) Скачиваний: 145

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:28:36

В подобной конструкции наиболее сложная часть - нормирование и привязка к "земле" уровня отсутствия входного сигнала.
Состояние покоя на сигнальном входе МК должно быть то-ли логической единицей, то-ли "землей".
А вот во время самого сигнала - то уже произвольно - от gnd до +питания-0,5вольта (или наоборот - в зависимости какой уровень будет выбран как "отсутствие сигнала"). Простая привязка к опорному напряжению на неинвертирующем выводе компаратора может вызвать проблемы при наличии шумов... Да и усиление самого встроенного компаратора (именно в данном случае - аттини13) не поддается регулировке.
Основная проблема именно там и будет подстерегать.
Посему и конкретная схемка не помешает.
:roll:
Согласно Ваших диаграмм мой вышеприложенный СКОТч вполне выполнит задачу.
Разве что выходной сигнал надо инвертировать (у меня под светик сделан).
А вот ежли входной аналоговый да ненормированный сигнал гнать - тогда не помешает пересмотреть книжи Рюмика серии "1000 и одна микроконтроллерная схема" ( их на сегодня три книжи в серии...) или схемы формирователей-ограничителей любительских частотомеров.
:beer:

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:34:47

Если я правильно понял задачу, вход чисто логический. Со стороны сигнала, понять что на выходе звука. Если потребуется усилить, выпрямить и подать на компаратор, чтобы получить логический сигнал.
Уточняю задачу. Пришла первая пачка, формируем одиночный сигнал. Во время подачи сигнала игнорируем, что на входе. С какой частотой приходят пачки неважно. И сколько времени нет входного сигнала тоже не важно? Всё правильно?
Вообще хотелось бы понять, что за устройство вам требуется. И какие задачи устройство должно выполнять.

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:39:37

Да вот тут и неразбериха - судя по тому, что топикстартер выше написал у него входной сигнал сравнивается с заданным уровнем средствами компаратора тиньки. Статус "покоя"(отсутствия сигнала) в этом случае неопределен (неизвестна схемотехника).
Т.е. сигнал аналоговый (хотя и "покореженный").
А на приводимых диаграммах - вроде как "нормированная логика"...
Посему и разобраться в "тонкостях" проблематично.
:dont_know:

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:40:46

Я посмотрю скетч ...спасибо. Правда, его надо "привязывать" к компаратору все равно. Что касается точности - думаю, у меня требования к ним очень невелики. Важнее простота в данном случае. Аттини, переменный резистор, кондер по питанию - все. Входа, выхода, питание.

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:42:43

ТС, ответьте на вопросы выше. Вдогонку ещё один вопрос. Что с аналоговым сигналом? Размах и так далее.

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:51:56

Аналоговый сигнал снимается через типовой выход китайского МП3 плеера. На плеер записан семпл - это ограниченный, перегруженный короткий импульс звуковой частоты. Длительность - ту которую нужно для работы схемы. Пусть это 30 мс, и частота 2 кгц. Период следования не чаще 250 мс. Выход выпрямляем через однополупериодный диод. И подаем на компаратор Аттини без всяких "усилителей" и нормировщиков. Задача - мерять период следования "пакетов / импульсов". На аттини - возложена первая задача - преобразование формы и нормирование. На выход можно иметь сигнал любой скважности - важны только фронты для измерения. Задачу измерения НЕ рассматриваем! Это другой вопрос.

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 10:58:57

Если смотреть на ваши диаграммы, то всё просто. Много лишнего было:
Код:
#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
      }
   }
}

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 11:00:59

Я посмотрю скетч ...спасибо. Правда, его надо "привязывать" к компаратору все равно. Что касается точности - думаю, у меня требования к ним очень невелики. Важнее простота в данном случае. Аттини, переменный резистор, кондер по питанию - все. Входа, выхода, питание.

Если сигнал на входе уже нормирован по амплитуде, то компаратор там совершенно лишний.
Вот схемка макетки на которой тестировался СКОТч:
https://img.radiokot.ru/files/20529/2gpqssq40l.GIF
описаниа платформы под адуринку
https://github.com/MCUdude/MicroCore
8)
"без усилителей и нормировщиков" это задача АЦП, а не компаратора.
И в любом варианте при выпрямлении будет постоянная составляющая...
Опять же элементы схемотехники важны.
:roll:

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 11:04:43

NStorm, про то и речь))) Код в принципе работает ,(но ненадежно , он не мой), однако, подсказали сейчас, что таймер можно заменить делеем. Потом - что значит "по каждому переходу компаратора" - это любому фронту?

Добавлено after 2 minutes 39 seconds:
"без усилителей и нормировщиков" это задача АЦП, а не компаратора.
И в любом варианте при выпрямлении будет постоянная составляющая...
Опять же элементы схемотехники важны.
:roll:


Я тут чайник(( Компаратор - для меня это всегда тот же АЦП, только с устройством сравнения.

Re: Одновибратор без перезапуска на Attyny 13

Вс мар 14, 2021 11:06:25

Потом - что значит "по каждому переходу компаратора" - это любому фронту?

Ну это вообще-то слова были в исходном коде :)))
Но вообще нет. Срабатывать это будет когда на выходе компаратора будет 1.
Ответить