PIC18F4550 USB y MCP2510 para CAN

Hola! A ver si alguien me puede ayudar:

Necesito hacer una comunicacion con USB y CAN, por desgracia el prescaler del MCP2510 está configurado por defecto a 8, por lo que si pongo un cristal de 20Mhz la frecuencia de trabajo del PIC es de 2,5Mhz, así que no puedo hacer la comunicacion del USB, como ya sabeis se necesitan 4Mhz para que el PLL te reproduzca los 96Mhz que luego se dividen por 2 para conseguir los 48MHZ para el USB.

Ya lo he intentado con el clock interno, pero da igual, el USB coge la frecuencia externa que le viene, nunca una interna segun el esquema, por lo que necesito entrarle 4 Mhz por el OSC1, sabeis como se puede cambiar el byte de control (CANCTRL) para configurar el prescaler del MCP?

Decir que la frequencia maxima y multiple de 4Mhz para el MCP es de 24 Mhz, que dividida por 8 me da 3 Mhz, asi que no me vale.

Gracias por todo!
 
Bueno, ya lo he solucionado, si a alguien le interesa, puede programar el prescaler del MCP en el archivo can-mcp2510.c (O EN SU DEFECTO can-mcp251x.c), en la siguiente funcion:

void can_set_mode(CAN_OP_MODE mode) {
struct struct_CANCTRL old_CANCTRL;
// bit_clear(old_CANCTRL,0);
// bit_clear(old_CANCTRL,1);
old_CANCTRL=mcp2510_read(CANCTRL);
bit_clear(old_CANCTRL,0); //QUEREMOS EL PRESCALER A 0 FREQ_IN=FREQ_OUT
bit_clear(old_CANCTRL,1);
old_CANCTRL.reqop=mode;

Poniendo a 0 los dos bits de menor peso del byte de configuracion justo despues de leer lo que hay en el registro y ponerlo en el struct, programamos el prescaler para que el CLKOUT que va al OSC1 como Clock externo sea de 20Mhz y consigamos pues los 4Mhz que se le meten al PLL para el USB.
 
Que tal... yo tengo un problema parecido... pero ya me hice bolas... tengo que conectar por USB unos periféricos que tengo en CAN, y estoy usando un MCP2515... el problema es que no puedo enviar ningún mensaje... no sé si estoy configurando mal la interfaz SPI, o si no estoy conectando bien el controlador... crees que puedas compartir tu código en la parte de inicialización del mcp y envío de datos? (la librería que estoy usando es la que proporciona CCS can-mcp251x.c)

Te lo agradecería muchísimo...

Saludos!
 
Atrás
Arriba