В общем делаю управление процессором звука по i2c, контроллер мега32а, дисплей от самсунга. Проблема в переменных, которые изменяются непонятно как, а именно. Усиление, высокие и басс, все считатется нормально. LF (левый фронт) тоже вроде бы как все нормально числа переключает, от 1 до 32 значение, соотвествует посылки в процессор числа от 159 до 128. А вот правый фронт ведет себя странно, точнее его переменная. При нажатии кнопок + и -, точнее во время того как они срабатывают, числа в проц идут как надо от 191 до 160 (32шага), после того как операция выполнена, в переменной записывается совсем другое число. Также оно зависит и от переменной LF. Вот думаю может это бок самого CVA.
Код: Выделить всё
/****************************************BASS******************************************************************/
if(BASY==1){BASR++; if(BASR>16){BASR=16;} if(BASR<=8){BASS=map(BASR,1,8,96,103);} if (BASR>9){BASS=map(BASR,9,16,111,104);}}
if(BASN==1){BASR--; if(BASR<1){BASR=1;} if(BASR<8){BASS=map(BASR,1,8,96,103);} if (BASR>=9){BASS=map(BASR,9,16,111,104);}}
sprintf( BASRS,"%03d", BASS ); //отправить на проц
LCDtext2(160,7,BASRS, 0 , 255 , 0 ,0,0,0,3);
sprintf(BASSS,"%02d", BASR ); // ступень на экране
LCDtext2(152,251,BASSS, 0 , 255 , 0 ,0,0,0,2);
/**************************************************************************************************************/
/*************************************************LF************************************************************/
if(LFY==1){LFF++; if(LFF>32){LFF=32;} LFFL=(159-LFF)+1;}
if(LFN==1){LFF--; if(LFF<1){LFF=1;} LFFL=(159-LFF)+1;}
sprintf( LFS,"%03d", LFFL ); //отправить на проц
LCDtext(45,60,LFS, 0 , 255 , 0 ,0,0,0,3);
sprintf(LFSS,"%02d", LFF ); // ступень на экране
LCDtext2(152,51,LFSS, 0 , 255 , 0 ,0,0,0,2);
/***************************************************************************************************************/
/***********************************************RF*****************************************************************/
if(RFY==1){RFront++; if(RFront>32){RFront=32;} RFrontP=(191-RFront)+1;}
if(RFN==1){RFront--; if(RFront<1){RFront=1;} RFrontP=(191-RFront)+1;}
sprintf( RFstp,"%03d", RFrontP);
LCDtext(45,110,RFstp, 0 , 255 , 0 ,0,0,0,3);
sprintf(RFstc,"%02d", RFront ); // ступень на экране
LCDtext2(152,101,RFstc, 0 , 255 , 0 ,0,0,0,2);
Функция мар аналог такой же функции как в ардуино.
Цифры слева, то что нужно передать в аудиопроц.
http://youtu.be/APKUcKVB-Lg