Looking at the assembly, the ISR is around 30 instructions, so accounting for some over head outside the ISR, generating a sinewave at a 44.1Khz sample rate is using around 2% of the Arduino Due processing time. Its huge improvement over the UNO which would really struggle with 44.1Khz. A lot of the improvement is due to the Due being able to operate on 32 bits at a time, the UNO needs 4 cycles to process 32 bits. Add the faster processor clock and the Due is cruising.
Not much happening here -
00080198 <TC4_Handler>:
80198: 2101 movs r1, #1
8019a: b510 push {r4, lr}
8019c: 480c ldr r0, [pc, #48] ; (801d0 <TC4_Handler+0x38>)
8019e: f000 f9a3 bl 804e8 <TC_GetStatus>
801a2: 4b0c ldr r3, [pc, #48] ; (801d4 <TC4_Handler+0x3c>)
801a4: 6819 ldr r1, [r3, #0]
801a6: 4b0c ldr r3, [pc, #48] ; (801d8 <TC4_Handler+0x40>)
801a8: 681a ldr r2, [r3, #0]
801aa: 188a adds r2, r1, r2
801ac: f1b2 5f16 cmp.w r2, #629145600 ; 0x25800000
801b0: 601a str r2, [r3, #0]
801b2: d901 bls.n 801b8 <TC4_Handler+0x20>
801b4: 2200 movs r2, #0
801b6: 601a str r2, [r3, #0]
801b8: 4b07 ldr r3, [pc, #28] ; (801d8 <TC4_Handler+0x40>)
801ba: 4808 ldr r0, [pc, #32] ; (801dc <TC4_Handler+0x44>)
801bc: 681a ldr r2, [r3, #0]
801be: 4b08 ldr r3, [pc, #32] ; (801e0 <TC4_Handler+0x48>)
801c0: 0d12 lsrs r2, r2, #20
801c2: f833 1012 ldrh.w r1, [r3, r2, lsl #1]
801c6: e8bd 4010 ldmia.w sp!, {r4, lr}
801ca: f000 b9e6 b.w 8059a <dacc_write_conversion_data>
801ce: bf00 nop
801d0: 40084000 .word 0x40084000
801d4: 20070564 .word 0x20070564
801d8: 20070568 .word 0x20070568
801dc: 400c8000 .word 0x400c8000
801e0: 2007076c .word 0x2007076c
Assembly generated using -
http://rcarduino.blogspot.com/2012/09/how-to-view-arduino-assembly.htmlDuane B