Hola a todos!
Necesito armar un reloj de 24hs y quiero hacerlo usando el Attiny85.
He leído que el reloj interno no es preciso y por ello es necesario usar un cristal externo.
Quisiera saber si al configurar al Attiny85 como reloj externo a 16mhz y colocar el cristal correspondiente, las funciones como "delay" van a funcionar como corresponde y si va a ser posible seguir programándolo por ISP?
Necesito usar el PWM, ADC y una interrupción interna cada 1seg. Al tener un único Timer el Attiny, el uso simultaneo del PWM e interrupciones se pueden ejecutar simultaneamente?
La función de analogRead, en el Arduino UNO trabaja a 10bit de conversión. En el atinny85, también sucede lo mismo? He leído que puede funcionar a 8 o 10bit, pero no me queda claro como debo configurarlo a 10bit o si viene por defecto con el bootloader configurado para ser usado a 10bit.
Gracias!
Sebas. No estoy familiarizado con el Attiny pero si con el Uno y la presición de los cristales suele ser mala. En 30 placas que compré de una misma partida dificilmente dos andaban al mismo ritmo. Lo aconsejable para un reloj es utilizar un módulo RTC. Eso te va a dar presición a lo largo del tiempo y no son muy costosos.
Puedes usar un DS3231 con batería recargable incorporada, así "no perderás el tiempo" si tu arduino se queda sin energía
Puedes acceder a los registros directamente para minimizar el código, el mejor tutorial para el ds3231 sin usar librerías es este
sebas1987:
Quisiera saber si al configurar al Attiny85 como reloj externo a 16mhz y colocar el cristal correspondiente
Hola. Quise hacerme con un ATtiny85 y acabé teniendo cinco bichos con los que cacharrear. 
Es más preciso el oscilador interno de 8Mhz que el externo a 16Mhz. El externo a 16Mhz se adelanta algo. No sé cuánto, pero lo suficiente para que en el osciloscopio se vaya descuadrando con las divisiones. El oscilador interno de 8Mhz a primera vista, sí va cuadrado con las divisiones del osciloscopio. No sé porqué se adelanta con cristal externo, así que por el momento estoy usando, para aprender a usarlo, el reloj interno de 8Mhz. 
sebas1987:
Quisiera saber si al configurar al Attiny85 como reloj externo a 16mhz y colocar el cristal correspondiente, las funciones como "delay" van a funcionar como corresponde y si va a ser posible seguir programándolo por ISP?
- Sí y solo si modificas un dato en la "placa" a utilizar en boards.txt: F_CPU debe ser 16000000 entonces. Ya después se supone que en tiempo de compilación se escogen las configuraciones adecuadas para que millis() y micros() funcionen correctamente.
- ICSP se supone que debe funcionar independientemente del oscilador; ya que es el programador quien marca el ritmo de los datos. ICSP en escencia es SPI, por lo tanto tiene su propia señal de reloj.
De lo último comprendo la duda. Como el Arduino Uno y similares son programables por puerto serial, y el bootloader que lo permite está calibrado para cierto cristal oscilador (recuerda que UART no tiene señal de reloj, entonces la velocidad se supone "ciegamente"; por eso escuchas eso de "la velocidad debe ser igual en ambas partes" únicamente en los puertos seriales UART, y nunca en I2C o SPI); asumiste que lo mismo pasaba con ICSP.
Pues no hay problema, un ATtiny85 se puede programar con independecia del oscilador; o al menos eso tengo entendido.
sebas1987:
Al tener un único Timer el ATtiny, el uso simultaneo del PWM e interrupciones se pueden ejecutar simultaneamente?
Falso, tiene dos timers; lo que pasa es que sólo uno controla la generación de PWM (en realidad los dos pueden hacerlo, pero es difícil de explicar cuando se lee brevemente la hoja de datos).
Ya que tienes un timer extra, lo puedes usar para la interrupción temporizada. Pero si tanto te preocupan los posibles efectos secundarios (incluido el alterar el funcionamiento de millis() y micros()), investiga sobre PWM en un ATtiny85; no cómo utilizarlo, sino cómo funciona.
sebas1987:
La función de analogRead, en el Arduino UNO trabaja a 10bit de conversión. En el atinny85, también sucede lo mismo? He leído que puede funcionar a 8 o 10bit, pero no me queda claro como debo configurarlo a 10bit o si viene por defecto con el bootloader configurado para ser usado a 10bit.
Veo que estás confundido. Vamos a aclarar varios puntos:
- La resolución del ADC sólo es alterable en los microcontroladores con ARM (ej.: Arduino Due); para AVR (el ATtiny85 está dentro de esta familia) siempre será de 10 bits. Si por alguna razón necesitaras lecturas con menor resolución, simplemente descarta los bits menos significativos mediante desplazamientos a la derecha.
- El ATtiny85 no tiene capacidad de alojar un bootloader, por eso sólo existe un método para programarlo: ICSP. Además, hasta donde sé, ni siquiera en los fuses he visto que se pueda cambiar la resolución del ADC.
Y ahora que hablo de fuses, ¿sabías que tienes que reprogramarlos para aceptar osciladores externos? ¿Y que al hacerlo pierdes 2 de los apenas 5 GPIOs que tiene (6 si deshabilitas el RESET, lo cual no recomiendo)?