In einer ISR mehr als einen Wert Auszugeben, bringt schon einiges. Man kann dann nähmlich als erstes und letztes jeweils einen Wert Ausgeben. Die Werte berechent man dann nacheinander und fürgt an der richtigen Stelle jeweils eine Ausgabe ein. Man ist dadurch nur durch die die Zeit begrenzt, die es braucht den Interrupt zu verlassen, einen Befehl auszuführen und den nächsten Interrupt auszuführen. Das sollten rund 10 Zyklen sein, denn man kann den Code direkt beim Interruptverktor starten, denn mehr als den einen Interrupt kann man kaum gebrauchen.

Das mit der längeren tabelle bringt im wesenlichten etwas bei Niedrigeren Frequenzen. Immerhin wird aber schon bei rund 8 kHz jeder Tabellenwert bei einer 256 Elemente tabelle genutzt. Auch kann der Sprung von einem tabellenwert zum nächsten Wert schon 3 (eventuell sogar 4 ?) LSB betragen. Es macht also schon noch sinn eine feinere Tabelle zu nutzen. Die extra Chips wie der AD9833 machen das immerhin auch, und das bestimmt nicht aus Spass. Für die Version mit ISR macht es auch keinen wesentlichen Geschwindigkeitsunterschied, denn das verlängert die Verzögerung nicht, und Berechnung kann weiter unter 10 Zyklen bleiben. Auf ein paar Bytes längeren Code kommt es in der Regel nicht an.
Das man ein Byte mehr für den Phasenakumulator braucht, benötigt auch nur 1 Zyklus mehr, und man nutzt immerhin 2 der Bits auch wirklich. Wenn die Tabelle günstig im Flash liegt (z.B. ab 0x0800) braucht man auch nur eine Zyklus, um für den Überlauf nach 10 Bits zu sorgen ( ANDI ZH, 0x0BFF).

Für höhere Frequenzen ist der AD9833 aber sicher die bessere Alternative. Dabei sind die 10 MHz Grenzfrequenz aber auch mit nur mit 2,5 Punkten pro Periode.
Eine weitere Quelle wäre da TME.eu (EUR 8,00 + 22% polnische Mwst.), allerdings mit eher hohen Versandkosten.