Hola de nuevo, encontré esta página
http://mcp2515ccs.sourceforge.net/ donde hay unas librerías que si permiten pasarles parámetros y además en castellano, me lo miré un poco y comencé a entender por que lo simplifican
, hay un MONTÓN de registros....
... y la verdad que me tiene algo liado, intente ver como se gestiona la configuración de la velocidad y no tengo claro que valor o valores le tendría que pasar a
config, coloqué algún comentario más para poder entender mejor como se gestiona, pero no lo tengo del todo claro os pongo solo la parte del código para configurar la velocidad.
/************************http://mcp2515ccs.sourceforge.net/*******************************/
//
// CONFIGURACIÓN DE LA VELOCIDAD DEL BUS: Configura los parámetros de velocidad
// y sincronización del bus
// Parámetros:
//
config: especifica alguna de las opciones de velocidad y de
// sincronización
// BRP (Baud rate Prescaler): Preescalado de la velocidad,registro CNF1 (2Ah) bits de 0 al 5
// PRSEG (Propagation Segment Length): Longitud del segmento de
// propagación, registro CNF2 (29h) bit 0 al 2
// PHSEG1 (phase segment 1): segmento de fase 1, se utiliza para compensar
// los retrasos de línea, registro CNF2 (29h) del bit 3 al 5
// PHSEG2 (phase segment 2): segmento de fase 2, se utiliza para compensar
// los retrasos de línea, registro CNF3 (28h) del bit 0 al 2
// Devuelve: true si los parámetros son correctos, y false en caso contrario
//
// Calculo para XT de 8Mhz y CAN a 125Khz Baud 250K_Baud 500K_Baud
// Baud Rate Prescaler (BRP) = 1 1 0
// Propagation Delay (PRSEG)) = 1 1 1
// Phase Segment 1 (PRSEG) = 8 3 3
// Phase Segment 2 (PRSEG) = 6 3 3
/******************************************************************************/
int1 can_set_baud(int32
config,unsigned int8 BRP,unsigned int8 PRSEG,unsigned int8 PHSEG1,unsigned int8 PHSEG2){
int8 CNF1_b, CNF2_b, CNF3_b;
// Comprobando los parametros
if( (BRP > 0x3F )|| (PRSEG > 0x08) || (PHSEG1 > 0x08) || (PHSEG2 > 0x08)) return FALSE;
// Cambiando a modo Configuracion
while(!( can_set_mode(CAN_OP_CONFIG)));
// Configurando registros
CNF1_b = make8(config,0) | (BRP);
CNF2_b = make8(config,1) | ((PHSEG1-1) << 3) | (PRSEG-1);
CNF3_b = make8(config,2) | (PHSEG2-1);
// Escribiendo en los registros
mcp2510_write(CNF1, CNF1_b);
mcp2510_write(CNF2, CNF2_b);
mcp2510_write(CNF3, CNF3_b);
while(!( can_set_mode(CAN_OP_NORMAL)));
return TRUE;
}
Para configurar a 125KBs con un xt de 8Mhz creo que tendría que ser algo asi?
can_set_baud (???,1, 1, 8, 6); // no tengo claro que le tengo que pasar a
configSaludos