Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



PT2322 и Bascom

Сообщений 1 страница 11 из 11

1

Доброго дня, уважаемые знатоки !

Решил поуправлять этой микросхемой - делаю усилитель 2.1. А что-то никак. Все вроде по даташиту:
(пока только с общей громкостью разобраться хочу)

Config Sda = Portc.4                                        ' I2C Data
Config Scl = Portc.5                                        ' I2C Clock

I2cstart
I2cwbyte &B10001000                                         ' Адрес PT2322
I2cwbyte &B11111111
I2cwbyte &B11000111                                         'Начальная установка входов PT2322
I2cstop

I2cstart
I2cwbyte &B10001000                                         ' Адрес PT2322
I2cwbyte &B11100111                                         'Установка -79 db десятки
I2cwbyte &B11011001                                         'Установка -79 db единицы
I2cstop     

И потом крутим энкодер и получаем incr или decr, потом раскладываем на десятки и единицы и шлем в микросхему:

  Vol = Dig
  Vols = Str(vol)
  If Vol < 10 Then Vols = "0" + Vols
  Call Nokia_pos(33 , 6)                      'это вывод на дисплей 1100
  Call Nokia_text(vols , 2 , 0 , 2)
'***********************************
Vol_ds = Left(vols , 1)
Vol_es = Right(vols , 1)
Vol_d = Val(vol_ds)
Vol_e = Val(vol_es)
I2cstart
I2cwbyte &B10001000                                        ' Адрес PT2322
I2cwbyte Vol_d
I2cwbyte Vol_e
I2cstop

Звука на выходе нет.

Что я делаю не так ?

0

2

1. установите скорость обмена по I2C в 100КГц (по датащиту она больше не могёт)
2. потом этот документ находили/читали: http://www.orion43.ru/shared/pt2322.pdf ???
Там написано всё весьма детально "После подачи питания на PT2322 необходимо послать код 11000111 (C7H), чтобы активизировать Селектор входа".
3. Не заморачивайтесь с самого начала с энкодером и вычислением громкости, запустите хотя бы с константы, что бы после включения сразу был какой-то результат.
4. Потом там большое время на включение чипа, если сразу начать слать команды, то ничего работать не будет (всё в доке есть).

Отредактировано RDW (2016-12-09 18:47:33)

0

3

RDW написал(а):

установите скорость обмена по I2C в 100КГц


Как это делается в Баскоме ?

RDW написал(а):

этот документ находили/читали


Именно по нему и развлекался. Селектор активировал (в начале кода есть)

RDW написал(а):

там большое время на включение чипа


У меня две секунды задержка стоит (после конфигурирования I2c заставка выводится на дисплей и висит две секунды).

Начал писать именно с энкодера, без I2c. C энкодером все отлажено, все выводится и считается. Потом начал добавлять PT2322 и I2c - тут и встало...

0

4

Gordon_shumway написал(а):

Как это делается в Баскоме ?

Config I2Cdelay = 10  -  чем больше константа тем медленнее

0

5

Gordon_shumway написал(а):

Потом начал добавлять PT2322 и I2c - тут и встало

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

Gordon_shumway написал(а):

Как это делается в Баскоме

зависит от типа используемого I2C (аппаратный или программный)
вообще в хелпе баскома всё есть, читайте (как по F1, так и на сайте)

0

6

Ещё проверьте монтаж и подвязку шины к питанию (через резисторы).

0

7

RDW написал(а):

Ещё проверьте монтаж и подвязку шины к питанию (через резисторы).


Спасибо за ответы !

У меня пока все на макетке "натыкано". Типа отладка. Как все будет безглючно работать - буду с платой заморачиваться.
Пока только понял, что нужно ограничить скорость I2c. В понедельник попробую.

Кстати вопрос:
PT2322 работает от 9 вольт, микроконтроллер с дисплеем - 3,3в. Там 1117-3,3 стоИт. Сопротивления от SDA и SCL на какой потенциал заводить - 3,3 или 9 ?

И, сорри за глупый вопрос, какой I2c я использую - аппаратный или программный ?  У меги8 I2c на PC4 и PC5.
Config Sda = Portc.4                                        ' I2C Data
Config Scl = Portc.5                                        ' I2C Clock

0

8

Конечно подвязка к питанию МК (3.3В, если оно такое).
Чтобы использовать аппаратный (на имеющихся выводах) I2C нужно использовать библиотеку "i2c_twi.lbx", подробнее есть в хелпе баскома или на их сайте: http://avrhelp.mcselec.com/index.html?config_twi.htm
Там же есть пример, как настраивать: подключение либы, скорости...

зы: как раз из-за макетных соплей (особенно если макетка пластиковая с штырями), может всё так глючить, т.к. эта штука из-за особенностей своей формы, работает как антена и собирает кучу радио помех/электричества. Я лично отказался их использовать в экспериментах и так проблем хватает.

+1

9

Доброго дня !

Если коротко - то никак... Сделал самую простую програмку - инициализация по даташиту и установка мастер-громкости в ноль дб.
Убрал энкодер, дисплей - все, оставил только PT2322

Сделал так:

Код:
$regfile = "m8def.dat"                                     
$crystal = 8000000                                        
'$hwstack = 16
'$swstack = 64
'$framesize = 32

Config Sda = Portc.0                                        ' I2C Data
Config Scl = Portc.1                                        ' I2C Clock
Config I2cdelay = 10


Config Portb.1 = Output
Led Alias Portb.1

Wait 1

I2cstart
I2cwbyte &B10001000                'адрес pt2322                               
I2cwbyte &B11111111                'команда очистки по рекомендации из даташита
I2cwbyte &B11000111               'активизация селектора входа из даташита                              
I2cstop

Wait 2

Do

I2cstart
I2cwbyte &B10001000                       'адрес pt2322                    
I2cwbyte &B11010001                      'установка основной громкости - шаг 1 дб, -1 дб                      
I2cwbyte &B11100000                      'установка основной громкости - шаг 10 дб, 0 дб          
I2cstop                                                     

Set Led
Waitms 200
Reset Led

Wait 2


Loop

End

UPD: разобрался !
В Даташите явно не указано, при старте нужно не только делать чистку регистров и активизацию входов, но и настройки функций - отключение тишины.
Я сделал так :

Код:
I2cstart
I2cwbyte &B10001000                                         'адрес PT2322
I2cwbyte &B11111111                                         'сброс регистров
I2cwbyte &B11000111                                         'активизация входов
I2cwbyte &B11100000                                         'основная громкость шаг 10 дб = 0
I2cwbyte &B11010000                                         'основная громкость шаг 1 дб = 0
I2cwbyte &B01110111                                         'тишина выкл, трехмерный звук выкл, плоская ачх вкл.
I2cwbyte &B00010000                                         'ограничение левого фронта = 0 дб
I2cwbyte &B00100000                                         'ограничение правого фронта = 0 дб
I2cstop

И всё заработало ! :)
Всем спасибо !

Отредактировано Gordon_shumway (2016-12-12 16:05:22)

0

10

А теперь попробуйте использовать аппаратный I2C.

0

11

RDW написал(а):

попробуйте использовать аппаратный I2C.


А зачем ? Я немного подкорректировал схему, ноги аппаратного I2c теперь заняты... Да и не хочется что-то менять когда все работает. :)

0