Eine zeitliche Verzögerung ist ein einfaches Mittel, um aus einem
Monosignal ein Stereo-ähnliches Signal zu bilden. Im Amateurfunk wird
das Verfahren angewandt, um mit einem Stereo-Kopfhörer einen
angenehmeren Klang zu erzielen. Eine Seite des Kopfhörers erhält das
originale Signal aus dem Empfänger, die andere ein zeitversetztes
Signal. Eine Verzögerung von 2 ms hat sich als günstig erwiesen. Das
Hintergrundrauschen verteilt sich damit scheinbar auf den ganzen Raum,
während ein Funksignal an einer bestimmten Stellte zu stehen scheint.
Das Mithören ist auf diese Weise entspannter und weniger ermüdend, auch
und besonders für sehr schwache Signale, die sich kaum aus dem Rauschen
erheben.
Hier wird der Tiny3216 verwendet, weil er einen DA-Wandler besitzt. Das
originale Audiosignal wird über den AD-Wandler mit einer Auflösung von
8 Bit und einer Abtastrate von ca. 50 kHz erfasst und in einen
Ringspeicher mit einer Größe von 256 Bytes geschrieben. An einer
anderen Stelle im Speicher wird das verzögerte Signal entnommen und an
den DA-Wandler übergeben. Die Mess- und Ausgabeschleife benötigt ca. 20
µs für einen Durchlauf. Die analoge Ausgabe verwendet Daten, die 100
Messungen zurückliegen, sodass eine Verzögerung von 2 ms entsteht. Mit
einem veränderten Abstand lassen sich ca. 0 ms bis zu 5 ms
einstellen.
//AudioDelay3216 ADC0-AIN1, DAC0-OUT
#define F_CPU 3333333
#include <avr/io.h>
int main(void){
uint8_t ring[255];
uint8_t pos1 = 0;
uint8_t pos2;
ADC0.CTRLA = ADC_ENABLE_bm;
ADC0.MUXPOS = ADC_MUXPOS_AIN1_gc;
ADC0.CTRLA = ADC_ENABLE_bm | ADC_RESSEL_8BIT_gc;
ADC0.CTRLC = ADC_PRESC_DIV2_gc ;
VREF.CTRLA = VREF_DAC0REFSEL_2V5_gc|VREF_ADC0REFSEL_2V5_gc;
DAC0.CTRLA = DAC_OUTEN_bm|DAC_ENABLE_bm;
PORTA.DIR = PIN7_bm;
while(1){
ADC0.MUXPOS = ADC_MUXPOS_AIN1_gc;
ADC0.COMMAND = ADC_STCONV_bm;
while (!(ADC0.INTFLAGS & ADC_RESRDY_bm));
ring[pos1] = ADC0.RES;
pos2=pos1-100; //100*20µs=2ms
DAC0.DATA = ring[pos2 & 1023]; //DA an PA6
pos1++;
PORTA.OUTTGL = PIN7_bm;
}
}
Eine Seite des Kopfhörers ist direkt an die Mono-Audioquelle, also z.B.
an den Ausgang des Kurzwellenempfängers angeschlossen. Das Signal
gelang gleichzeitig an den analogen Eingang des Controllers und wird
auf eine mittlere Gleichspannung unterhalb 2,5 V gelegt. Der
DAC-Ausgang kann dank seines internen Puffer-Verstärkers einen 32-Ohm
Kopfhörer direkt treiben und steuert so die zweie Seite des Kopfhörers
an. Besser ist es allerdings, wenn man beide Kapseln des Kopfhörers mit
100 Ohm in Reige schaltet.
Das Zweikanal-Oszillogramm oben zeigt die Phasenverschiebung eines
Signals mit rund 1 kHz bei gleicher Ausgangsamplitude. Man erkennt die
begrenze Auflösung des DAC-Ausgangssignals, aber sie ist akustisch kaum
wahrnehmbar. Das Gerät ist damit voll einsetzbar.