Т.к. DAC в этом камне нет, то можно реализовать это на PWM с дальнейшим сглаживанием.
PWM может работать автоматически после инициализации, без участия программы. Но чтобы получить сигнал определённой формы, придётся ему периодически менять значения. Т.е. потребуется пара таймеров, один для PWM, второй для шагов. Синус, и другие не линейные штуки, можно делать по заранее заготовленной таблице, обходя её циклически, экономя вычислительные ресурсы.
А вообще, function signal generator или waveform generator погуглить, реализаций много, в частности на AVR.
P.S. Если подойдёт просто меандр, то вообще достаточно одного таймера в режиме PWM.