Hallo,
ich versuche gerade bei einem AT90CAN im Betrieb ein MOb um zu programmieren, leider ohne großen Erfolg.
Der Bus und alle MOb's sind erst mal konfiguriert und laufen fehlerfrei. Nun möchte ich die Sende ID's und Emppfangs ID's ändern. Dazu setze ich erst die CANPAGE auf mein MOb und schreibe die ID:
Danach geht gar nichts mehrCode:CANPAGE = (u8Counter << 4); // select MOb //CANSTMOB = 0x00; // reset channel status if (u8Xtd != 0) // extended identifier? //MST !=0 { // ID CANIDT1 = (uint8)(u32Id >> 21); CANIDT2 = (uint8)(u32Id >> 13); CANIDT3 = (uint8)(u32Id >> 5); CANIDT4 = (uint8)(u32Id << 3); // ID mask CANIDM1 = (uint8)(u32MaskLong >> 21); CANIDM2 = (uint8)(u32MaskLong >> 13); CANIDM3 = (uint8)(u32MaskLong >> 5); CANIDM4 = (uint8)((u32MaskLong << 3) | (1 << IDEMSK)); CANCDMOB |= (1u << IDE); // reset control and dlc register } else // standard identifier { // ID CANIDT1 = (uint8)(u32Id >> 3); CANIDT2 = (uint8)(u32Id << 5); // ID mask CANIDM1 = (uint8)(u16MaskShort >> 3); CANIDM2 = (uint8)(u16MaskShort << 5); CANIDM4 = (1u << IDEMSK); CANCDMOB &= ~(1u << IDE); // reset control and dlc register }.
Kann mir jemand weiter helfen? Muss ich den CAN-Controller erst deaktivieren? Ich hab schon mal versucht das MOb mit CANSTMOB zu reseten.
Schon mal Danke,
Drew
Lesezeichen