PIC CAN-Module

Gast #1857772
Lesenswert?
• ▲
▼
Hi,

ich verwende einen PIC32 und wollte mal nur um den CAN ein bisschen zu 
verstehen eine Nachricht mit dem PIC rausschicken. Leider funktioniert 
meine Minimalkonfiguration nicht. Welche Register sind den mindestens 
notwendig um den CAN zum laufen zu bringen?

Gruß Stefan
Gast #1857858
Lesenswert?
• ▲
▼
Also hardware hab ich keine. Ich möchte erst einmal direkt am 
ausgangspin messen ob sich da was tut. Minimialkonfiguration ist:

  C1CONbits.REQOP=4;    //Requestion Operation Mode: CAN Configuration
while(C1CONbits.OPMOD != 4);  //Operation mode STATUS bit


  C1CONbits.CANCAP=1;        //CANTMR Empfangs Zeit wird gespeichert mit 
Nachricht

  C1CONbits.ON=1;        //CAN1-Module is enabled
  while(C1CONbits.CANBUSY == 1);


// !!!!FUNKTIONIERT NICHT KEIN PLAN WARUM!
//C1CONbits.SIDLE=0;        //CAN läuft in IDLE mode weiter

  C1CONbits.DNCNT=0;        //DeviceNet Filter: DO not compare bytes

  /* CAN Control-Register C1CON ENDE */


  /* CAN Control-Register C1CFG */

  C1CFGbits.SEG2PHTS = 1;        // Segment 2 kann frei programmiert 
werden
  C1CFGbits.SEG2PH = 1;      // 2 TimeQuantum fuer letztes Segment

  C1CFGbits.SAM = 1;        // CAN Bus wird dreimal hintereinander 
gesampelt (nur möglich wenn BRP<2)

  C1CFGbits.SEG1PH = 5;      // 6 TimQuantum für zwischen Segment (legt 
sample point fest -> 80%)

  C1CFGbits.PRSEG = 0;      // Verzögerungssegment enthält ein 
TimeQuantum

  C1CFGbits.SJW = 1;        //Synchronisationssprungweite -> muss 
kleiner oder gleich groß wie Segment2 sein

  C1CFGbits.BRP = 31;        // ergibt die länge des TimeQuantums: TQ = 
2*(BRP+1)/ Fsys -> Hier TQ = 2*32/80Mhz = 800ns

  /* CAN Control-Register C1CFG ENDE */

  /* CAN Interrupt Register C1INT */

  C1INTbits.IVRIE = 1;      // Invalid Message received interrupt 
erlaubt

  C1INTbits.WAKIE = 0;      // CAN bus activity wake-up interrupt nicht 
erlaubt

  C1INTbits.CERRIE = 1;      // CAN bus error bit erlaubt

  C1INTbits.SERRIE = 1;        // System error interrupt erlaubt

  C1INTbits.RBOVIE = 1;      //Receive buffer overflow interrupt erlaubt

  C1INTbits.MODIE = 0;      // Mode changed interrupt nicht erlaubt;

  C1INTbits.CTMRIE = 0;      // ??? CAN Timestamp Timer interrupt nicht 
erlaubt

  C1INTbits.RBIE = 1;        // Receive buffer interrupt enabled

  C1INTbits.TBIE = 1;        // Transmit buffer interrupt erlaubt

C1CONbits.REQOP=0x7;    //Requestion Operation Mode: Normal Mode
  while(C1CONbits.OPMOD != 0x7);
Gast #1857861
Lesenswert?
• ▲
▼
oh...hab noch die fifo konfiguration vergessen zu kopieren:

  C1FIFOBA=0;

  /* C1FIFOCONn CAN FIFO control Register (0..31)*/

    //Transmit FIFO1
    C1FIFOCON1bits.FSIZE = 31;      // 32 Messages tief
    C1FIFOCON1bits.TXEN=1;        // FIFO ist ein Transmit FIFO

    //Receive FIFO2
    C1FIFOCON2bits.FSIZE = 31;      // 32 Messages tief
    C1FIFOCON2bits.TXEN=0;        // FIFO ist ein Transmit FIFO

  //Receive FIFO3
    C1FIFOCON3bits.FSIZE = 31;      // 32 Messages tief
    C1FIFOCON3bits.TXEN=0;        // FIFO ist ein Transmit FIFO
Gast #1858350
Lesenswert?
• ▲
▼
Hi,

danke. Das ist mir echt ne Hilfe!

Ich hab jetzt mal das programm auf mein PIC 32 Module geladen. Der 
CAN-Ausgangspin zeigt jedoch immer noch keine Regung. Lässt sich daraus 
schließen, dass ich erst noch hardware benötige? oder liegt es vlt. 
daran dass das Beispielprogramm mit einem Explorer 16 Board gemacht 
worden ist und ich ein anderes habe? Der Pin müsste doch trotzdem am TX 
ausgang zucken, oder?

Danke für die Hilfe,

Gruß

Stefan

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.