¿Es sabio usar un Arduino para alimentar un oscilador de cristal?

0

Estoy construyendo un pequeño reproductor de audio VGM.

Actualmente tengo un SN76489 ( aquí ) que está sincronizado desde un% co_de Oscilador de cristal%.

Cuando enciendo el circuito por primera vez, el SN76489 puede tener cualquier valor aleatorio que cause un tono / zumbido realmente molesto hasta que el Arduino Micro ( aquí ) se enciende y comienza a ejecutar mi código.

Sé que parte de eso es el cargador de arranque en el Micro y cuando coloco un microcontrolador permanente, parte de eso puede desaparecer. Pero todavía quiero que el SN76489 esté inmediatamente en silencio durante el encendido.

Así que pensé que conectaría un pin de salida en el Arduino como el VCC para el cristal.

Funciona muy bien.

Por cierto, incluso atar el SN76489 CE a ALTO en el inicio y cambiarlo a GND no funciona. Lo que quede en el chip es lo que juega.

De todos modos, antes de hacer eso, medí la corriente tanto para el oscilador como para el SN76489 para ver cuál atrae la menor cantidad. El Arduino dice que puede proporcionar 40 mA por pin de salida. Para el SN76489 mi multímetro decía 1,2 mA y el oscilador decía 0,72 mA.

Ahora, a pesar de que el Arduino proporciona VCC al oscilador, el multímetro ahora muestra 1.87mA.

¿Por qué ahora consume más corriente cuando está conectado al 5v OUT del Arduino?

Y, ¿parece esto una forma inteligente de hacerlo o no es aconsejable alimentar dispositivos pequeños como este?

¡Gracias!

    
pregunta cbmeeks

2 respuestas

3

El encendido de un chip / oscilador de cristal desde un pin IO no es una buena práctica cuando puede haber señales en otros pines. Esto puede hacer que el chip se enganche y posiblemente se autodestruya. Siempre asegúrese de que un chip tenga potencia antes de ver cualquier señal en sus entradas / salidas.

Puede escapar usando un pin GPIO para silenciar la salida usando un transistor. Requeriría un poco de experimentación con valores exactos, pero básicamente funciona de la siguiente manera:

  • Agregue una resistencia en serie a la salida del generador de sonido
  • Agregue un transistor que pueda arrastrar la salida del generador de sonido con la resistencia en serie a tierra.
  • Conduzca el transistor desde un pin GPIO digital. Conéctelo de tal manera que por defecto esté en corto a tierra y solo cuando maneja el pin GPIO de su código que libera la salida de audio.
respondido por el jippie
4

Conecte la entrada de reloj del SN76489AN al OC4A u OC4B en el Arduino (patillas 13 o 10). Cuando se inicie el código en el Arduino, configure el reloj y el pin para generar una onda en la frecuencia apropiada.

PLLFRQ |= _BV(PLLTM1); // Enable PLL for high-speed timer 4
TCCR4A |= _BV(COM4A1) | _BV(PWM4A); // Configure OC4A for PWM operation
OCR4A = 8; // Set OC4A high for 9 cycles of a...
OCR4C = 17; // ... 18 cycle period
TCCR4B |= _BV(CS40); // Configure timer 4 for 64MHz

El código dado generará una onda cuadrada de 3.55556 MHz a partir de OC4A.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas