Dispositivo SPI evita programação ISP

8

Eu tenho um ATmega8 com um Nokia LCD 5510 conectado a ele. Tudo funciona muito bem em uma tábua de pão e meu próximo passo é movê-lo para uma tábua mais permanente. Meu problema é que não consigo programar o ATmega8 enquanto o LCD também está conectado. Suponho que é porque eles usam os mesmos pinos SPI e que o LCD de alguma forma interfere na programação. Como posso fazer isso diferente para poder piscar o ATmega via ISP sem desconectar o LCD?

Tom Van den Bon
fonte
2
Você realmente precisará adicionar um circuito para obter uma boa resposta. Você pode usar Ctrl-M para iniciar o editor de esquema no local ou simplesmente colocar um link para o esquema e alguém pode editá-lo na pergunta.
precisa
1
O dispositivo está ativo baixo? Se sim, você adicionou um resistor pull up? Caso contrário, o dispositivo consumirá o barramento SPI até que seja liberado.
NothinRandom

Respostas:

12

Você precisa impedir que qualquer outro dispositivo direcione as linhas SPI durante a programação.

Para evitar a contenção do driver, um resistor em série deve ser colocado em cada uma das três linhas dedicadas, se houver a possibilidade de que circuitos externos possam estar acionando essas linhas.

insira a descrição da imagem aqui

Dê uma olhada na nota de aplicação AVR910.

Para evitar problemas, o programador no sistema deve ser capaz de manter toda a redefinição do sistema de destino durante o ciclo de programação. O sistema de destino nunca deve tentar conduzir as três linhas SPI enquanto a redefinição estiver ativa.

Portanto, seria melhor se as linhas de redefinição do ATMEGA e o monitor estivessem funcionalmente conectadas para impedir que o monitor fizesse alguma coisa enquanto o programador mantinha o reset.

Rev1.0
fonte
1
Se o LCD tiver uma linha de seleção de chips, certifique-se de puxar tão alto com um resistor também. Durante a programação, o ATmega é redefinido, o que define todas as entradas / saídas como alta impedância, de modo que o LCD fique inativo.
Austin
1
@ Rev1.0: Deve ser suficiente ter um resistor na linha MISO (porque essa é a única saída do dispositivo escravo SPI, as outras duas linhas são entradas e, portanto, não podem causar interferência).
Coalhada
@ Curd, adicione sua resposta com o esquema e eu vou votá-la. Parece que as duas melhores abordagens estão adicionando um resistor apenas à linha MISO ou adicionando um pullup de CS, ou ambos.
Gabriel Staples
2

Outra solução é desativar a tela durante a programação .

A tela fica ativa quando o pino CS (seleção de chip) está baixo (0v). Se você colocar um resistor pull-up de 10kR entre o pino CS e 3V3 , ele será desativado / alto por padrão. Para habilitá-lo, conecte o pino CS a uma saída do seu microcontrolador e defina essa saída como baixa (0V). Eu fiz isso em um dos meus projetos e funciona bem.

A tela funciona em 3,3V, você terá que adicionar um divisor de tensão se o seu micro controlador funcionar em 5V.

Rodot
fonte