Estaba tratando de conectar ATmega16A con ENC28J60, y Estaba enfrentando problemas con él, así que decidí mirar físicamente las señales de b / w el maestro µC y el chip de Ethernet usando un osciloscopio. Pero para mi sorpresa, estoy obteniendo una ola de frecuencia muy alta del pin SCK que está alrededor de 15MHz.
Ahora aquí están algunos de depuración que he intentado.
No hay problema con el programador USBasp porque el código UART funciona perfectamente.
No hay problema con la conexión del circuito, ya que el UART está funcionando y puedo mostrar perfectamente cualquier texto en mi computadora portátil.
No hay problema con el reloj alimentado, ya que he usado el cristal externo, el reloj interno y ambos me dan el mismo error.
No hay problema con el µC ya que lo he cambiado muchas veces y todos se comportan de la misma manera. Subiré el código que estoy usando para iniciar y transmitir usando SPI.
Por favor, dame tu sugerencia y posibles sugerencias de depuración. Gracias de antemano.
aquí está mi función de inicialización SPI.
void SPI_initialize()
{
//configure MOSI, SCK and SSbar as output pin and MISO as input pin.
DDRB = (1<<4)|(1<<5)|(1<<7);
//Prescaler: Fosc/128, Enable Interrupts, I have changed these values to Fosc/2,4,64
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);
SPSR = (0<<SPI2X);
}