por RobL » 31 Mai 2007 21:18
Dei uma lida no arquivo indicado e nunca tinha visto a observação feita em nenhum manual, ou seja, nem no da Holtek nem da Dallas Maxim no 1302 de que o pulso de clock tenha que estar em zero para trazer o reset a zero.
O que está claro é que sempre após transmitir 16 bits ou transmiir 8bits e receber 8bits, a lógica interna tem que ser reinicializada, trazendo o reset a zero lógico exceto em burst mode.
No caso de escrita bits a mais que os 16 bits serão ignorados. Já no caso de leitura bits de clock a mais que os 16bits farão repetir o mesmo byte a cada 8 clocks (vou verificar isso em breve).
Como em todas minhas aplicações ao descer o reset o clock está em zero não sei se por isso nunca deu problema. Mas anotei essa observação, a qual tenho certa dúvida sobre essa necessidade, pois ao descer o reset todo o processo em andamento será abortado e a lógica interna reincializada.
Já ao subir o reset, o fato do clock estar alto, não sei dizer se daria problema de fato, pois o manual afirma ser válido somente as transições. Se de fato for, tanto faz o estado do clk no momento de subir ou descer o reset.
Isto poderia confundir o programador no caso de usar SPI por software, e contar uma subida de clock como válida ao subir o reset o que não seria válido.
Já no caso de um SPI por hardware não vejo problema dede que o byte seja posto no registro a transmitir após a subida do reset (SS) o clk estará em zero desde que o periférico tenha sido inicializado.
Estou simulando um SPI por hardware com o HT-1380 para AVR mas não testei na real ainda. Até agora parece que vai funcionar sem problemas.