El programador serial no funciona, ¿cuáles son las posibles fuentes de problemas?

1

He estado tratando de hacer un programador en serie para chips AVR. He estado utilizando este esquema como referencia, enlace .

He hecho el circuito y he comprobado que las conexiones son correctas. Aquí hay una foto de ella en una placa de pruebas

El problema es que ni siquiera se detecta en Linux.

rick2047@Sophiya:~$ setserial -g /dev/ttyS*
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
rick2047@Sophiya:~$ dmesg |grep ttyS
[    0.220488] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.221036] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
rick2047@Sophiya:~$ 

En la ventana hay un com3 y com1 pero no se puede conectar a com3, dice que verifique la configuración de su puerto.

Verifiqué el BIOS y solo hay un puerto serial A en la sección de periféricos. ¿Eso significa que puedo usar solo una serie? Mi monitor es un antiguo CRT que se ejecuta en un cable serie.

ACTUALIZACIÓN El monitor está en VGA. Entonces, ¿por qué esto no funciona?

rick2047@Sophiya:~$ avrdude -p atmega8 -P /dev/ttyS0 -c ponyser -V -U flash:w:test1.hex 

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.
    
pregunta Rick_2047

2 respuestas

1

Hace poco también estaba haciendo un programador serial muy similar, y tuve muchos problemas con él.

Primero, revisa tu cristal para el AVR. No puedo ver mucho en la foto, pero su conexión a tierra debe estar conectada directamente a la conexión a tierra de la fuente de alimentación. He leído que a veces las tablas de pruebas pueden causar problemas si la tierra está conectada a través de ellas debido a la impedancia. Sin embargo, si está programando un AVR nuevo, se ejecutará en su propio oscilador interno, si lo tiene.

El siguiente paso es verificar si el AVR está obteniendo el voltaje correcto cuando está conectado al programador.

Cuando encienda, inserte el AVR, verifique los voltajes en cada pin y vea en la hoja de datos qué se supone que es ese pin. Es posible que algunos AVR necesiten múltiples conexiones a tierra y múltiples fuentes de voltaje, especialmente si tiene conversores analógicos a digitales.

Asegúrese de que todas sus conexiones a tierra estén a la misma tensión. Esto puede parecer obvio, pero olvidé conectar GND en mi ATmega162 e incluso sin GND, logró encender el LED mientras se ejecutaba en el oscilador interno.

Estoy de acuerdo con Starblue sobre el condensador. Lea la hoja de datos del AVR que está utilizando y el documento de Consideraciones de diseño de hardware de AVR. Debe proporcionar más información sobre el desacoplamiento adecuado.

El siguiente paso es obtener un programa que pueda activar y desactivar un pin en el puerto serie. Debe usar algo así para verificar si ha conectado el programador al puerto que está intentando usar. Encienda un pin y verifique el voltaje en el conector AVR. Si no está obteniendo los voltajes correctos, hay algún problema con su configuración, así que verifique todo nuevamente.

Ahora que estoy hablando de configuración, noté que no hay nada en Vs + y Vspin de su MAX232. Desde una hoja de datos que estoy leyendo, deben conectarse a +8.5 V y -8.5 V y tener condensadores de desacoplamiento de 1 µF. En mi configuración, conecté un lado del condensador a los pines y el otro a +5 V y GND, ya que no necesitaba voltajes. Lo leí en un tutorial en línea, así que no sé si es la mejor configuración, pero funciona para mí.

No espere que el programador sea detectado por su computadora. ¡No se comunica con la computadora en absoluto! En su lugar, simplemente convierte los pulsos que la computadora envía a lo que AVR puede ver. Además, no hay plug and play para la mayoría de los dispositivos serie.

Si aún tiene problemas, necesitará un osciloscopio para ver qué está sucediendo. No tenía uno, así que tomé un cable de audio, corté uno de sus extremos, coloqué un divisor de voltaje y conecté el otro extremo a la entrada del micrófono. Existen numerosos tutoriales en Internet sobre cómo construir la sonda. Aquí es el que usé. Utilicé Soundcard Scope para ver qué tipo de señal estoy recibiendo. Debería haber una señal de reloj en el SCK y también debería estar recibiendo señales en MOSI y MISO. El reinicio debería darle solo unas pocas señales, cuando el AVR necesita reiniciarse.

    
respondido por el AndrejaKo
0

Si tiene un puerto paralelo, pruebe el SP12 programmer . Solía usarlo sin ningún problema, con solo tres resistencias montadas dentro de un shell DB-25.

Ahora uso un Atmel Dragon, solo cuesta $ 50 y obtienes la depuración en el circuito y la programación. También soporta todos los AVRs.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas