El dispositivo SPI impide la programación del ISP

8

Tengo un ATmega8 con un Nokia LCD 5510 conectado. Todo funciona muy bien en una placa de pruebas y mi próximo paso es moverlo a una tabla más permanente. Mi problema es que no puedo programar el ATmega8 mientras la pantalla LCD también está conectada. Supongo que es porque usan los mismos pines SPI y que la pantalla LCD interfiere de alguna manera con la programación. ¿Cómo puedo hacer esto diferente para que pueda flashear el ATmega a través del ISP sin desconectar la pantalla LCD?

Tom Van den Bon
fuente
2
Realmente necesitará agregar un circuito para obtener una buena respuesta al respecto. Puede usar Ctrl-M para iniciar el editor de esquemas en el sitio o simplemente poner un enlace al esquema y alguien puede editarlo en la pregunta.
PeterJ
1
¿El dispositivo está bajo? En caso afirmativo, ¿agregó una resistencia pull-up? Si no lo hiciera, entonces el dispositivo acapararía el bus SPI hasta que sea liberado.
NothinRandom

Respuestas:

12

Debe evitar que cualquier otro dispositivo controle las líneas SPI durante la programación.

Para evitar la contención del conductor, se debe colocar una resistencia en serie en cada una de las tres líneas dedicadas si existe la posibilidad de que un circuito externo pueda conducir estas líneas.

ingrese la descripción de la imagen aquí

Eche un vistazo a la nota de aplicación AVR910.

Para evitar problemas, el Programador en el sistema debe poder mantener todo el Restablecimiento del sistema de destino durante el ciclo de programación. El sistema de destino nunca debe intentar conducir las tres líneas SPI mientras Reset está activo.

Por lo tanto, sería mejor si las líneas de reinicio del ATMEGA y la pantalla están conectadas funcionalmente para evitar que la pantalla haga algo mientras el programador mantiene el reinicio.

Rev1.0
fuente
1
Si la pantalla LCD tiene una línea de selección de chip, asegúrese de subirla también con una resistencia. Durante la programación, ATmega se reinicia, lo que establece todas las entradas / salidas como alta impedancia, por lo que la pantalla LCD estará inactiva.
Austin
1
@ Rev1.0: Debería ser suficiente tener una resistencia en la línea MISO (porque esa es la única salida del dispositivo esclavo SPI, las otras dos líneas son entradas y, por lo tanto, no pueden causar ninguna interferencia).
Cuajada
@Curd, agrega tu respuesta con el esquema y lo votaré. Parece que los dos mejores enfoques son agregar una resistencia solo a la línea MISO, o agregar un pullup CS, o ambos.
Gabriel Staples
2

Otra solución es deshabilitar la pantalla durante la programación .

La pantalla está activa cuando el pin CS (selección de chip) está bajo (0v). Si coloca una resistencia pull-up de 10kR entre el pin CS y 3V3 , estará deshabilitada / alta por defecto. Para habilitarlo, conecte el pin CS a una salida de su microcontrolador y configure esa salida en baja (0V). Lo hice en uno de mis proyectos y funciona bien.

La pantalla funciona a 3.3V, tendrá que agregar un divisor de voltaje si su microcontrolador funciona a 5V.

Rodot
fuente