Arduino: programmatic deshabilitar cristal / cambiar prescaler del reloj del sistema

4

Tengo una placa ATtiny2313 que no tiene un cristal instalado. De acuerdo con la documentación , parece que se ejecuta de forma predeterminada en 1MHz. Debido a que esta placa solo permite la programación de ISP, pensé en probar primero el código relacionado con el temporizador en Arduino (con ATmega 328, pero usando solo las funciones que también estarían disponibles en ATtiny2313).

Preguntas:

  • ¿Cómo deshabilitar el cristal de Arduino (temporalmente) sin tener que configurar fusibles (no quiero enviar mi AVR al infierno)?
  • ¿Es posible cambiar el prescaler del reloj del sistema por código, por ejemplo? ¿Para cambiar el reloj del sistema del ATtiny2313 de 1MHz a 8MHz?
pregunta Mike L.

1 respuesta

4

Sí, observe la configuración de los bits de fusible para utilizar el oscilador interno en lugar de un cristal externo. Con el registro OSCCAL puede incluso ajustar el oscilador RC interno en el arduino para imitar su ATtiny2313. Una vez que hayas hecho esto

  

Si el oscilador RC calibrado interno se utiliza como fuente de reloj de chip, PB7. . .6 se utiliza como entrada TOSC2 ... 1 para el temporizador / contador asíncrono2 si se establece el bit AS2 en ASSR.

Consulte la página 3 y la página 84 de la hoja de datos para el ATmega328P que es el microcontrolador tu arduino.

Respuesta al comentario Oh, podría estar malinterpretando tu pregunta. Los fusibles son "de una sola vez" con respecto a su programa, ya que una vez que están configurados y su programa se está ejecutando, ya no se pueden cambiar hasta que los vuelva a programar. Se utilizan para seleccionar qué fuente de reloj se está utilizando.

Sin embargo, se pueden configurar muchas veces si intenta simular su programa en diferentes frecuencias de reloj. Ah, y hasta la última parte, no creo que haya una manera de cambiar los fusibles con un programador USB / FTDI. Para obtener más información sobre los fusibles, consulte aquí .

Si está preguntando si hay una manera de cambiar la configuración de los fusibles a través de la placa arduino, creo que la respuesta es no. Necesitas usar algo como el STK-500 o AVR-ISP mkII. También tenga en cuenta que estos programadores también se conectan a su puerto USB en su computadora, pero no usan el chip FTDI como lo hace la placa arduino.

    
respondido por el NickHalden

Lea otras preguntas en las etiquetas