void message1_to_can(void) { unsigned char i = 0; unsigned char crc = 0; unsigned int idm = 0xFFFF; unsigned char data[8]; //CAN_getMOB CANPAGE = 0x10; // mob = 1 CANCDMOB &= ~(1<> 3); //CAN_setID CANIDT2 = (uint8_t)(idf1 << 5); // Set ID CANIDT1 = (uint8_t)(idf1 >> 3); //CAN_setData CANCDMOB |= (1< Busverbindung freigeben while (1) { hole_mw(); // aktuellen Messwert vom A/D-Wandler holen message1_to_can(); // Messwerttelegramm an Can-Controller uebertragen test_can_status(); // Programmstatus ermitteln if (prog_stat & 0b01000000) { // bei "Bus off" adcaninit(); // neu initialisieren prog_stat |= (1<<6);// Markierung für bus off Bit6 message2_to_can(); // Seriennummerntelegramm an Can-Controller uebertragen _EN_PH_LAY_ON; // Physical Layer aktivieren ==> Busverbindung freigeben clrwdg(); // Watchdog zuruecksetzen } umlauf++; // Umlaufzaehler erhoehen clrwdg(); // Watchdog zuruecksetzen }; }