AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
04.01.2020, 11:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,017
Сказал спасибо: 3,025
Сказали Спасибо 3,199 раз(а) в 2,171 сообщении(ях)
|
Re: Большие плавные часы. Хвастаюсь.
Сообщение от b-612
|
Динамик греется только когда включается ШИМ
|
Было неясно, когда-же грелся динамик. Поэтому и столько годных вопросов.
__________________
Экзорцист 40-го уровня.
|
|
|
|
11.06.2022, 14:16
|
|
Прописка
Регистрация: 10.01.2010
Сообщений: 102
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 5 сообщении(ях)
|
Re: Большие плавные часы. Хвастаюсь.
Дошли руки портировать проект на ESP32
В связи с этим прошу помощи
Нужен кусок кода для работы с ШИМ-ом на ESP32 для вывода звука.
Знаю, что в ESP32 есть ЦАП, но мне проще ШИМ, чтобы не париться с усилителем.
Заранее спасибо !
|
|
|
|
17.06.2022, 12:33
|
|
Прописка
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
|
Re: Большие плавные часы. Хвастаюсь.
Используется ESP IDF.
Код:
|
void Init_PWM(void) {
ledc_timer_config_t ledc_timer = {
.speed_mode = LEDC_HIGH_SPEED_MODE,
.timer_num = LEDC_TIMER_0, // Using LED_Timer_0
.duty_resolution = LEDC_TIMER_8_BIT, // 8 bits
.freq_hz = 24000, // Set output frequency at 24 kHz
.clk_cfg = LEDC_AUTO_CLK // Clock -› Auto
};
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
ledc_channel_config_t ledc_channel = {
.speed_mode = LEDC_HIGH_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
.intr_type = LEDC_INTR_DISABLE,
.gpio_num = 5,
.duty = 128, // Set duty to 64/256
.hpoint = 0,
.channel = 0, // Channel [0..7]
.gpio_num = 32 // IO32
};
ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
}
void SetPwmChannel(uint8_t Value) {
ledc_channel_config_t ledc_channel = {
.speed_mode = LEDC_HIGH_SPEED_MODE,
.channel = 0,
.timer_sel = LEDC_TIMER_0,
.intr_type = LEDC_INTR_DISABLE,
.gpio_num = 32,
.duty = Value,
.hpoint = 0
};
if (Value == 0) {
ledc_channel.duty = 0;
}
ledc_channel_config(&ledc_channel);
} |
Мне не требовалось более 8 бит, потому функция принимает 8-ми битное значение на входе. Можете переписать под себя. Структура, вроди бы, принимает до 16 бит.
Плюс, для быстрого вывода можно использовать таймеры + DMA + буфер отсчётов.
Опять же, в моём случае, не требовался вывод звука через PWM. Подкинул разве что основную инициализацию.
Здесь больше информации. С примером чуть хуже.
|
|
|
|
20.06.2022, 00:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Большие плавные часы. Хвастаюсь.
Сообщение от ForcePoint
|
Было неясно, когда-же грелся динамик. Поэтому и столько годных вопросов.
|
Схему нам так и не показали... Грелся, когда ШИМ стоял в нуле и мембрана была притянута "вниз". Или ШИМ в единице - была притянута "вверх".
Если так, то "выключить" динамик можно было бы высокочастотным ШИМом.
А как на самом деле -
|
|
|
Сказали "Спасибо" makakus
|
|
|
20.06.2022, 05:23
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: Большие плавные часы. Хвастаюсь.
b-612, купите модуль усилителя D класса на aliexpress и не пытайтесь тратить время на его программную реализацию.
Еще одним решением может стать вывод из ESP32 цифрового потока на отдельный преобразователь с усилителем.
Конечно повторение широко распространённой традиции еще на XT слушать классику через speaker с несколькими вариациями кода можно считать гимнастикой ума, но такими темпами качественного звука придется ждать очень долго, а стерео и хорошая полифония…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:05.
|
|