no, los tres códigos tienen diferentes ID, te los especifico:
Nodo A):
#int_canrx0 // Interrupción del CAN
void canrx0_int(){
can_getd(RX_ID,&buffer_datos,RX_LEN,RXSTAT);
if(RX_ID==0x50){ //ID
}
}
void main(){
can_init();
can_set_mode(CAN_OP_CONFIG);
can_set_id(RX0MASK, 0x50, CAN_USE_EXTENDED_ID); //set mask 0
can_set_id(RX0FILTER0, 0x50, CAN_USE_EXTENDED_ID); //set filter 0 of mask 0
enable_interrupts(int_canrx0);
enable_interrupts(GLOBAL);
while(true){
contador=10;
delay_ms(20);
datos_recibir3[0] = contador;
can_putd(0X80,datos_recibir3,1,1,TRUE,false);
}
}
Nodo C):
#int_canrx0 // Interrupción del CAN
void canrx0_int(){
can_getd(RX_ID,&buffer_datos,RX_LEN,RXSTAT);
if(RX_ID==0x60){ //ID
}
}
void main(){
can_init();
can_set_mode(CAN_OP_CONFIG);
can_set_id(RX0MASK, 0x60, CAN_USE_EXTENDED_ID); //set mask 0
can_set_id(RX0FILTER0, 0x60, CAN_USE_EXTENDED_ID); //set filter 0 of mask 0
enable_interrupts(int_canrx0);
enable_interrupts(GLOBAL);
while(true){
contador=10;
delay_ms(20);
datos_recibir3[0] = contador;
can_putd(0X70,datos_recibir3,1,1,TRUE,false);
}
}
Nodo B):
#int_canrx0 // Interrupción del CAN
void canrx0_int(){
can_getd(RX_ID,&buffer_datos,RX_LEN,RXSTAT);
if(RX_ID==0x70){ //ID
}
}
#int_canrx1 // Interrupción del CAN
void canrx1_int(){
can_getd(RX_ID,&buffer_datos,RX_LEN,RXSTAT);
if(RX_ID==0x80){ //ID
}
}
void main(){
can_init();
can_set_mode(CAN_OP_CONFIG);
can_set_id(RX0MASK, 0x70, CAN_USE_EXTENDED_ID); //set mask 0
can_set_id(RX0FILTER0, 0x70, CAN_USE_EXTENDED_ID); //set filter 0 of mask 0
can_set_id(RX1MASK, 0x80, CAN_USE_EXTENDED_ID); //set mask 1
can_set_id(RX1FILTER2, 0x80, CAN_USE_EXTENDED_ID); //set filter 0 of mask 1
enable_interrupts(int_canrx0);
enable_interrupts(GLOBAL);
while(true){
contador2=10;
delay_ms(100);
datos_recibir3[0] = contador2;
can_putd(0X50,datos_recibir3,1,1,TRUE,false);
can_putd(0X60,datos_recibir3,1,1,TRUE,false);
}
}
Son los de los 3 pic, tienen diferentes ID pero el problema es al recibir datos, alguna sugerencia que me pudieras dar de favor! gracias