Hola buenas, a ver si me podeis echar una mano con el amplificador de audio PGA2310 que me está volviendo locooooo!! He hecho un miniprograma para probarlo pero no funciona (os pongo sólo el código relevante)
#use spi(DI=PIN_B4,ENABLE=PIN_B5,DO=PIN_B6,CLK=PIN_B7, BITS=16,MODE=0,stream=SPI)
int16 vol = 0xFFFFL;
spi_xfer(SPI,vol);
while(true){
generate_tone(A_NOTE[2],1000L);
delay_ms(400);
}
He probado a cambiar el mode por 1, 2 y 3 con la siguiete variación del código:
int16 vol = 0xFFFFL;
while(true){
printf("mode 0\n\r");
#use spi(DI=PIN_B4,ENABLE=PIN_B5,DO=PIN_B6,CLK=PIN_B7, BITS=16,MODE=0,stream=SPI)
spi_xfer(SPI,vol);
generate_tone(A_NOTE[2],1000L);
delay_ms(400);
printf("mode 1\n\r");
#use spi(DI=PIN_B4,ENABLE=PIN_B5,DO=PIN_B6,CLK=PIN_B7, BITS=16,MODE=1,stream=SPI)
spi_xfer(SPI,vol);
generate_tone(A_NOTE[2],1000L);
delay_ms(400);
printf("mode 2\n\r");
#use spi(DI=PIN_B4,ENABLE=PIN_B5,DO=PIN_B6,CLK=PIN_B7, BITS=16,MODE=2,stream=SPI)
spi_xfer(SPI,vol);
generate_tone(A_NOTE[2],1000L);
delay_ms(400);
printf("mode 3\n\r");
#use spi(DI=PIN_B4,ENABLE=PIN_B5,DO=PIN_B6,CLK=PIN_B7, BITS=16,MODE=3,stream=SPI)
spi_xfer(SPI,vol);
generate_tone(A_NOTE[2],1000L);
delay_ms(400);
}
y por supuesto tampoco funcionó. Pero lo realmente raro fué cuando una vez, por casualidad lo dejé correr varios ciclos y derrepente empezó a funcionar!!! Concrétamente en el tercer ciclo, al llegar al "mode 3" empezaba a sonar!!! Hize una nueva modificación del código de esta manera:
#use spi(DI=PIN_B4,ENABLE=PIN_B5,DO=PIN_B6,CLK=PIN_B7, BITS=16,[b]MODE=3[/b],stream=SPI)
int16 vol = 0xFFFFL;
delay_ms(3000);
while(true){
printf("mode 3\n\r");
spi_xfer(SPI,vol);
generate_tone(A_NOTE[2],1000L);
delay_ms(400);
}
y efectívamente, al tercer ciclo empezó a sonar el buzzer así que descartado que pudiera ser un tema de estabilización del integrado! Yo ya no sé qué más hacer... es subrealista!! ¿¿Alguna sugerencia??
PD: quizás debería haber puesto el post en foro técnico...