• 1) I think more than 256 samples is useless for 8 bit R2R DAC, you can not output more details than 2^8;
2) Do not affraid to put signal reference tables to atmega, you just need to put them into flash, not RAM. Use PROGMEM

const uint8_t sin_wave[256] PROGMEM = {
0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,………..(any wave form 256 samples with values 0x00 to 0xff)
};

and access data from flash with pgm_read_byte like

uint16_t counter = 0;
while(1)
{
counter += sk; //you should calculate step value for frequency required