オーディオの自作の話題を中心に盛り上げてください
新しいHPのURL http://www.easyaudiokit.com

お気楽オーディオキット資料館

3479017

PA4525 shinnari

2017/07/13 (Thu) 08:23:19

何度か頒布していただいた基盤を活用させていただいておりますが、初めて投稿いたします。

先日もPiSRC4137,PA4525他を頒布していただき、PiSRC4137はご機嫌に稼働しております(Moode AudioはVolumio2より良いです)。同軸でフルディジタルの中華アンプに入れて、Fostex FE83-solを鳴らしていますが、スピーカー自体が2ランクほどアップしたような音で鳴ります。

さて、PA4525の方ですが、どうしてもサブウーファをCS4412で駆動する3D構成にしたくて、データーシートのピン配置をCS4525と見比べています。基盤はPA4525の流用で何とかなりそうな感触ですが、CS4525側の設定がキットには無いものになります。そこでお願いですが、PICのソースコードを開示していただけませんでしょうか? それとも、I2Cコントローラを組んで直接CS4525のレジスターを書き替えた方が良いでしょうか?

どうかご教示の程よろしくお願いいたします。

Re: PA4525 - ヒロ@出先

2017/07/15 (Sat) 07:15:01

見づらいかもしれませんが、ご参考に。

//
// PA4525 V1 control software
// CS4525 D-Class amplifier
// 2012.3 (c)h_fujiwara_1995
//
#include "16F886.H"
#device ADC=10

#fuses INTRC_IO,NOWDT,PROTECT, NOMCLR,BROWNOUT,NOLVP,PUT
#use delay(internal=8MHz)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(E)

#define CS4525_INT PIN_C3
#define CS4525_SCL PIN_C2
#define CS4525_SDA PIN_C1
#define CS4525_RST PIN_C0
#define CS4525_HP PIN_A6

#define LCD_SC_RS PIN_C7
#define LCD_SC_E PIN_C6
#define LCD_SC_D4 PIN_C4
#define LCD_SC_D5 PIN_C5
#define LCD_SC_D6 PIN_A5
#define LCD_SC_D7 PIN_A4

#define SW1 PIN_B0
#define SW2 PIN_B1
#define SW3 PIN_B2
#define SW4 PIN_B3
#define SW5 PIN_B4
#define SW6 PIN_B5
#define SW7 PIN_B6
#define SW8 PIN_B7

#define NOACTION 0
#define SW1_ON 1
#define SW2_ON 2
#define SW3_ON 3
#define SW4_ON 4

#define AD_VOL 0
#define AD_TR 1
#define AD_BS 2
#define AD_CRS 3

#include "lcdlib.c"
#include "cs4525_i2c.c"

int CheckB()
{
static int flag=1;
static int SW1_S,SW2_S,SW3_S,SW4_S;
int i,j;

if(flag){
SW1_S=input_state(SW1);
SW2_S=input_state(SW2);
SW3_S=input_state(SW3);
SW4_S=input_state(SW4);
flag=0;}
j=NOACTION;
if(SW1_S != (i=input_state(SW1))){SW1_S=i;delay_ms(10);if(!i) j=SW1_ON;}
if(SW2_S != (i=input_state(SW2))){SW2_S=i;delay_ms(10);if(!i) j=SW2_ON;}
if(SW3_S != (i=input_state(SW3))){SW3_S=i;delay_ms(10);if(!i) j=SW3_ON;}
if(SW4_S != (i=input_state(SW4))){SW4_S=i;delay_ms(10);if(!i) j=SW4_ON;}
return(j);
}

int16 get_ad()
{
int1 done; int16 value;
read_adc(ADC_START_ONLY); done = adc_done();
while(!done) done=adc_done();
value=read_adc(ADC_READ_ONLY); return(value);
}

int16 get_ad16(int n)
{
static int flag=1;
static int16 adv[4];
static int addir[4];
int16 v; int i;

set_adc_channel(n);
delay_us(40);
v=0; for(i=0;i<16;i++) v+=get_ad();
v= v >> 4;
return(v);
}

int16 get_adv(int n)
{
static int flag=1; static int16 adv[4]; static int addir[4];
int16 v; int i;
if(flag){ for(i=0;i<4;i++){adv[i]=get_ad16(n);addir[i]=0;} flag=0;}
v=get_ad16(n);
if(addir[n]==1){ // up
if(adv[n] < v) adv[n]=v;
else if(adv[n] > (v+1)) {adv[n]=v; addir[n]=0;}
}else {
if(adv[n] > v) adv[n]=v;
else if((adv[n]+1) < v){ adv[n]=v; addir[n]=1;}
}
return(adv[n]);
}

void io_select()
{
output_drive(LCD_SC_RS);output_drive(LCD_SC_E);
output_drive(LCD_SC_D4);output_drive(LCD_SC_D5);
output_drive(LCD_SC_D6);output_drive(LCD_SC_D7);
output_drive(CS4525_RST); output_low(CS4525_RST);
output_drive(CS4525_HP); output_high(CS4525_HP);

setup_adc(ADC_CLOCK_DIV_32);setup_adc_ports(sAN0|sAN1|sAN2|sAN3);
set_adc_channel(0);
}

void parameter_set()
{
int i;

if(read_eeprom(0)==0x55 && input(SW1)){
for(i=1;i<=9;i++) cs4525_dataout(i,read_eeprom(i));
cs4525_dataout(0x55,read_eeprom(0x55));
cs4525_dataout(0x56,read_eeprom(0x56));
cs4525_dataout(0x5a,read_eeprom(0x5a));
// for(i=0x58;i<=0x5e;i++) cs4525_dataout(i,read_eeprom(i));
}
else {
for(i=1;i<=9;i++) write_eeprom(i,cs4525_datain(i));
write_eeprom(0x55,cs4525_datain(0x55));
write_eeprom(0x56,cs4525_datain(0x56));
write_eeprom(0x5a,cs4525_datain(0x5a));
// for(i=0x58;i<=0x5e;i++) write_eeprom(i,cs4525_datain(i));
write_eeprom(0,0x55);
}
}

void SetVolume()
{
int16 v;int n;
static int vol=255;

v=get_adv(AD_VOL);
if(v<512){ v*=2; v/=7; n=255-v;}
else n=109-(v-512)/7;
if(vol!=n){
cs4525_dataout(0x57,n);
vol=n;
}
}

void ToneSetWithVol()
{
static int oldn=0x88;
int16 ad;
int n;

ad=get_adv(AD_TR);
ad=1023-ad;
n=(ad >> 2) & 0xf0;
ad=get_adv(AD_BS);
ad=1023-ad;
n |= ((ad >> 6) & 0x0f);
if(n!=oldn){ cs4525_dataout(0x08,n); oldn=n;}
}

// switch definition for simple mode
// SW1 reserved
// SW2 reserved
// SW3 reserved
// SW4 reserved
// SW5 FORMAT H:RJ24 L:I2S
// SW6 TONE H:THR L:ON
// SW7 INPUT SELECT H:ANALOG L:DIGITAL
// SW8 L(simple mode)

void simplemode()
{
int i,n,m;

cs4525_dataout(0x57,0b11111111); // master volume mute
cs4525_dataout(0x5f,0b11100000); // amp active
while(1){
n=cs4525_datain(0x02);
if(input(SW7)){ // analog input
if((n&0x80)==0){ n|=0x80; cs4525_dataout(0x02,n);}
}
else { // digital input
if((n&0x80)){ n&=0x7f; cs4525_dataout(0x02,n);}
}
if(input(SW5)){ // I2S input
if((n&0x07)!=0x01){ n&=0xf8; n|=0x01; cs4525_dataout(0x02,n);}
}
else { // RJ 24
if((n&0x07)!=0x02){ n&=0xf8; n|=0x02; cs4525_dataout(0x02,n);}
}

n=cs4525_datain(0x07);
if(input(SW6)){ // TONE OFF
if((n&0x01)!=0x00){ n&=0xfe; n|=0x00; cs4525_dataout(0x07,n);}
}
else { // TONE ON
if((n&0x01)!=0x01){ n&=0xfe; n|=0x01; cs4525_dataout(0x07,n);}
ToneSetWithVol();
}

m=0;
if(input(SW4)) m|=0b00010000;
if(input(SW3)) m|=0b00001000;
if(input(SW2)) m|=0b00000100;
if(input(SW1)) m|=0b00000010;
i=n=cs4525_datain(0x07);
n&=0b00011110;
if(n!=m){
i &= 0b11100001;
i |= m;
cs4525_dataout(0x07,i);
}
SetVolume();
}
}

///////////////////////////////////////////////// full function mode

void dispvol(unsigned int n)
{
int i,j;

i=(n-48);i = i >> 1;
j=48-n; j = j >> 1;
if(n==255) printf(lcd_char," MUTE ");
else if(n>=248) printf(lcd_char,"-%3d.",i);
else if(n>=68) printf(lcd_char," -%2d.",i);
else if(n>=49) printf(lcd_char," -%1d.",i);
else if(n>=29) printf(lcd_char," %1d.",j);
else printf(lcd_char," %2d.",j);
if(n!=255){
if(n&1) printf(lcd_char,"5dB"); else printf(lcd_char,"0dB");
}
}

void dispdig(int n)
{
switch(n){
case 0:printf(lcd_char,"+12.0");break;
case 1:printf(lcd_char,"+10.5");break;
case 2:printf(lcd_char," +9.0");break;
case 3:printf(lcd_char," +7.5");break;
case 4:printf(lcd_char," +6.0");break;
case 5:printf(lcd_char," +4.5");break;
case 6:printf(lcd_char," +3.0");break;
case 7:printf(lcd_char," +1.5");break;
case 8:printf(lcd_char," 0.0");break;
case 9:printf(lcd_char," -1.5");break;
case 10:printf(lcd_char," -3.0");break;
case 11:printf(lcd_char," -4.5");break;
case 12:printf(lcd_char," -6.0");break;
case 13:printf(lcd_char," -7.5");break;
case 14:printf(lcd_char," -9.0");break;
case 15:printf(lcd_char,"-10.5");break;
default:break;
}
}

void disptone()
{
int n;

if((cs4525_datain(0x07)&1)==0) printf(lcd_char," TONE CNTL. OFF");
else{
n=cs4525_datain(0x08);
lcd_position(0,1);
printf(lcd_char,"TR");dispdig((n>>4)&15);
printf(lcd_char," BS");dispdig(n&15);
}
}



int treble_set(int q)
{
int i,n,term;

printf(lcd_char,"M%d TREBLE SET ",q);
lcd_position(0,1);printf(lcd_char," ");
n=cs4525_datain(0x08);
n = (n >> 4)&15;
dispdig(n);printf(lcd_char,"dB");
i=n;
term=CheckB();
if(term==SW3_ON){ n++;if(n==16) n=15;}
if(term==SW4_ON){ if(n) n--;}
if(i!=n){
i=cs4525_datain(0x08);
i &= 0x0f;
n = (n << 4) & 0xf0;
i |= n;
cs4525_dataout(0x08,i);
write_eeprom(0x08,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int bass_set(int q)
{
int i,n,term;

printf(lcd_char,"M%d BASS SET ",q);
lcd_position(0,1);printf(lcd_char," ");
n=cs4525_datain(0x08);
n &= 15;
dispdig(n);printf(lcd_char,"dB");
i=n;
term=CheckB();
if(term==SW3_ON){ n++;if(n==16) n=15;}
if(term==SW4_ON){ if(n) n--;}
if(i!=n){
i=cs4525_datain(0x08);
i &= 0xf0;
i |= n;
cs4525_dataout(0x08,i);
write_eeprom(0x08,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

void SetTone()
{
int n;
n=cs4525_datain(0x07);
if(input(SW6)==0){
if((n&1)==0){ n|=0x01; cs4525_dataout(0x07,n);}
}
else{
if(n&1){ n&=0xfe; cs4525_dataout(0x07,n); }
}
}

void SetInput()
{
int n;
n=cs4525_datain(0x02);
if(input(SW7)==0){ // digital
if(n&0x80){ n&=0x7f; cs4525_dataout(0x02,n);}
}
else{ // analog
if((n&0x80)==0){ n|=0x80; cs4525_dataout(0x02,n);}
}
}

int treble_corner(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Treble corner",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x07);
n &= 0b00011000;
switch(n){
case 0b00000000:printf(lcd_char," 5kHz");break;
case 0b00001000:printf(lcd_char," 7kHz");break;
case 0b00010000:printf(lcd_char,"10kHz");break;
case 0b00011000:printf(lcd_char,"15kHz");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x8; n&=0b00011000;}
if(term==SW3_ON){ n-=0x08;n&=0b00011000;}
i &= 0b11100111;
i |= n;
if(i!=m){
cs4525_dataout(0x07,i);
write_eeprom(0x07,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int bass_corner(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Bass corner",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x07);
n &= 0b00000110;
switch(n){
case 0b00000000:printf(lcd_char," 50Hz");break;
case 0b00000010:printf(lcd_char," 100Hz");break;
case 0b00000100:printf(lcd_char," 200Hz");break;
case 0b00000110:printf(lcd_char," 250Hz");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x2; n&=0b00000110;}
if(term==SW3_ON){ n-=0x2; n&=0b00000110;}
i &= 0b11111001;
i |= n;
if(i!=m){
cs4525_dataout(0x07,i);
write_eeprom(0x07,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int bass_management(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Bass manage",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x09);
n &= 0b00111000;
switch(n){
case 0b00000000:printf(lcd_char," Disabled");break;
case 0b00001000:printf(lcd_char," 80 Hz");break;
case 0b00010000:printf(lcd_char," 120 Hz");break;
case 0b00011000:printf(lcd_char," 160 Hz");break;
case 0b00100000:printf(lcd_char," 200 Hz");break;
case 0b00101000:printf(lcd_char," 240 Hz");break;
case 0b00110000:printf(lcd_char," 280 Hz");break;
case 0b00111000:printf(lcd_char," 320 Hz");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x8; n&=0b00111000;}
if(term==SW3_ON){ n-=0x8; n&=0b00111000;}
i &= 0b11000111;
i |= n;
if(i!=m){
cs4525_dataout(0x09,i);
write_eeprom(0x09,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

void dispsens(int n)
{
switch(n){
case 0: printf(lcd_char," 0.0"); break;
case 1: printf(lcd_char,"-0.5"); break;
case 2: printf(lcd_char,"-1.0"); break;
case 3: printf(lcd_char,"-1.5"); break;
case 4: printf(lcd_char,"-2.0"); break;
case 5: printf(lcd_char,"-2.5"); break;
case 6: printf(lcd_char,"-3.0"); break;
case 7: printf(lcd_char,"-3.5"); break;
case 8: printf(lcd_char,"-4.0"); break;
case 9: printf(lcd_char,"-4.5"); break;
case 10: printf(lcd_char,"-5.0"); break;
case 11: printf(lcd_char,"-5.5"); break;
case 12: printf(lcd_char,"-6.0"); break;
case 13: printf(lcd_char,"-6.5"); break;
case 14: ;printf(lcd_char,"-7.0"); break;
case 15: printf(lcd_char,"-7.5"); break;
default: break;
}
printf(lcd_char,"dB");
}

int two_way(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d 2way Xover ",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x55);
n &= 0b00001000;
switch(n){
case 0b00000000:printf(lcd_char," Disabled");break;
case 0b00001000:printf(lcd_char," Enabled ");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x8; n&=0b00001000;}
if(term==SW3_ON){ n-=0x8; n&=0b00001000;}
i &= 0b11110111;
i |= n;
if(i!=m){
cs4525_dataout(0x55,i);
write_eeprom(0x55,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int cross_over(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Xover freq.",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x55);
n &= 0b00000111;
switch(n){
case 0b00000000:printf(lcd_char," 2.0kHz");break;
case 0b00000001:printf(lcd_char," 2.2kHz");break;
case 0b00000010:printf(lcd_char," 2.4kHz");break;
case 0b00000011:printf(lcd_char," 2.6kHz");break;
case 0b00000100:printf(lcd_char," 2.8kHz");break;
case 0b00000101:printf(lcd_char," 3.0kHz");break;
case 0b00000110:printf(lcd_char," 3.2kHz");break;
case 0b00000111:printf(lcd_char," 3.4kHz");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x1; n&=0b00000111;}
if(term==SW3_ON){ n-=0x1; n&=0b00000111;}
i &= 0b11111000;
i |= n;
if(i!=m){
cs4525_dataout(0x55,i);
write_eeprom(0x55,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int lp_sens(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d LowPass Sens",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x56);
dispsens( ( n >> 4 ) & 15);
term=CheckB();
if(term==SW4_ON){ n+=0x10; n&=0b11110000;}
if(term==SW3_ON){ n-=0x10; n&=0b11110000;}
i &= 0b00001111;
i |= n;
if(i!=m){
cs4525_dataout(0x56,i);
write_eeprom(0x56,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int hp_sens(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d HighPass Sens",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x56);
dispsens(n & 15);
term=CheckB();
if(term==SW4_ON){ n+=0x01; n&=0b00001111;}
if(term==SW3_ON){ n-=0x01; n&=0b00001111;}
i &= 0b11110000;
i |= n;
if(i!=m){
cs4525_dataout(0x56,i);
write_eeprom(0x56,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

int front_page()
{
int term;

if(cs4525_datain(0x02) & 0x80) printf(lcd_char,"IN:ANL ");
else printf(lcd_char,"IN:DGT ");
dispvol(cs4525_datain(0x57));
lcd_position(0,1); disptone();
term=CheckB();
if(term==SW2_ON) return(1);
if(term==SW1_ON) return(2);
return(0);
}

output_mode(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Output Mode",q);
lcd_position(0,1);
m=n=i=cs4525_datain(0x04);
switch(m&0xc0){
case 0b00000000: printf(lcd_char,"2ch Full Bridge ");break;
case 0b01000000: printf(lcd_char,"2ch HLF+Sub Full");break;
case 0b10000000: printf(lcd_char," 1ch Para Full ");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x40; n&=0b01000000;if(n==0b11000000) n=0b00000000;}
if(term==SW3_ON){ n-=0x40; n&=0b01000000;if(n==0b11000000) n=0b10000000;}
i &= 0b00111111;
i |= n;
if(i!=m){
cs4525_dataout(0x5f,0xff);
delay_ms(10);
cs4525_dataout(0x04,i);
write_eeprom(0x04,i);
cs4525_dataout(0x5f,0xe0);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}


right_mix(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Right Mix",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x06);
switch(m&0b00001100){
case 0b00000000: printf(lcd_char," Right ch.");break;
case 0b00000100: printf(lcd_char," (L+R)/2 ");break;
case 0b00001000: printf(lcd_char," (R+L)/2 ");break;
case 0b00001100: printf(lcd_char," Left ch.");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x04; n&=0b00001100;}
if(term==SW3_ON){ n-=0x04; n&=0b00001100;}
i &= 0b11110011;
i |= n;
if(i!=m){
cs4525_dataout(0x06,i);
write_eeprom(0x06,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

left_mix(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Left Mix",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x06);
switch(m&0b00000011){
case 0b00000000: printf(lcd_char," Left ch.");break;
case 0b00000001: printf(lcd_char," (R+L)/2 ");break;
case 0b00000010: printf(lcd_char," (L+R)/2 ");break;
case 0b00000011: printf(lcd_char," Right ch.");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x01; n&=0b00000011;}
if(term==SW3_ON){ n-=0x01; n&=0b00000011;}
i &= 0b11111100;
i |= n;
if(i!=m){
cs4525_dataout(0x06,i);
write_eeprom(0x06,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

sub_volume(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d Sub volume",q);
lcd_position(0,1);printf(lcd_char," ");
m=n=i=cs4525_datain(0x5a);
dispvol(m);
term=CheckB();
if(term==SW3_ON){ n+=0x01; if(n>=88) n=88;}
if(term==SW4_ON){ n-=0x01; if(n<=8) n=8;}
i = n;
if(i!=m){
cs4525_dataout(0x5a,i);
write_eeprom(0x5a,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

pcm_format(int q)
{
int i,n,m,term;

printf(lcd_char,"M%d PCM Format",q);
lcd_position(0,1);
m=n=i=cs4525_datain(0x02);
switch(m&0b00000111){
case 0b00000000: printf(lcd_char," LJ Up to 24Bit");break;
case 0b00000001: printf(lcd_char," I2S Up to 24Bit");break;
case 0b00000010: printf(lcd_char," Right-J 24Bit");break;
case 0b00000011: printf(lcd_char," Right-J 20Bit");break;
case 0b00000100: printf(lcd_char," Right-J 18Bit");break;
case 0b00000101: printf(lcd_char," Right-J 16Bit");break;
default:break;
}
term=CheckB();
if(term==SW4_ON){ n+=0x01; n &= 7; if(n==0b00000110) n=0b00000000;}
if(term==SW3_ON){ n-=0x01; n &= 7; if(n==0b00000111) n=0b00000101;}
i &= 0b11111000;
i |= n;
if(i!=m){
cs4525_dataout(0x02,i);
write_eeprom(0x02,i);
}
if(term==SW1_ON) return(2);
if(term==SW2_ON) return(1);
return(0);
}

#define MAXTERM (14)

void main()
{
int term2,n;

set_tris_a(0xff);
set_tris_b(0xff);
set_tris_c(0xff);
set_tris_e(0xff);

io_select(); // reset active
delay_ms(500);

lcd_init();lcd_home();
lcd_position(0,0);printf(lcd_char," PA4525 D-Amp v1");
delay_ms(500);
output_high(CS4525_RST); // system start
delay_ms(100);

port_b_pullups(0xff);
lcd_position(0,1);
if(input(SW8)==0){
printf(lcd_char," Simple mode run");
simplemode();
}
else{
printf(lcd_char," Full func mode ");
delay_ms(500);
cs4525_dataout(0x57,0b11111111);
parameter_set();
cs4525_dataout(0x5f,0b11100000);
term2=0;
lcd_position(0,0);printf(lcd_char," ");
lcd_position(0,1);printf(lcd_char," ");
while(1){
lcd_position(0,0);
switch(term2){
case 0: n=front_page(); break;
case 1: n=treble_set(term2); break;
case 2: n=bass_set(term2); break;
case 3: n=treble_corner(term2); break;
case 4: n=bass_corner(term2); break;
case 5: n=bass_management(term2);break;
case 6: n=two_way(term2); break;
case 7: n=cross_over(term2); break;
case 8: n=lp_sens(term2); break;
case 9: n=hp_sens(term2); break;
case 10: n=output_mode(term2); break;
case 11: n=right_mix(term2); break;
case 12: n=left_mix(term2); break;
case 13: n=sub_volume(term2); break;
case 14: n=pcm_format(term2); break;
default:break;
}
if(n==1 || n==2){
lcd_position(0,0);printf(lcd_char," ");
lcd_position(0,1);printf(lcd_char," ");
}
if(n==1) term2++;
if(term2==(MAXTERM+1)) term2=0;
if(n==2) {if(term2==0) term2=MAXTERM; else term2--;}
SetVolume();
SetInput();
SetTone();
}
}
}

Re: PA4525 - ヒロ@出先

2017/07/15 (Sat) 07:16:05

タブが全部飛んでいますね。

Re: PA4525 shinnari

2017/07/15 (Sat) 15:57:40

早速返信いただきありがとうございます。
解読する自信はありませんが、ひとまずお礼まで。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.