O Best-404-Error pergunta se é possível obter um resultado de compilação com menos de 512 bytes se o código-fonte estiver escrito em um idioma de alto nível. Você pode, se simplificar a tarefa atribuída ao firmware.
A implementação do software de um amplificador de classe D permite alterar seus parâmetros (frequência PWM, ciclo de operação em repouso) alterando o firmware.
O diagrama do circuito de hardware do dispositivo:

Os sinais de entrada passam pelos capacitores para cortar o componente DC e depois pelos divisores de resistores, adicionando a eles um novo componente constante da ordem de +0,55 V. Ao mesmo tempo, os capacitores e resistores inferiores dos divisores formam um HPF, frequências de corte abaixo de 28 Hz. A experiência mostrou que é melhor aumentar a frequência de corte desses filtros, porque pequenas distorções ocorrem de qualquer maneira.
Os sinais são alimentados ao primeiro e terceiro ADCs do microcontrolador. A tensão de referência do ADC é escolhida igual a 1,1 V. A taxa de divisão da freqüência do relógio é 16, portanto os ADCs operam na frequência de 500 kHz. A rotina de interrupção percorre o primeiro e o terceiro ADCs. Um dos valores lidos é gravado no OCR1A, o segundo no OCR1B.
O temporizador 1 está configurado para que a unidade nas saídas PWM apareça quando esses valores coincidem e zero - quando o temporizador é zerado. Após o ajuste, essa parte do algoritmo é realizada no hardware, mas, ao mesmo tempo em que a amplitude do sinal, é alterada em relação à frequência originalmente definida e à frequência PWM.
Se o ciclo de trabalho em repouso for selecionado a 50% (melhor qualidade, mas menos econômico), filtros passa-baixo serão necessários na frente dos cabeçotes dinâmicos.
Arquivos:
fonte C ++ ,
resultado da compilação do Atmel Studio 7.0 (495 bytes),
esquema esquemático da Eagle ,
placa nele ,
código G para cortar uma imagem da placa ,
perfurar ,
cortar no tamanho .
Pagamento de um lado:

Cabeças dinâmicas são conectadas através de uma ponte H dupla padrão L293N:

Amplificador em ação: