Wär' mit einem Timerinterrupt gut möglich.

TimerX_ISR:
TimerX = XYZ 'halbe Periode
Pinx.y = not Pinx.y
return

sind so meine ersten Gedanken wie ich die Frequenz generieren würde.