CAN-BUS Fehler

Gast #830952
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?
Gast #831093
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
}
Gast #831745
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.