¿Se puede ejecutar ATmega88 a 3.3 V con reloj interno?

1

Quiero usar algunos ATmega88s con los cargadores de arranque Arduino para que actúen como controladores paso a paso I2C y controladores de temperatura que se interconectarán con una Raspberry Pi. El problema es que parece que las interfaces RPi con 3.3V, por lo tanto, necesito ejecutar ATmega a 3.3V en lugar de 5V para no dañar el RPi sin la necesidad de un cambio de nivel o estaré bien a 5V siempre que Los atmegas actúan como esclavos (leo algo así, pero no sé si es así).

Si todavía necesito usar 3.3V, ¿podría hacerlo usando el reloj interno o tendré que usar un reloj externo? Además, todavía podré actualizar el cargador de arranque en los ATmegas usando un Arduino existente a un voltaje más bajo (tengo la sensación de que podría interferir con la velocidad de comunicación, pero no estoy seguro de que este sea el caso). Si fuera necesario, probablemente podría ejecutar el ATmega a 5 V inicialmente solo para actualizar el cargador de arranque, pero tampoco estoy seguro de si funcionará.

Sé que probablemente me esté haciendo la vida difícil al no usar los cambiadores de nivel, etc. pero quiero usar los componentes mínimos para este proyecto. Además, si la 3.3V afecta la comunicación, ¿tendrá un efecto en mi interfaz I2C?

    
pregunta Gerharddc

2 respuestas

3

Sí, puedes usar el reloj interno con Mega88 + Arduino.

Para lograr esto, necesita grabar el gestor de arranque de forma diferente:

  1. Descargue el cargador de arranque de 8MHz
  2. si usa AVRDUDE para actualizar el cargador de arranque, cambie la configuración del fusible como se muestra a continuación:

    # fuses for 8MHz internal RC Oscillator
    avrdude -e -U lock:w:0x3f:m -U lfuse:w:0xd4:m -U hfuse:w:0xca:m
    
  3. Cambie la configuración en su entorno arduino (preferences.txt)

    change      build.f_cpu=16000000L   
    to          build.f_cpu=8000000L
    
  4. Edite el archivo make:

    In <arduino>/lib/targets/arduino edit makefile
    change    F_CPU = 16000000
    to        F_CPU = 8000000
    
respondido por el Chetan Bhargava
1

Necesitará un cargador de arranque para el ATMega88 con la opción de reloj interno de 8 mhz. Todavía puedes flashearlo con la tabla de arduino 5v regular. De hecho, algunos arduinos oficiales como el lilypad utilizan el reloj interno de 8 mhz a 3.3 v estándar.

En cuanto a la interfaz, la línea ATmega normalmente requiere VCC * 0.6 para una lógica alta, que a 5v VCC es 3v. Usted podría, con solo una comunicación unidireccional, conectar el RPI a un Arduino de 5v sin ningún problema. Podrías usar un diodo orientado hacia el RPI. A niveles de señal, el diodo no bajará demasiado, aunque Germanium o Schottky podrían ser mejores que los diodos de silicio normales.

Dado que se trata de i2c, que es un sistema de colector abierto, simplemente usaría pull-ups conectados al suministro de 3.3v, en lugar del suministro habitual de 5v. El arduino aún debería leerlo sin problemas.

    
respondido por el Passerby

Lea otras preguntas en las etiquetas