VIC Initialisieren ? wie wird der Interrupt Controller initialisiert damit ich CAN Nachricht empfangen kann.wo soll ich was einstellen?? ich kriege einen fehler beim empfangen, CRC delimiter? danke von Voraus für eure Hilfe
Wär nicht schlecht wenn du dich mal hinsetzt und dir erst mal überlegst was dein Problem ist und wie du es am besten formulierst. Ich versteh kein Wort.
sorry, ich was vergessen,also ich arbeite mit der LPC2378, ich möchte den Interrupt Controller initialisieren damit ich eine CAN Nachricht bekommen kann.? ich denke es ist klar jetzt?
etwa so : void init_can(UINT32 BTR) { // Power Control PCONP = PCONP | 0x00006000; // aktiviert CAN1 und CAN2 (Bit PCAN1 = PCAN2 = 1) // Der CAN Controller läuft mit halbem Prozessortakt = 36 MHz(72MHz/2) // Initialisation of CAN interfaces CANFilter = 0; // Reset and disable all message filters CAN_AFMR = 0x00000001; // Acceptance Filter Mode Register = off ! CAN1MOD = 1; // Mode Register: Reset Mode CAN1IER = 0; // Interrupt Enable Register: Disable All Interrupts CAN1GSR = 0; // Status Register: Clear Status register CAN1BTR = BTR; // BTR Register: Set bit timing CAN1EWL = 0x0000007F; // Error Warning Level auf 0x7F // läuft auf 0x80 wenn Knoten alleine am Bus VICVectAddr23 = (unsigned long)CAN_CANISR; // Set interrupt vector VICVectCntl23 = 6; // Priorität 6 VICIntEnable = 0x00800000; // Enable CAN Interrupt CAN1IER = 1; // Interrupt Register: Enable Receive Interrupt CAN1MOD = 0; // Mode register: Operating Mode }
hallo, ich habe die gleiche Initialisation gemacht DWORD CAN_Init( DWORD can_btr ) { PCONP |= (1 << 13) | (1 << 14); // Enable clock to the peripheral PINSEL0 &= ~0x00000F0F; PINSEL0 |= 0x0000A05; // port0.0~1, function 0x01, port0.4~5, function 0x10 CAN1MOD = CAN2MOD = 1; // Reset CAN CAN1IER = CAN2IER = 0; // Disable Receive Interrupt CAN1GSR = CAN2GSR = 0; // Reset error counter when CANxMOD is in reset CAN1BTR = CAN2BTR = can_btr; // Install CAN interrupt VICVectAddr0 =(unsigned long)CAN_RX2_ISR;// Adresse der Interrupt-Service-Routine wird in die Interrupt-Vector-Tabelle eingetragen VICVectCntl0 = 0x00000034; // die 5 ersten bits stellt die Interrupt Slot Nummer fest = 20 und 6-Bit enablt diese Slot VICIntEnable = 0x00800000; // Enable C2Rx Interrupt (Bit 23) CAN1IER = CAN2IER = 0x01; // Enable receive interrupts CAN1MOD = CAN2MOD = 0x0; // CAN in normal operation mode return( TRUE ); } es kommt keine Interrupt,ich weiss nicht woran es liegt??? MFG SVEN
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.