реклама на сайте
подробности

 
 
6 страниц V  « < 2 3 4 5 6 >  
Reply to this topicStart new topic
> ATmega16 + PT2322 + PT2323, Пишем программу в Code Vision AVR...
Дмитрий(846)
сообщение Mar 19 2013, 15:12
Сообщение #46


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Цитата(artkam @ Mar 19 2013, 16:21) *
Как-то уж слишком мудрено у Вас... Предлагаю привести схему к виду, как в приложенном файле, тогда о уровнях напряжения на входе АЦП можно будет просто догадаться, не прибегая даже к закону имени Ома ))))


НУ я замерял напряжение на своей схеме: 0,9 \ 1,52 \ 2,00 \ 2,35 \ 2,64
как в адц перевести???

Еще подскажите как организовать сдвиг бита для регулировки тона.
Исходник привел ниже.
Биты регулировки
в коде
Код
0b1001 G3 G2 G1 G0     Bass tone control
0b1010 K3 K2 K1 K0      Middle tone control
0b1011 H3 H2 H1 H0      Treble tone control

TONE CONTROL BITS
G3/K3/H3 G2/K2/H2 G1/K1/H1 G0/K0/H0      Attenuation (dB)
      0             0              0             0            -14
      0             0              0             1               -12
      0             0              1             0               -10
      0             0              1             1               -8
      0             1              0             0               -6
      0             1              0             1               -4
      0             1              1             0               -2
      0             1              1             1               0
      1             0              0             0               +14
      1             0              0             1               +12
      1             0              1             0               +10
      1             0              1             1               +8
      1             1              0             0               +6
      1             1              0             1               +4
      1             1              1             0               +2
      1             1              1             1               0
Note: G=Bass, K=Middle, H=Treble


Сообщение отредактировал Дмитрий(846) - Mar 19 2013, 15:25
Прикрепленные файлы
Прикрепленный файл  System_Sound.rar ( 357.26 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 19 2013, 15:46
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Дмитрий(846) @ Mar 19 2013, 18:12) *
НУ я замерял напряжение на своей схеме: 0,9 \ 1,52 \ 2,00 \ 2,35 \ 2,64
как в адц перевести???

Для этого придется-таки хоть чуть-чуть подумать и вспомнить пропорции, их учат примерно классе в четвертом. Если АЦП 10-разрядный, и на его вход подано его полное опорное напряжение, например, AVCC=5В (я не знаю, какое опорное напряжение вы выбрали для АЦП), то из его регистра будет считано число 1023. Числа для остальных напряжений рассчитайте сами.
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 19 2013, 17:41
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Цитата(kovigor @ Mar 19 2013, 17:46) *
Для этого придется-таки хоть чуть-чуть подумать и вспомнить пропорции, их учат примерно классе в четвертом. Если АЦП 10-разрядный, и на его вход подано его полное опорное напряжение, например, AVCC=5В (я не знаю, какое опорное напряжение вы выбрали для АЦП), то из его регистра будет считано число 1023. Числа для остальных напряжений рассчитайте сами.



Спасибо с кнопками разобрался, перепаял резистор на +5 на 10кОм, а не 4,7кОм.
Все работает вот результат.
Код
unsigned char read_key(void)
{
        unsigned char key_adc;        
        key_adc=read_adc(3);             //3
                
          if                      (key_adc <=   3)  return KEY_STANDBY;
          if ((key_adc >= 20)  && (key_adc <= 60)) return KEY_MUTE;     //45//100-148 = 1000 Om
          if ((key_adc >= 70) &&  (key_adc <= 85)) return KEY_INPUTAC3;     //77//130-178 = 2000 Om
          if ((key_adc >= 90) &&  (key_adc <= 118)) return KEY_INPUT1;    //102//180-198 = 3000 Om
          if ((key_adc >= 120) && (key_adc <= 144)) return KEY_MODE;    //119//200-248 = 4000 Om
          if ((key_adc >= 150) && (key_adc <= 190)) return KEY_INDICATE_PLUS;    //134//200-248 = 5000 Om
}


Теперь нужна помощь с регулировкой тона
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 19 2013, 18:05
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Дмитрий(846) @ Mar 19 2013, 21:41) *
Теперь нужна помощь с регулировкой тона
...
Еще подскажите как организовать сдвиг бита для регулировки тона.

Поздравляю, так бы и раньше. Вещи-то простейшие.

Сдвиг бита ? Любую книжку по Си гляньте, того же Шилдта, справочник, или Крупника

Пример:

Код
unsigned char x, y;

...

x = 0x80;
y = (x >> 1); //Теперь Y = 0x40
y = (y << 1); //Теперь Y равно = 0x80

http://www.cyberguru.ru/cpp/cpp-programmin...ide-page27.html
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 19 2013, 20:24
Сообщение #50


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Очень благодарен за помощь. Но это я понимаю.
Но мне надо начиная с 0 при шаге в право надо +2 ДБ в лево 0 еще в лево -2ДБ на сначениях +14 или -14 остановить выполнение

Значение бита перевел, помогите хоть с bass с остальными я уже сделаю
Код
/*1 0 0 1 G3 G2 G1 G0 Bass tone control
1 0 1 0 K3 K2 K1 K0 Middle tone control
1 0 1 1 H3 H2 H1 H0 Treble tone control
                Bass    Middle   Treble
0 0 0 0 -14     0x90     0xA0     0xB5
0 0 0 1 -12     0x91     0xA1     0xB5
0 0 1 0 -10     0x92     0xA2     0xB5
0 0 1 1 -8      0x93     0xA3     0xB5
0 1 0 0 -6      0x94     0xA4     0xB5
0 1 0 1 -4      0x95     0xA5     0xB5
0 1 1 0 -2      0x96     0xA6     0xB6
0 1 1 1 0       0x97     0xA7     0xB7
1 1 1 1 0       0x9F     0xAF     0xBF
1 1 1 0 +2      0x9E     0xAE     0xBE
1 1 0 1 +4      0x9D     0xAD     0xBD
1 1 0 0 +6      0x9C     0xAC     0xBC
1 0 1 1 +8      0x9B     0xAB     0xBB
1 0 1 0 +10     0x9A     0xAA     0xBA
1 0 0 1 +12     0x99     0xA9     0xB9
1 0 0 0 +14     0x98     0xA8     0xB8
*/


Сообщение отредактировал Дмитрий(846) - Mar 19 2013, 20:27
Прикрепленные файлы
Прикрепленный файл  System_Sound.rar ( 366.44 килобайт ) Кол-во скачиваний: 11
 
Go to the top of the page
 
+Quote Post
artkam
сообщение Mar 19 2013, 21:50
Сообщение #51


Частый гость
**

Группа: Участник
Сообщений: 182
Регистрация: 14-09-10
Из: Уфа
Пользователь №: 59 479



CODE
void Tone_Controll(void)
{
i2c_start();
i2c_write(ADDR_2322);
i2c_write(ACK);
i2c_write(TONE_CONTROLL_Treble);
i2c_write(TONE_CONTROLL_Middle);
i2c_write(TONE_CONTROLL_Bass);
i2c_stop();
}


Вот эту функцию Вы сами писали? Спрашиваю, ибо в документации рекомендуется передача данных к звуковому процессору с использованием бита подтверждения. Либо необходимо выжидать 1 такт (шины i2c).
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 20 2013, 10:34
Сообщение #52


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Да писал сам.!!!
Есть замечания, подправьте, буду только рад.
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 20 2013, 20:07
Сообщение #53


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Решил попробовать так, но звук не меняется


Код
#define Bass14DAWN 0b10010000    
#define Bass12DAWN 0b10010001    
#define Bass10DAWN 0b10010010    
#define Bass8DAWN  0b10010011    
#define Bass6DAWN  0b10010100      
#define Bass4DAWN  0b10010101    
#define Bass2DAWN  0b10010110    
#define Bass0DAWN  0b10010111    
#define Bass0UP    0b10011111      
#define Bass2UP    0b10011110      
#define Bass4UP    0b10011101      
#define Bass6UP    0b10011100    
#define Bass8UP    0b10011011      
#define Bass10UP   0b10011010    
#define Bass12UP   0b10011001    
#define Bass14UP   0b10011000    

#define Middle14DAWN 0b10100000    
#define Middle12DAWN 0b10100001    
#define Middle10DAWN 0b10100010    
#define Middle8DAWN  0b10100011    
#define Middle6DAWN  0b10100100      
#define Middle4DAWN  0b10100101    
#define Middle2DAWN  0b10100110    
#define Middle0DAWN  0b10100111    
#define Middle0UP    0b10101111      
#define Middle2UP    0b10101110      
#define Middle4UP    0b10101101      
#define Middle6UP    0b10101100    
#define Middle8UP    0b10101011      
#define Middle10UP   0b10101010    
#define Middle12UP   0b10101001    
#define Middle14UP   0b10101000

#define Treble14DAWN 0b10110000    
#define Treble12DAWN 0b10110001    
#define Treble10DAWN 0b10110010    
#define Treble8DAWN  0b10110011    
#define Treble6DAWN  0b10110100      
#define Treble4DAWN  0b10110101    
#define Treble2DAWN  0b10110110    
#define Treble0DAWN  0b10110111    
#define Treble0UP    0b10111111      
#define Treble2UP    0b10111110      
#define Treble4UP    0b10111101      
#define Treble6UP    0b10111100    
#define Treble8UP    0b10111011      
#define Treble10UP   0b10111010    
#define Treble12UP   0b10111001    
#define Treble14UP   0b10111000
//Регулировка басс
void Tone_Change_Bass(void)
{
switch(Tone_Change_Bass_Switch)
  {    
  case 1:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);
     i2c_write(Bass14DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-14");
     delay_ms(600);                        
    break;
  case 2:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);  
     i2c_write(Bass12DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-12");
     delay_ms(600);                        
    break;
  case 3:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);
     i2c_write(Bass10DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-10");
     delay_ms(600);                        
    break;
  case 4:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);
     i2c_write(Bass8DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-8");
     delay_ms(600);                        
    break;
  case 5:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);  
     i2c_write(Bass6DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-6");
     delay_ms(600);                        
    break;
  case 6:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);      
     i2c_write(Bass4DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-4");
     delay_ms(600);                        
    break;
  case 7:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);      
     i2c_write(Bass2DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-2");
     delay_ms(600);                        
    break;
  case 8:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);    
     i2c_write(Bass0DAWN);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(13,0);
     lcd_putsf("-0");
     delay_ms(600);                        
    break;
  case 9:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);    
     i2c_write(Bass0UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+0");
     delay_ms(600);                        
    break;
  case 10:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);    
     i2c_write(Bass2UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+2");
     delay_ms(600);                        
    break;  
  case 11:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);  
     i2c_write(Bass4UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+4");
     delay_ms(600);                        
    break;  
  case 12:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);  
     i2c_write(Bass6UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+6");
     delay_ms(600);                        
    break;
  case 13:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);    
     i2c_write(Bass8UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+8");
     delay_ms(600);                        
    break;
  case 14:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);
     i2c_write(Bass10UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+10");
     delay_ms(600);                        
    break;  
  case 15:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);
     i2c_write(Bass12UP);    
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+12");
     delay_ms(600);                        
    break;  
  case 16:                      
     i2c_start();
     i2c_write(ADDR_2322);
     i2c_write(ACK);
     i2c_write(Bass14UP);
     i2c_write(ACK);
     i2c_stop();
     lcd_gotoxy(0,1);
     lcd_putsf("+14");
     delay_ms(600);                        
    break;
    }
  }
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 21 2013, 18:09
Сообщение #54


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Подсказали через массив функций бахнуть, а результат 0, звук не меняется
Прикрепленные файлы
Прикрепленный файл  System_Sound.rar ( 373.32 килобайт ) Кол-во скачиваний: 13
 
Go to the top of the page
 
+Quote Post
artkam
сообщение Mar 21 2013, 18:22
Сообщение #55


Частый гость
**

Группа: Участник
Сообщений: 182
Регистрация: 14-09-10
Из: Уфа
Пользователь №: 59 479



В приложенном документе подробно расписана процедура программирования микросхемы PT2322 по шине I2C. Создайте отдельную программу, которая содержит три функции main(){}; функцию инициализации и настройки I2C и функцию, которая настраивает звуковой процессор. Пока в таком виде не заработает, лучше в дебри приложенного вами исхродника не соваться...
Прикрепленные файлы
Прикрепленный файл  pt2322.pdf ( 201.67 килобайт ) Кол-во скачиваний: 81
 
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 21 2013, 18:31
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Цитата(artkam @ Mar 21 2013, 20:22) *
В приложенном документе подробно расписана процедура программирования микросхемы PT2322 по шине I2C. Создайте отдельную программу, которая содержит три функции main(){}; функцию инициализации и настройки I2C и функцию, которая настраивает звуковой процессор. Пока в таком виде не заработает, лучше в дебри приложенного вами исхродника не соваться...


Все кроме тона работает, инициализация проходит нормально в функции main, настройки аналогично
Go to the top of the page
 
+Quote Post
artkam
сообщение Mar 21 2013, 19:38
Сообщение #57


Частый гость
**

Группа: Участник
Сообщений: 182
Регистрация: 14-09-10
Из: Уфа
Пользователь №: 59 479



Попробуйте, в качестве эксперимента, в функции загрузки параметров из ЕЕПРОМ после вызовов этих функций:
CODE

i2c_start();
i2c_write(ADDR_2322);
i2c_write(ACK);
i2c_write(0b11000111); // aктивaция caбвyфepa
i2c_stop();


добавить что-то вроде:
CODE

i2c_start();
i2c_write(ADDR_2322);
i2c_write(ACK);
i2c_write(TONE_CONTROL_ON);
i2c_stop();


Я тут присмотрелся... Нет, не будет и в таком виде работать. В общем, я Вам подправил исходник, в теории, должно "запеть"...
Прикрепленные файлы
Прикрепленный файл  System_Sound.zip ( 13.05 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 21 2013, 19:46
Сообщение #58


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894




Пробовал, но я писал только
CODE

i2c_start();
i2c_write(ADDR_2322);
i2c_write(ACK);
i2c_write(IN_1 вместо 0b11000111); // aктивaция caбвyфepa
i2c_write(ACK);
i2c_write(TONE_CONTROL_ON);
i2c_write(ACK);
i2c_stop();


Кстати то я дефинил все переменные
Go to the top of the page
 
+Quote Post
artkam
сообщение Mar 21 2013, 19:55
Сообщение #59


Частый гость
**

Группа: Участник
Сообщений: 182
Регистрация: 14-09-10
Из: Уфа
Пользователь №: 59 479



Вот здесь:

unsigned char Array2[][16] = {"-14", "-12", "-10", "-8", "-6", "-4", "-2", "-0", "+0", "+2", "+4", "+6", "+8", "+10", "+12", "+14"};

скорее всего должно быть как-то так:

unsigned char* Array2[16] = {"-14", "-12", "-10", "-8", "-6", "-4", "-2", "-0", "+0", "+2", "+4", "+6", "+8", "+10", "+12", "+14"};

Иначе, не компилицца...
Go to the top of the page
 
+Quote Post
Дмитрий(846)
сообщение Mar 21 2013, 19:57
Сообщение #60


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-13
Из: Украина / Харьков
Пользователь №: 75 894



Вы имеете ввиду

Код
i2c_start();
    i2c_write(ADDR_2322);
    i2c_write(ACK);
    i2c_write(tsss &= ~0x02);      //отключает байпасс регулятора тембра
    i2c_write(ACK);
    i2c_stop();


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

А в чем физическая суть?

Сообщение отредактировал Дмитрий(846) - Mar 21 2013, 20:28
Прикрепленные файлы
Прикрепленный файл  System_Sound.rar ( 383.6 килобайт ) Кол-во скачиваний: 9
 
Go to the top of the page
 
+Quote Post

6 страниц V  « < 2 3 4 5 6 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016