salut j'ai réaliser le montage suivant :Sans titre.png
le bute de faire envoyer de donnée du 1er pic (18f458 horloge 8MHZ ) a la 2eme pic (18f458 horloge 8MHZ ) sur bus can en utilisant le mcp2551 et afficher les donnée reçu sur un afficheur lcd 2*16
et voila j'ai réaliser cette montage en :
IMG_0161.jpg
et sa marche plus :'( la bus can
IMG_0162.jpg
si il ya un trame reçu sur la 2eme carte j'affiche x=5 ""if (can_kbhit()) x=5"
et il affiche le 5 donc il ya un trame qui arrive mai mon problème la valeur envoyer et male reçu je sais plus pour koi et voila le code (émetteur)
Code:#include <can-18xxx8.c> int data[1]; void main() { can_init(); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); setup_low_volt_detect(FALSE); while(true) { data[0] =9; can_putd(0x400,data,1,1, TRUE,FALSE); } }
et voila code pour le récepteur:
aide moi svp merciCode:#include <can-18xxx8.c> #define LCD_ENABLE_PIN PIN_C0 #define LCD_RS_PIN PIN_C1 #define LCD_RW_PIN PIN_C6 #define LCD_DATA4 PIN_C2 #define LCD_DATA5 PIN_C3 #define LCD_DATA6 PIN_C4 #define LCD_DATA7 PIN_C5 #include <lcd.c> int buffer[8], rx_len, rx_stat; int32 rx_id; int x=0,y=9; void main() { can_init(); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); lcd_init(); while(true) { if (can_kbhit()) { x=5; lcd_gotoxy(1,1); printf(lcd_putc,"id=%d",x); can_getd(rx_id,buffer, rx_len,rx_stat); if(y==buffer[0]) {lcd_gotoxy(1,2); printf(lcd_putc,"data=%d",y);} } } }
-----