Menú
Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Foros
Diseño digital
Microcontroladores y sistemas embebidos
¿Como hacer un convertidor A/D utilizando un ATmega328p enviado a un 74hc595?
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="Daniel Meza, post: 1109833, member: 29270"] Hola. Lo que creo sucede es que como tu registro de desplazamiento se va actualizando cada que entra un bit, el efecto acumulado del recorrido de los 8 bits causa fantasmas en el display. Para evitarlo te sugiero dos alternativas: 1-Utilizar en lugar del 4094 al 74HC595 como comentaste en un inicio, este registro serie trae una señal extra de reloj que sirve para actualizar de "jalón" los 8 bits que tiene el registro de desplazamiento. Me explico, internamente tiene dos registros, uno de desplazamiento y un latch, una señal de reloj ingresa los datos serie como sucede con el 4094; pero estos datos no se pasan a las salidas sino hasta que se da un pulso en el reloj del latch [IMG]http://www.bristolwatch.com/ele2/MM5451/74HC595_arduino.jpg[/IMG] Mediante esta forma utilizas una línea más del micro para el otro reloj pero te evitas el problema de los fantasmas en los displays. 2- La otra alternativa es controlar los comúnes de cada display y solo activarlas cuando se haya enviado por completo el dato serie desde el micro. De cualquier manera te dejo un par de funciónes que precisamente ando utilizando en un proyecto para manejar un 74HC595 externo: [code]void SPI_Init(void) { SPCR = (1<<SPE)+(1<<MSTR)+(1<<SPR0)+(1<<SPIE); //Reloj Fosc/64 =125KHz, modo maestro, habilita interrupción }[/code] Esta función inicializa el puerto SPI de un ATMega8 Para enviar datos uso esta función [code]PORTB &= ~(1<<CKL_STO); //Línea de captura en bajo SPDR = REGDESP; //Envía datos al registro externo [/code] y al momento de que se genera la interrupción por el envío completo de los 8 bits cierro el registro serie con esta ISR (Interrupt Service Rutine) [code]ISR(SPI_STC_vect) { PORTB |= (1<<CKL_STO); //Captura estado en registro externo PORTB &= ~(1<<CKL_STO); }[/code] CKL_STO lo puedes definir como un pin extra donde desees, este servirá para guardar los datos en el latch del 595. Saludos [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
¿Como hacer un convertidor A/D utilizando un ATmega328p enviado a un 74hc595?
Arriba