Пт авг 03, 2012 16:55:46
Пт авг 03, 2012 18:19:43
Пт авг 03, 2012 18:55:06
Ser60 писал(а):При беглом взгляде на код:
1. Адресный байт (slave address) должен быть всегда 0b10000010
2. Subaddress инкрементирется сам при посылке нескольких байтов
3. Формировть start сигнал нужно лишь 1 раз перед посылкой группы байтов при инкрементаци subaddress. Если хотите каждый раз посылать и subaddress, формируйте stop сигнал.
4. Пишите комментарии чего хотите добиться. В настоящем коде выставляется нулевая громкость в левом и правом каналах (по адресам 0 и 1). Вам это действительно надо для оживления?
Пт авг 03, 2012 19:04:54
i2c_init();
delay_ms(1000);
i2c_start();
// Slave address
i2c_write(0b10000010);
// SubAddress
i2c_write(0x00);
// Volume
i2c_write(0b00100010);
i2c_write(0b00100010);
// Input selector
i2c_write(0b00111111);
// Bass
i2c_write(0b00000000);
// Treble
i2c_write(0b00000000);
i2c_stop();
Пт авг 03, 2012 21:35:24
void R2A_set_volume(){
unsigned char vol_H = (89-Volume)/10 , vol_L = (89-Volume)%10;
i2c_start();
i2c_write(0b10000010);
i2c_write(0x00);
i2c_write((vol_H << 4) | vol_L);
i2c_write((vol_H << 4) | vol_L);
i2c_stop();
LCD_draw_volume();
}
Пт авг 03, 2012 22:59:13
Сб авг 04, 2012 05:22:02
Сб авг 04, 2012 08:56:49