ATtiny85 y la función millis() no es un tiempo real??

Buenas a todos... Hace poco gracias a un compañero de este foro, descubro este chiquitín, esta limitado pero para ciertas cosas puede venir bien... El caso es que después de leer mucho por google y otros blogs del tema, he conseguido hacerme un programador, para poder programarlo con mi arduino UNO. Hasta ese paso todo bien, he conseguido cargarle varios programas para leer entradas y activar salidas.. pero tengo un par de problemas, y creo que todos vienes derivados de lo mismo... A la hora de programalo, hay que seleccionar el tipo de reloj del ATtiny85 y hay tres opciones, 1Mhz interno, 8Mhz interno o 20 Mhz externo

si cargo el scketch de ejemplo blink, y los programo usando las tres opciones, el que mas se aproxima al tiempo del sketch el al grabarlo a 1Mhz interno, pero creo que tampoco el 100% preciso. si lo programo usando las otras dos opciones los tiempos cambian mucho, del orden de 3 o 4 segundos.

quiero enviar un pulso a traves de un led IR de 356Ms pero es imposible ya que no me coinciden los tiempos, y usando la librería IRTiny, que supuestamente envía códigos en protocolo NEC tampoco me funciona correctamente...(he montado un lector de códigos NEC con un arduino UNO y los del mando de la TV los lee bien)

Hay alguna forma de corregir esto?? he visto algo de usar TinyTuner para calibrar, pero no consigo hacerlo...(me da errores al compilar) estoy usando la versión 1.0.5 del IDE arduino... y el codigo del protocolo NEC seria el siguiente:;

include "IRTinyTX.h" //short version on IR library with only TX function for NEC protocol

define alloff 0x00FF00FF

IRsend irsend;

void setup(void) { irsend.enableIROut(38); // Enable phase-correct PWM with a frequency of 38kHz }

void loop(void) { irsend.sendNEC(alloff, 32); delay(100); //delay between two TX }