Влияние одного выхода на другой!

выход на buzzer влияет на выход ШИМ

В этом форуме можно обсудить интерфейс программы, работу встроенных блоков, взаимодейсткие с Ардуино IDE и т.д.
Ответить
RobertScorpio
Рядовой
Сообщения: 45
Зарегистрирован: 03.11.2017{, 06:13}
Репутация: 0
Откуда: Челябинская обл.

Влияние одного выхода на другой!

#1

Сообщение RobertScorpio » 10.02.2019{, 17:40}

Добрый день!
Не знаю пока с чем связано.. делаю проект управления печкой на отработке. есть в проекте несколько выходов ШИМ.. Всё работало, пока не добавил buzzer (пьезописчалку) и вот когда она начинает работать (по программе прерывисто с частотой 1000гц) то выход 5 шим (который в этот момент задействован по программе) так же начинает прерывисто включаться/выключаться. Удаляю блок буззера и всё становиться нормально.
Что не так делаю и где исправить, подскажите.
Кстати, сначала писчалку подцеплял к выходу 9 (с ШИМом) но в дискретном режиме и так же другой выход (5) с ШИМом прерывался, думал может как-то влияние выходов с ШИМ влияют. Посадил писчалку на дискретный 12-й выход- результат такой-же

С уважением!

Отправлено спустя 55 минут 4 секунды:
Вот что заметил... Изначально частота буззера стоит 1000гц, в таком режиме это сильно влияет на другой выход с ШИМом. Меняю частоту буззера на 400- влияние стало менее. Т.е. не хватает вычислительных способностей процессора?

Аватара пользователя
RedSky
Сержант
Сообщения: 201
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 37
Откуда: Днепропетровск

Влияние одного выхода на другой!

#2

Сообщение RedSky » 10.02.2019{, 19:08}

В новых версиях IDE вроде как tone может исполнять полифонию, для чего задействуется несколько таймеров. Возможно используется и таймер 0.
СпойлерПоказать
Чтобы генерировать прямоугольно-волновые ноты слышимого диапазона, библиотека Tone использует аппаратные таймеры микроконтроллера Arduino.

Генерировать ноты можно на любом контакте Arduino. Количество нот, которые можно проигрывать одновременно, зависит от количества аппаратных таймеров (совместимых с CTC), имеющихся у контроллера.

ATmega8: два таймера (2 и 1)
ATmega168/328: три таймера (2, 1 и 0)
ATmega1280: 6 таймеров (2, 3, 4, 5, 1 и 0)
В скобках указан порядок распределения таймеров. Кроме того, timer0 – это очень чувствительный таймер, поскольку отвечает за функцию millis() и ШИМ.

Диапазон частот, которые может генерировать библиотека, зависит от тактовой частоты микроконтроллера и используемого таймера. Расчет этого диапазона осуществляется следующим образом (здесь первая запись – это частота микроконтроллера, вторая – нижняя граница диапазона для 8-битного таймера, третья – нижняя граница для 16-битного таймера, а четвертая – верхняя граница частотного диапазона):

|8 MHz |16 Hz |1 Hz (1/16 Hz) |4 MHz |
|16 MHz |31 Hz |1 Hz (1/8 Hz) |8 MHz |
Хотя верхней границей частотного диапазона может быть и 8 МГц, верхняя граница диапазона человеческого слуха, как правило, не превышает 20 КГц.

Точность ноты зависит от значения, заданного для предварительного делителя частоты. Благодаря этому делению происходит квантование частоты.

Если вы используете 16-битный таймер (например, timer1 или timer3, timer4, timer5 на 1280), то можете генерировать «ноты» до 1/8 Гц (один цикл каждые 8 секунд), но библиотека Tone, задавая частоты, принимает только целочисленные значения.

Поскольку функция play() принимает только беззнаковые целочисленные значения, максимальной частотой, которую можно сгенерировать, будет 65535 Гц. Кроме того, после округления эта цифра превращается в «ноту» с частотой 65573,77 Гц (на платах с тактовой частотой в 16 МГц). Следовательно, если в функции play() указать для частоты более высокие значения, вы все равно не сможете достичь результата лучше 80 rГц, потому что переключение контактов осуществляется на программном уровне. Причем каждое такое переключение требует КАК МИНИМУМ 50 с лишним циклов.
Отсюда: http://wikihandbk.com/wiki/Arduino:Библиотеки/Tone
Более точно можно сказать увидев проект и зная версию IDE.

Аватара пользователя
Dev1
Капитан
Сообщения: 973
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 38
Откуда: Гондурас

Влияние одного выхода на другой!

#3

Сообщение Dev1 » 10.02.2019{, 20:13}

Лучше вообще не использовать одновременно баззер(тоне) и шим. Используйте баззер со встроенным генератором, либо сделать отдельный на 555 и включать(управлять) от пина. :fie:
Win7-64 FLProg v4.2.4 Portable, external IDE 1.8.9 + Last Libs :fie:

RobertScorpio
Рядовой
Сообщения: 45
Зарегистрирован: 03.11.2017{, 06:13}
Репутация: 0
Откуда: Челябинская обл.

Влияние одного выхода на другой!

#4

Сообщение RobertScorpio » 10.02.2019{, 22:49}

Пока исключил баззер из проекта, найду со встроенным, тогда сделаю просто дискретное управление этой писчалкой

RobertScorpio
Рядовой
Сообщения: 45
Зарегистрирован: 03.11.2017{, 06:13}
Репутация: 0
Откуда: Челябинская обл.

Влияние одного выхода на другой!

#5

Сообщение RobertScorpio » 12.02.2019{, 14:26}

Еще столкнулся с одной ситуацией с ШИМ выходами, правда она была еще ранее, до написания этой темы и вот сейчас опять.. первый раз решилось переписыванием программы с определенного шага. Второй раз переписывать программу не стал, решил попробовать так реанемировать.
В проекте задействовано три выхода ШИМ.. Всё работало нормально. В какой-то момент написания программы (дополнения различных функций, причем не связанных с этими выходами) перестает работать один конкретный выход ШИМ.. Заливаю в другой контроллер- тоже самое. Причем данные на входе этого ШИМ-выхода присутствуют.. Заливаю предыдущий проект- всё работает. Поменял его на другой выход ШИМ и пока работает нормально.
Что не так и что надо изменить, учесть при написании?!

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 302
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 3
Откуда: Augsburg
Имя: Alexander

Влияние одного выхода на другой!

#6

Сообщение Grafsaxar » 12.02.2019{, 14:54}

RobertScorpio писал(а):
12.02.2019{, 14:26}
Еще столкнулся с одной ситуацией с ШИМ выходами
При работе с камнем мега328 это штатная ситуация.

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

так же имел проблеммы с пищалкой. Пришлось добавить микруху PCA9685

PCA9685
Если ты будешь колоть дрова самостоятельно, то они согреют тебя дважды.

RobertScorpio
Рядовой
Сообщения: 45
Зарегистрирован: 03.11.2017{, 06:13}
Репутация: 0
Откуда: Челябинская обл.

Влияние одного выхода на другой!

#7

Сообщение RobertScorpio » 13.02.2019{, 09:29}

За информацию по микросхеме расширения Спасибо!

RobertScorpio
Рядовой
Сообщения: 45
Зарегистрирован: 03.11.2017{, 06:13}
Репутация: 0
Откуда: Челябинская обл.

Влияние одного выхода на другой!

#8

Сообщение RobertScorpio » 24.03.2019{, 16:34}

Grafsaxar писал(а):
12.02.2019{, 14:54}
При работе с камнем мега328 это штатная ситуация.
Если собрать на mega 2560 ситуация изменится?

Ответить

Вернуться в «Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!)»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость