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.