Spoko, tylko to jest na ATmega128. Co do kart pamięci to musiałbyś napisać obsługę sam. Generalnie poczytaj notę katalogową.
//inicjalizacja Timera 0 jako generatora PWM
void Timer0_PWM_mode()
{
DDRB |= (1<<4);
TCCR0 |= (1<<WGM00) | (1<<WGM01) | (1<<COM01) | (1<<CS00);
}
//inicjalizacja Timera 3 do odmierzania okresu probkowania
void Timer3_timer_mode()
{
TCCR3A = 0x00;
TCCR3C = 0x00;
OCR3A = 2999;
ETIMSK |= (1<<OCIE3A);
TCCR3B = 0x09;
}
//Tablica ze spróbkowanym sinusem
char SineTable[8] PROGMEM = {128,219,255,219,128,37,0,37};
//zmiana probki sygnalu w przerwaniu Timera 3
SIGNAL(SIG_OUTPUT_COMPARE3A)
{
OCR0 = (pgm_read_byte(&SineTable[SineInd]));
SineInd++;
if (SineInd == 8) SineInd = 0;
}
Jakoś tak. Ale musisz uwzględnić inny sprzęt w ATtiny i próbki pobierać z karty, a nie z pamięci programu. U mnie kwarc był 16 MHz, czyli tutaj częstotliwość próbkowania wynosiła akurat 4kHz, o ile pamiętam. Decyduje o tym wartość OCR3A.
Edit: Najmocniej przepraszam, przeoczyłem, że to BASCOM. Ale może kod w C się komuś przyda.