Tengo un bus SPI de 2 MHz, pero una cosa que he notado es que algunas de mis señales a menudo "tiemblan". Sí, mi activador está configurado correctamente, así que no creo que el problema esté ahí.
Puedes ver lo que quiero decir aquí: (esto es con el modo de persistencia activado). Este es el reloj de mi bus SPI.
El SPI funciona bien. He transferido cientos de megabytes en varias tarjetas y no he visto ningún problema hasta ahora. Pero todavía estoy interesado en saber cuál podría ser el problema aquí. Además, ¿debería molestarme en arreglarlo aunque funcione?
Las mediciones se tomaron directamente en la fuente con un clip de tierra MUY pequeño.
Este es un esquema simplificado de mi circuito. Por supuesto, la placa tiene más dispositivos SPI, pero para los propósitos de esta pregunta esto es correcto porque la placa no tiene nada soldado aún excepto la unidad uC y la tarjeta SD.
Elmaestro(AVRMega128)seestáejecutandoensuosciladorRCinterno.Nosésiestoseríarelevante,perocomolasseñalescambianeneltiempo,esposiblequelafluctuacióndefasedelosciladorRCtambiénestéterminandoenelbusSPI..Solopenséquelomencionaría.Tambiénsemeocurrióqueduranteestasmedicionesejecutéelcontroladorenunbucleinfinito.Aquíestáelcódigo:
while(1)
{
setFirstBitOnDriver(driver); // this sends a 8-bit command on the SPI bus.
GLCD_SetCursorAddress(40); // Change cursor position on the display.
GLCD_WriteText("LED: ");
for(wire=0;wire<72;wire++)
{
itoa(wire+1,str,10);
GLCD_WriteText(str);
GLCD_SetCursorAddress(44);
_delay_ms(10);
shiftVectorOnDriver(driver); // another command on SPI. 8-bit wide.
}
}
El jitter / shiver puede ocurrir cuando el interno se ejecuta 72 veces y luego sale. Dado que la ejecución de las primeras tres líneas requiere un tiempo adicional, es posible que cada 73a forma de onda llegue en un momento ligeramente diferente debido al tiempo de procesamiento adicional. Si tuviera que apostar, supongo que esta es la causa de mi problema (si pudiera, lo confirmaría en este instante, ¡pero mis tablas en el trabajo y la próxima semana está apagada!) Pero todavía me gustaría recibir opiniones / Respuestas de SE sobre este asunto.
Pero teniendo en cuenta que la unidad de control de temperatura se está ejecutando a 8 Mhz, no me preocupo por el software porque en nanosegundos, sino en microsegundos. Pero en la segunda figura se ve una línea plana. Esto ocurre durante un breve segundo, donde todas las formas de onda cambian en el tiempo y son invisibles en la pantalla. Supongo que esto se debe al bucle y el jitter en la primera imagen se debe al oscilador RC.