Passei um tempo conferindo o circuito, retirei o decodificador e o buffer da placa, mas a coisa continuava na mesma.
Daí foi que lembrei que eu não tinha programado o AVR para colocar como entrada os pinos que vão ligados às linhas de endereço A8-A15! Eu comprovei isso retirando o AVR da placa.
Depois de um bom tempo procurando uma fonte de alimentação que servisse no meu adaptador RS232-TTL eu finalmente programei o AVR com o seguinte 'sketch':
void setup() {
// put your setup code here, to run once:
DDRB=0x00;
PORTB=0xff;
DDRC=0x00;
PORTC=0x00;
DDRD=0x00;
PORTD=0xc0;
}
void loop() {
// put your main code here, to run repeatedly:
}
Daí o TK bootou!!
Mas como diz o meu amigo Ferraz, "nessa vida tudo tem que ser com dor", só o primeiro boot deu certo. No segundo o TK ficou com a tela cheia de artefatos, no terceiro ficou branca, no quarto ficou ok. Em resumo, a operação estava de forma intermitente!
Tentei em vão descobrir algo de errado com o osciloscópio mas sem muito sucesso. Daí segui um expediente que embora trabalhoso foi o que me levou a descobrir o problema.
Eu retirei todas as conexões das linhas A8-A15 e espetei a placa no TK. Funcionou (óbvio ne?).
Daí eu removi a placa e fiz a ligação do sinal A8. Recoloquei a placa no TK e funcionou.
Fiz o mesmo com as outras linhas até chegar na linha A13. Com a linha A13 no lugar o TK fica funcionandode modo intermitente.
Removi a ligação da linha A13 e continuei o procedimento com as linhas A14 e A15 . Tudo OK.
De fato tinha alguma treta na linha A13! Esta linha está ligada ao pino PB5 do AVR (sinal SCK).
Como o AVR tem um bootloader, desconfiei que alguma coisa poderia estar acontecendo durante o boot. Daí instalei um resistor de 4K7 entre a linha A13 e o pino PB5 do AVR e o TK bootou normalmente (todas as vezes ).
Medindo com o osciloscópio eu verifiquei que o AVR mantém esta linha em nível baixo por um pouco mais de um segundo durante o 'startup' do bootloader. Eu creio que isso seja um erro de implementação do bootloader, mas por enquanto vou deixar o resistor e prosseguir com os testes. Depois eu dou uma olhada no código fonte do bootloader e/ou entro em contato com o desenvolvedor, pois não considero isso um comportamento normal.
Laranja: PB5 do AVR / Azul: A13 do Z80 |
Nenhum comentário:
Postar um comentário