Hola.
Sin entrar en el cálculo de tu timer, creo que el Arduino las va a pasar canutas para poder realizar lo que le pides. Igual me equivoco en mis apreciaciones, pero así a ojo de buen cubero, si el arduino realiza 16 millones de operaciones por segundo (una por ciclo de reloj) y estás pidiendo que haga 2 millones de escrituras por segundo, cada ciclo de escritura de tu programa debería consumir 8 ciclos de procesador como máximo. Si tenemos en cuenta que cada instrucción en ensamblador consume mínimo un ciclo, los saltos mínimo dos ciclos, el retorno de interrupción 5 ciclos... creo que ya nos pillamos los dedos.
Si se trata de algo muyyyyyyy específico y muyyyyy sencillo, vamos, que pudiera hacerse en un ciclo de 8 instrucciones de ensamblador, tal vez deshabilitando todas las interrupciones y ajustando para que consuma esos 8 ciclos podrías llegar a obener algo parecido.
Es mi impresión, pero a ver si alguien más opina.
Saludos.