Настройка saa7708h

Nikey
Offline
Зарегистрирован: 03.11.2017

Всем привет.

Требуется помощь по написанию скетча для управления микросхемой saa7708h (звуковой процессор) по i2c шине, а именно как мне кажется, нужно в регистры этой микрухи, адрес которой 0011100 (1С hex) записать данные. Тоесть настроить эти двухбайтные регистры. Номера этих регистров 0FFD и 0FFE. Помогите как это сделать? В даташите все расписано что и как, но вот скетч написать это какой-то писец... Могу привести свой вариант, но он походу совсем нерабочий.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Приводите вариант. Или идидте в группу ищу исполнителя за деньги.

Nikey
Offline
Зарегистрирован: 03.11.2017

Кашмар! Неужели народ так помешался на деньгах... За деньги (5 килорублей) я yatour куплю и поставлю, или готовую двухдиновую гамнитолу за 15килорублей... Но мне интересен сам процесс! Мне нужен программист, учитель, который бы подсказал мне как пишется скетч по настройке звукового процессора через эту долбаную айтуси шину. 

Я так понимаю, программист должен глянуть даташит на saa7708h, понять как её конфигурировать (в какие регистры что писать) чтобы я с ардуины мог переключать аудиовходы, объяснить как пишется скетч. Там делов то на 5 минут, больше разговору.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Кому должен?

Nikey
Offline
Зарегистрирован: 03.11.2017

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

Nikey
Offline
Зарегистрирован: 03.11.2017

В даташнике описан процесс записи и чтения в регистр. Таблица нарисована... Ща я мать от компа отгоню, нарисую ченить

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Лучше пива папей.

Nikey
Offline
Зарегистрирован: 03.11.2017

Да ты я глижу остряк

Nikey
Offline
Зарегистрирован: 03.11.2017
Значит вот что гутарит даташник о том как нао записывать в регистр:
Start (0011100) (0) Aск (AddrH) Ack (AddrL) Ack (DataH) Ack (DataM) Ack (DataL) Ack STOP
 
А вот насчёт чтения из регистра: 
Start (0011100) (0) Ack (AddrH) Ack (AddrL) Ack повстарт (0011100) (1) Aск (DataH) Aск от мастера (DataM) Aск от мастера (DataL) Ack от мастера NAck StoP

Я написал кое как скетч для чтения регистра 0FFE, чтоб глянуть что хоть там происхоит:

#include <Wire.h>  // подключим стандартную библиотеку I2C
#define addr 0x1C // I2C адрес saa7708h
  
void setup() {
  Serial.begin(9600); // инициализация последовательного порта
  Wire.begin(); // инициализация I2C
  
void loop() {
 
  Wire.beginTransmission(addr); // начинаем связь с устройством по адресу 0x1C
  Wire.write(0x0FFE); // регистр, с которого мы начнём запрашивать данные   
  Wire.endTransmission();  
 
  Wire.requestFrom(addr, 2, true); // запрашиваем 2 байта у ведомого
  while( Wire.available() ) 
  {
    char a = Wire.read(); // считываем байт из регистра
 
 
   // Выводим считанное в последовательный порт:  
    Serial.println(a, HEX);  
    Serial.println();    
  }    
  delay(5000);
  }
 
в результате в монитор порта вывоится всё время
FFFFFFFF
FFFFFFFF
но такого явно не может быть! Я глянул логанализатором там совсем другое!
b707
Offline
Зарегистрирован: 26.05.2017

Поиском в гугле поищи - вроде, попадались мне проекты с управлением такими контроллерами.

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

Nikey
Offline
Зарегистрирован: 03.11.2017

Ищу! уже несколько месяцев ищу!!!! З@йопся в доску!!! сил нет! 

Никто этой SAAшкой никогда не рулил! Почему? для меня большая загадка... Разобраться в её даташнике сможет школьник, тем более я всё ясно обьяснил - мне нужно в регистр  записать данные и всё!!!! Чего там ещё разбираться?! Даташник гуглица элементарно. Там нормальному спецу делов на 5 сек.

Ребят, я не поверю что эта элементарщина неподьёмна!

За кипишь предьявляй писунам а не мне. Я говорю только по делу. Понятное дело, лентяи и остряки помогать не будут. Им тока денег подавай побольше за ихнюю писанину

sadman41
Offline
Зарегистрирован: 19.10.2016

Поймай школьника во дворе и требуй с него. Сюда-то зачем приперся со своей дворовой романтикой? Стрелки еще начни забивать всем подряд. Тут народ горячий, каждый с собой крестовую отвертку носит, так что не пыли почем зря.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nikey пишет:

За деньги (5 килорублей) я yatour куплю и поставлю, или готовую двухдиновую гамнитолу за 15килорублей...

Удачи!

Nikey пишет:

Но мне интересен сам процесс!

Так Вас и попросили показать Ваш процесс.

Nikey пишет:

Мне нужен программист

Либо делайте, что говорят (публикуйте код, рассказывайте что и как Вы делаете), либо (если Вам нужен программист) дайте объявление о найме на работу.

Nikey пишет:

Я так понимаю, программист должен 

Кому это он так задолжал, интересно? Интересно Вы понимаете.

Nikey пишет:

Там делов то на 5 минут, больше разговору.

У меня от дому до работы 4 километра.  Я так понимаю, таксист должен довезти меня бесплатно, "там делов то на 5 минут, больше разговору".

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nikey пишет:

Я написал кое как скетч 

И выложили его тоже кое-как.

Если хотите, чтобы его кто-то читал, потрудитесь выложить как положено.

b707
Offline
Зарегистрирован: 26.05.2017

Nikey пишет:

Разобраться в её даташнике сможет школьник, тем более я всё ясно обьяснил - мне нужно в регистр  записать данные и всё!!!! Чего там ещё разбираться?! Даташник гуглица элементарно. Там нормальному спецу делов на 5 сек.

Ребят, я не поверю что эта элементарщина неподьёмна!

Блин, если там все так просто - возьми да напиши сам. А коли не можешь - нефиг гнать, что "делов на пять минут".

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

Nikey
Offline
Зарегистрирован: 03.11.2017

Блин... Одни предьявы... Не успел рот раскрыть... Ну ребзя вы даёте... :-)))))

Nikey
Offline
Зарегистрирован: 03.11.2017

Ребят, если вы прям все такие занятые, не хотите помогать, не надо... А то уж оскорбились бедные... Код им неправильно выложили...

Порнуху небось смотреть время хватает.

Админ, тему можешь удалять, я так понимаю никто тут мне помогать не собирается, а то... таксист не повезет! 

Всем удачи!

b707
Offline
Зарегистрирован: 26.05.2017

Nikey пишет:

Блин... Одни предьявы... Не успел рот раскрыть...

еще как успел.

Без предъяв, четко по делу:

 - либо человек пытается сделать сам и приходит с почти готовым кодом- ему помогают

 - если человек ничего не умеет и не хочет делать - только за деньги

Выбери

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

b707 пишет:

Ты откуда такой вылез, с какого раена?

Да, сразу видать, что реальный пацан: "даташник", "SAAшкой" - первый парень на раёне!

И ваще, чего вы тут все на пацана набросились? Он же вам сказал, "Даташник гуглица элементарно" (ссылку дать - не по-пацански!!!), ибо программист должен по-быстрому сам нагуглить, написать, объяснить и минет сделать поблагодарить ТС (желательно материально) за то, что благодаря ТС он (программист) получил новые знания и теперь знает как "рулить SAAшкой".

Вот как-та так! А вы тут сопли жуёте!

Nikey
Offline
Зарегистрирован: 03.11.2017

 

[/quote]

еще как успел.

 

[/quote]

Ответь за базар

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nikey пишет:

Ребят, если вы прям все такие занятые, не хотите помогать, не надо... А то уж оскорбились бедные... Код им неправильно выложили...

Порнуху небось смотреть время хватает.

Админ, тему можешь удалять, я так понимаю никто тут мне помогать не собирается, а то... таксист не повезет! 

Всем удачи!

Ну, раз так, то Вам тоже удачи.

Если бы Вы реально нуждались в помощи, то, наверное поняли бы, что код без номеров строк обсуждать невозможно (разве что, так: "у Вас ошибка в строке №ХЗ") и выложили бы правильно. И что ссылку на даташит надо давать, зачем заставлть человека искать то, что уже найдено.

Но, Вам всё это непонятно, ибо Вам все должны. Ну, что ж, удачи Вам.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

.

Nikey
Offline
Зарегистрирован: 03.11.2017

Дай хоть разберусь как код выкладать. Ссылки тоже дам на даташник

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А я пока пойду порнуху посмотрю.

sadman41
Offline
Зарегистрирован: 19.10.2016

Да что вы, коллеги, с бакланом по человечьи-то. Не понимают они этого - наука уже не раз доказывала сей факт.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Nikey пишет:

Ответь за базар

Канчай батон крошить! Ты чёткий пацан или чмо, в натуре?

Паслал всех, апустил, а сам прадалжаешь с апущенными бакланить! Западло это!

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Действительно, я ошибку вижу. Но пожалуй ему не скажу. Сын меня с компа сгоняет.

b707
Offline
Зарегистрирован: 26.05.2017

Ворота пишет:

Паслал всех, апустил, а сам прадалжаешь с апущенными бакланить! Западло это!

ну-ну, с "опущенными" поосторожней, а то вдруг тут и еще "риальные" есть :)

Nikey
Offline
Зарегистрирован: 03.11.2017

 Ссыль на саашку: http://html.alldatasheet.com/html-pdf/112524/PHILIPS/SAA7708H/295/1/SAA7708H.html

код (пока для чтения): [code]


 #include <Wire.h>  // подключим стандартную библиотеку I2C
 #define addr 0x1C // I2C адрес saa7708h
 
 void setup() {
 Serial.begin(9600); // инициализация последовательного порта
  Wire.begin(); // инициализация I2C
} 
  
 void loop() {

  Wire.beginTransmission(addr); // начинаем связь с устройством по адресу 0x1C
  Wire.write(0x0FFE); // регистр, с которого мы начнём запрашивать данные   
  Wire.endTransmission();  
 
  Wire.requestFrom(addr, 2, true); // запрашиваем 2 байта у ведомого
  while( Wire.available() ) 
  {
    char a = Wire.read(); // считываем байт из регистра


   // Выводим считанное в последовательный порт:  
    Serial.println(a, HEX);  
    Serial.println();    
  }    
  delay(5000);
  }

 

 

Nikey
Offline
Зарегистрирован: 03.11.2017

Канчай батон крошить! Ты чёткий пацан или чмо, в натуре?

Паслал всех, апустил, а сам прадалжаешь с апущенными бакланить! Западло это!

не смеши, остряк, иди делом лучше займись

Nikey
Offline
Зарегистрирован: 03.11.2017

brokly пишет:

Действительно, я ошибку вижу. Но пожалуй ему не скажу. Сын меня с компа сгоняет.

с сыном проще, оплеуху дал, "иди букварь читай". С мамкой так уж не получится 

Nikey
Offline
Зарегистрирован: 03.11.2017

sadman41 пишет:

Да что вы, коллеги, с бакланом по человечьи-то. Не понимают они этого - наука уже не раз доказывала сей факт.

Сгинь, нечистая!

На 50 странице указана процедура чтения из регистра. интересно как её реализовать в коде для ардуино????

Вот что гутарит анализатор подключенный к майфуну без ардуины:

0.746080062500000,I2C,Setup Write to ['28' (0x1C)] + ACK
0.746234500000000,I2C,'15' (0x0F) + ACK    
0.746384625000000,I2C,'254' (0xFE) + ACK    
0.746542687500000,I2C,@ (0x40) + ACK    
0.746692812500000,I2C,'31' (0x1F) + ACK    

кстати, если я подключаю ардуино, к майфуну, получается саашкой управляют сразу 2 мастера!?

kasper007
Offline
Зарегистрирован: 23.05.2016

Автор, а можете строчку в своем скетче

 #define addr 0x1С // I2C адрес saa7708h

заменить на

 #define addr 0x1E // I2C адрес saa7708h

затем выполнить скетч, и выложить опять ответ "анализатора подключенного к майфуну".

 

Nikey
Offline
Зарегистрирован: 03.11.2017

Мочь то могу, но что это даст?... Там понимаешь... Анализатор за 10 секунд без ардуины стока данных получает, что ардуино данные там отыскать просто нереал! Поэтому я анализировал без ардуины. Ардуино выводил в монитор порта без анализатора. Надеюсь я понятно объясняю...

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

А с чего решили что адрес 0x1С или 0x1E?

В даташите ничего подобного не нашел.

kasper007
Offline
Зарегистрирован: 23.05.2016

Nikey пишет:

Мочь то могу, но что это даст?... Там понимаешь... Анализатор за 10 секунд без ардуины стока данных получает, что ардуино данные там отыскать просто нереал! Поэтому я анализировал без ардуины. Ардуино выводил в монитор порта без анализатора. Надеюсь я понятно объясняю...

Формально для решения вашей проблемы ничего не даст, тут вы абсолютно правы. Но мне кажется, что вы там должны увидеть:

0.746080062500000,I2C,Setup Write to ['28' (0x1C)] + ACK
0.746234500000000,I2C,'15' (0x0F) + ACK    
0.746384625000000,I2C,'254' (0xFE) + ACK    
0.746542687500000,I2C,@ (0x0F) + ACK    
0.746692812500000,I2C,'31' (0xFE) + ACK

А после этого сравнив с первыми выложенными показаниями пойти и заново прочитать значение функции:

Wire.write(0x0FFE); // регистр, с которого мы начнём запрашивать данные  

kasper007
Offline
Зарегистрирован: 23.05.2016

К datasheet мое предложение никакого отношение не имеет. Оно относится исключительно к пониманию того, что автор пишет в своем скетче.

Кстати, автор, а что вы хотите увидеть в регистрах:

IIC_SELECTION
IIC_ADDA
 

Nikey
Offline
Зарегистрирован: 03.11.2017

Andrey12 пишет:

А с чего решили что адрес 0x1С или 0x1E?

В даташите ничего подобного не нашел.

Страница 48 таблица 15, там указан адрес побитово (7 бит). Нога под названием А0 завалена на массу, соответственно адрес получается 0011100. Переведи в 16ричную систему счисления, получица 1С.

Nikey
Offline
Зарегистрирован: 03.11.2017

kasper007 пишет:

К datasheet мое предложение никакого отношение не имеет. Оно относится исключительно к пониманию того, что автор пишет в своем скетче.

Кстати, автор, а что вы хотите увидеть в регистрах:

IIC_SELECTION
IIC_ADDA
 

А вот это правильный вопрос!!!! Именно этими регистрами я и хочу пощелкать! Их расшифровка побитово указана в таблицах 36 и 37 и других. Некоторые биты я не понимаю типа холд какой-то, но это не беда! Главное знать как до них добраться. Регистры, как  я понимаю, 16битные и судя по показаниям анализатора и по даташнику они программятся в 2 захода... 8 бит аск, 8 бит аск... Как то так...

Мне нужно ардуиной врубить на саашке i2s вход! По умолчанию там спдиф паскудный

kasper007
Offline
Зарегистрирован: 23.05.2016

Nikey пишет:

Страница 48 таблица 15, там указан адрес побитово (7 бит). Нога под названием А0 завалена на массу, соответственно адрес получается 0011100. Переведи в 16ричную систему счисления, получица 1С.

Давайте не пороть горячку, ибо то что вы написали сейчас никак не коррелируется с тем, что вы написали в первом своем посте. Вроде в нем вы уже определились в какие регистры нужно писать.

Может вообще начать с самого простого - чего вы хотите добиться в результате своих манипуляций.

Nikey
Offline
Зарегистрирован: 03.11.2017

Насколько я понимаю мне нужны регистры 0FFD и 0FFE. Ими происходит выбор входов в этой микросхеме

kasper007
Offline
Зарегистрирован: 23.05.2016

Nikey пишет:

А вот это правильный вопрос!!!! Именно этими регистрами я и хочу пощелкать!

Ну так это пользовательские настройки. Чтобы изменить наверное хватило бы зайти в меню магнитолы и выбрать новые настройки. Зачем, извиняюсь, зубы через жопу лечить.

Nikey
Offline
Зарегистрирован: 03.11.2017

kasper007 пишет:

Nikey пишет:

А вот это правильный вопрос!!!! Именно этими регистрами я и хочу пощелкать!

Ну так это пользовательские настройки. Чтобы изменить наверное хватило бы зайти в меню магнитолы и выбрать новые настройки. Зачем, извиняюсь, зубы через жопу лечить.

Хренушки!!!! Что я по твоему совсем идиот? Не мог бы i2s аукс выбрать нажатием кнопочки? Там входы программятся по i2c. В даташнике все описано что и как щелкать. Есть конечно и непонятные нюансы

 

Nikey
Offline
Зарегистрирован: 03.11.2017

У этой Магнитолы, кстати, нет встроенного дисплея, он находится на торпеда, что сильно осложняет эксперименты... Приходится то и дело бегать то домой к паяльнику, то в тачку

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

brokly пишет:

Действительно, я ошибку вижу. Но пожалуй ему не скажу. Сын меня с компа сгоняет.

да ладно, Брукли! Пацаненок даже забавный и необидчивый... можно и помочь...

У тебя, родное сердце, в примере как написано адрес передавать? ДВУМЯ посылками по байту, сперва один потом другой.

А ты чо наворотил?

Wire.write(0x0FFE); // регистр, с которого мы начнём запрашивать данные  

Вот в этой строке ты чо за херню написал?...

Давай, тренируйся! ;) (...ушел досмотреть порнуху)

Nikey
Offline
Зарегистрирован: 03.11.2017

wdrakula пишет:

brokly пишет:

Действительно, я ошибку вижу. Но пожалуй ему не скажу. Сын меня с компа сгоняет.

да ладно, Брукли! Пацаненок даже забавный и необидчивый... можно и помочь...

У тебя, родное сердце, в примере как написано адрес передавать? ДВУМЯ посылками по байту, сперва один потом другой.

А ты чо наворотил?

Wire.write(0x0FFE); // регистр, с которого мы начнём запрашивать данные  

Вот в этой строке ты чо за херню написал?...

Давай, тренируйся! ;) (...ушел досмотреть порнуху)

 Дык это для тебя херня! Я то не программер! Неужели это так трудно понять?! Я б на этом куске кода ещё б полгода провисел, пока ктонить не подсказал.  Написал бы лучше как правильно, а то я опять ченить напишу не то

Nikey
Offline
Зарегистрирован: 03.11.2017

И насчёт пацаненка, тыб следил за базаром, мы с тобой на брудершафт славаБогу не пили

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Nikey пишет:

И насчёт пацаненка, тыб следил за базаром, мы с тобой на брудершафт славаБогу не пили

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

А советы свои папке давай, если тебя мамка с ним познакомила,

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Nikey пишет:

  Написал бы лучше как правильно, а то я опять ченить напишу не то

итак приступим.

1. Попроси старшего, как положено. И, в силу  разницы возраста, знаний и места в мире, я  с тобой на ты, но тебе этого не позволяю.

2. пока поправим первую ошибку:

не

Wire.write(0x0FFE); // регистр, с которого мы начнём запрашивать данные   

а

Wire.write(0x0F);

Wire.write(0xFE);

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Nikey пишет:

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

Похожее изображение

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Клапауций! Я не понял, а сиськи где?