Например TDA7294

Форум РадиоКот • Просмотр темы - Управление микросхемой M62446AFP
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт июн 24, 2025 05:59:16

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Управление микросхемой M62446AFP
СообщениеДобавлено: Чт авг 07, 2014 20:30:43 
Родился
Аватар пользователя

Зарегистрирован: Пн май 02, 2011 12:23:25
Сообщений: 15
Рейтинг сообщения: 0
Здравствуйте!
Есть сабвуфер Sven HT-485, но нет к нему ПДУ, что делает его полностью бревном. (да, купить пульт проще... но не интересно и затратно )
Так то он работает, но было решено срезать часть мозгов (можно сказать основных) это микроконтроллер, который управляет кодеком и 6-ти канальным регулятором громкости/баса/тембра, и собственно сам кодек! Но суть вопроса не в этом.
Имеется Arduino Mega2560, микросхема M62446AFP (выводы управления имеют названия CLK, DATA, LATCH), а так же даташит к микросхеме.

Помогите разобраться, что означают буквы с цифрами D01,D11,D21,D31 и т.д. (стр. 8-12)
если возможно, напишите кусок кода с примером установки значения, например для установки басса +0dB

П.С. как я понимаю данные передаются по интерфейсу i2c...


Вложения:
datasheet.pdf [5.02 MiB]
Скачиваний: 808
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Пт авг 08, 2014 17:39:41 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
Explorer200 писал(а):
П.С. как я понимаю данные передаются по интерфейсу i2c..

по спи
Explorer200 писал(а):
что означают буквы с цифрами D01,D11,D21,D31 и т.д.

там же написано на 8й странице
д0... отвечают за уровень высоких частот

Explorer200 писал(а):
напишите кусок кода с примером установки значения, например для установки басса +0dB

лень писать код, это очень большие мозговые затраты
алгоритм такой:

мелкасхема управляется одной посылкой 16 бит, т.е. тебе нужна рабочая переменная типа инт
есть 4 вида посылок и отличаются они ключом из пары первых 2х бит де и дф

возьмем самый простой пример регулировки громкости стереовхода (диаграмма 2, стр 7)
тебе нужна маска из первых 2х бит, которая будет определять режим
#define VOLUME_RL 1

так же тебе нужны 2 переменные volume_l volume_r
в них загоняеш значение от 0 до 80, что будет соответствовать регулировке громкости от 0 до -80дб, что должно хватать
все просто

потом делаеш магию
data = data | (volume_l<<8)
data = data | (volume_r<<2)
data = data | VOLUME_RL

так формируеш переменну и посылаеш ее в регистр аппаратного спи контроллера и все

то же самое для других режимов, только маски надо задать дефайном, сдвинуть на нужное количество бит и наложить маску по ИЛИ

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Сб авг 09, 2014 11:31:40 
Родился
Аватар пользователя

Зарегистрирован: Пн май 02, 2011 12:23:25
Сообщений: 15
Рейтинг сообщения: 0
kalobyte писал(а):
Explorer200 писал(а):
П.С. как я понимаю данные передаются по интерфейсу i2c..

по спи

немного не ожиданно, так как SPI использую в основном для внутрисхемного программирования, к тому же имеет 4 вывода, а в моем случае всего 3

kalobyte писал(а):
Explorer200 писал(а):
что означают буквы с цифрами D01,D11,D21,D31 и т.д.

там же написано на 8й странице
д0... отвечают за уровень высоких частот

это то я понял, почему то когда увидел эти таблицы, вспомнилось рисование символов для LCD, но на него есть готовая библиотека...

kalobyte писал(а):
Explorer200 писал(а):
напишите кусок кода с примером установки значения, например для установки басса +0dB

лень писать код, это очень большие мозговые затраты
алгоритм такой:

мелкасхема управляется одной посылкой 16 бит, т.е. тебе нужна рабочая переменная типа инт
есть 4 вида посылок и отличаются они ключом из пары первых 2х бит де и дф

возьмем самый простой пример регулировки громкости стереовхода (диаграмма 2, стр 7)
тебе нужна маска из первых 2х бит, которая будет определять режим
#define VOLUME_RL 1

так же тебе нужны 2 переменные volume_l volume_r
в них загоняеш значение от 0 до 80, что будет соответствовать регулировке громкости от 0 до -80дб, что должно хватать
все просто

потом делаеш магию
data = data | (volume_l<<8)
data = data | (volume_r<<2)
data = data | VOLUME_RL

так формируеш переменну и посылаеш ее в регистр аппаратного спи контроллера и все

то же самое для других режимов, только маски надо задать дефайном, сдвинуть на нужное количество бит и наложить маску по ИЛИ

уже становится более понятно, это понятно data = data | (volume_r<<2), пропускаются два правых разряда, которые выбирают режим для настройки.
а вот это не понятно data = data | (volume_l<<8) почему на 8 сдвиг, а не на 9, ведь правые два разряда +7 разрядов настройки правого канала = 9
осталось по шарить как работать по SPI


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Сб авг 09, 2014 20:12:19 
Родился
Аватар пользователя

Зарегистрирован: Пн май 02, 2011 12:23:25
Сообщений: 15
Рейтинг сообщения: 0
вот только остается не понятно что делать с портами latch и clk оставить в покое?

Код:
int latchPin = 8;
int dataPin = 11;
int clockPin = 12;
int volume_l = 20;
int volume_r = 20;
int data;

#define VOLUME_RL 1
void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
 
 data = data | (volume_l<<8);
 data = data | (volume_r<<2);
 data = data | VOLUME_RL;
 digitalWrite(dataPin, data);
}

что то на калякал, надо будет проверить, а пока так компилировалось
пока что в статичном варианте, дабы мозг сильно не насиловать

п.с. делаю для ардуины


Вернуться наверх
 
В продаже новые LED-драйверы XLC компании MEAN WELL с диммингом нового поколения

Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Сб авг 09, 2014 23:50:42 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
Explorer200 писал(а):
так как SPI использую в основном для внутрисхемного программирования

спи используется для синхронной последовательной передачи в 2 направления на много устройств
и2ц может передавать только на 127 и только в одном направлении

протоколы не привязаны ни к чему

Explorer200 писал(а):
а в моем случае всего 3

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

Explorer200 писал(а):
почему на 8 сдвиг, а не на 9,

может и 9, сейчас не помню и вполне мог протупить
я ж говорю, что надо писать код на живом примере

Explorer200 писал(а):
осталось по шарить как работать по SPI

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

алгоритм такой
выставить сигнал разрешения в 1 или 0 по даташиту
выставить 1 или 0 на выводе данных

дернуть клок 1 раз
сдвинуть на 1 бит ту переменную, что хранит 16 бит данных для посылки в мс

и так 16 раз в цикле
подробности у меня на сцайте расписаны проще некуда

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Вс авг 10, 2014 08:35:10 
Родился
Аватар пользователя

Зарегистрирован: Пн май 02, 2011 12:23:25
Сообщений: 15
Рейтинг сообщения: 0
kalobyte писал(а):
алгоритм такой
выставить сигнал разрешения в 1 или 0 по даташиту
выставить 1 или 0 на выводе данных

дернуть клок 1 раз
сдвинуть на 1 бит ту переменную, что хранит 16 бит данных для посылки в мс

и так 16 раз в цикле
подробности у меня на сцайте расписаны проще некуда

чего я и боялся, это усложняет дело


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Вс авг 10, 2014 23:49:54 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
ну так проще использовать аппаратный спи
правда он там вроде бы 8 битный, так что придется порезать

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Пн авг 11, 2014 09:17:29 
Родился
Аватар пользователя

Зарегистрирован: Пн май 02, 2011 12:23:25
Сообщений: 15
Рейтинг сообщения: 0
Код:
#include <LiquidCrystal.h>
LiquidCrystal lcd(52, 50, 48, 46, 44, 42);

//Пин подключен к ST_CP входу 74HC595
int latchPin = 8;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 12;
//Пин подключен к DS входу 74HC595
int dataPin = 11;


int volume_l = 20;
int volume_r = 20;
int nastr=1;
int data;
int govno;
int rez;
void setup() {
    lcd.begin(16, 2); 
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
 
}
void loop() {
 
 data = data | (volume_l<<9);
 data = data | (volume_r<<2);
 data = data | nastr;
 govno=data;
 
 for (int i = 0; i < 16; i++) {
rez=!!(govno&(1<<i+2));
    delay(50);
    lcd.print(rez);
    lcd.setCursor(0, 1);
    lcd.print(i);
    lcd.setCursor(5, 1);
    lcd.print(govno);
    delay(300);
    lcd.clear();
 }
}

пока что пытаюсь вывести результат действий цикла на лсд
выходит так, data = 10321, с подобранным (методом тыка) сдвигом вылазит это: 0010100001010000
как видно, съедает один последний бит (или больше...). Должно быть : 0010100001010001

п.с. пример использовал от сдвигового регистра


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Управление микросхемой M62446AFP
СообщениеДобавлено: Пн авг 11, 2014 14:36:27 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
rez=!!(govno&(1<<i+2));
херня какая-то
лучше передавай в консоль вывод

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y