Modificar instrucciones predefinidas por arudino

Buenas noches.

Estoy trabajando hace poco en un proyecto sobre modulación digital, para esto necesito alcanzar velocidades relativamente altas, noté que con la instrucción digitalRead y digitalWrite se perdia mucho tiempo, asi que comence a manipular el puerto y todo va mucho mejor.

Mi pregunta es, hay alguna forma de modificar la instruccion digitalWrite para evitar que haga tantos llamados innecesarios o puedo crear mi propia funcion donde unicamente se valide el bit que se desea modificar para evitar perder tiempo?

También, como puedo ver las instrucciones que ejecuetan las instrucciones predefinidas por arduino como analogRead o analogWrite Etc ...?

Y por último, existe algun manual donde pueda consultar todas las instrucciones en assembler que puedo implementar con arduino asi como su duracion en ciclos de reloj?

Espero me puedan ayudar, y muchas gracias.

jeec632:
Mi pregunta es, hay alguna forma de modificar la instruccion digitalWrite para evitar que haga tantos llamados innecesarios o puedo crear mi propia funcion donde unicamente se valide el bit que se desea modificar para evitar perder tiempo?

Se puede, pero quedarías casi en las mismas. Lamento decirte que no hay nada más rápido que manipular los registros según la necesidad del momento; cualquier intento de simplificación inevitablemente agregará más ciclos de reloj para realizar la misma tarea.

jeec632:
También, como puedo ver las instrucciones que ejecuetan las instrucciones predefinidas por arduino como analogRead o analogWrite Etc ...?

No recuerdo la ubicación exacta, pero tendrías que explorar entre tantas carpetas para encontrarte con archivos h y cpp que inicien con 'W' (partiendo de la ruta de instalación de la IDE). En alguna de esas los encontrarás.

jeec632:
Y por último, existe algun manual donde pueda consultar todas las instrucciones en assembler que puedo implementar con arduino asi como su duracion en ciclos de reloj?

La hoja de datos del microcontrolador. Creo que al final hay un apartado con una tabla que enlista todas las instrucciones que el microprocesador puede ejecutar, y su duración. Si estamos hablando de AVR, recuerda que toda operación se hace con datos de 8 bits a la vez.

Mi pregunta es, hay alguna forma de modificar la instruccion digitalWrite para evitar que haga tantos llamados innecesarios o puedo crear mi propia funcion donde unicamente se valide el bit que se desea modificar para evitar perder tiempo?

Si hubiera un modo no crees que sería el que encontrarías para digitalWrite/Read?

Para todo lo demás manual o sea hoja de datos, y programa en assembler ya que tu común denominador es la velocidad.