Datum: 06.01.2008 12:14
Hallo Leute, ich habe einen C167CR µC und wollte das CAN Modul darauf initialisieren. Hat das schon mal einer gemacht? Welche Register muss ich da wie beschreiben? Die "Application Notes" haben mir auch nich wirklich weiter geholfen. Meine Zielvorstellungen ist es erstmal ledigleicht das CAN Modul zu animieren ganz einfach ein gepulstes Signal auf den Bus zu legen. So als "Lebenszeichen" damit man erstmal weiß, aha es geht. Leider krieg ich nicht die Initilaisierung nicht hin :-( Vielleicht hat einer das ja schonmal gemacht und kann mir da weiter helfen. Achso - diese generierten Sources haben auch nicht geklappt. Dankschön! Micha
Datum: 06.01.2008 13:52
Hallo, lade Dir von Infineon einfach mal "Dave" mit einem c167-Modul herunter. Hier wird Dir dann ein einfacher aber funktionierender CAN-Treiber generiert. Bye
Datum: 06.01.2008 23:46
Thorsten wrote: > Hallo, > > lade Dir von Infineon einfach mal "Dave" mit einem c167-Modul herunter. > Hier wird Dir dann ein einfacher aber funktionierender CAN-Treiber > generiert. > > Bye das geht ja leider nicht.
Datum: 07.01.2008 07:03
Hi, das der CAN-Bus aber etwas anderes ist wie normale Portpins ist dir schon klar, oder? Hier kannst du nicht einfach den Bus "toggeln" und mit dem Oszi nachschauen. Wenn der 167er richtig konf. ist erwartet der C167 mind. ein Gegenüber, da auf eine gesendete Nachricht ein ACK kommen muss, sonst erhälst du eine Fehlermeldung. Grüße, Michael
Datum: 07.01.2008 10:54
Michael wrote: > Hi, > > das der CAN-Bus aber etwas anderes ist wie normale Portpins ist dir > schon klar, oder? Definitiv, ja. P4.5 & P4.6 sind das bei den C167 Derivaten... > Hier kannst du nicht einfach den Bus "toggeln" und mit dem Oszi > nachschauen. Dazu gibt es ja eine Art Controllmessage. Ich hab zum Beispiel mit dem SYS TEC USB Canmodul so eine MSG auf den Bus geworfen, sodass du zu einer TxMSG immer die RxMSG bekommen hast. Und mit nem I/O Modul kannste dann bspw. auch mit einem Oszi gucken, was so passiert. > Wenn der 167er richtig konf. ist erwartet der C167 mind. ein Gegenüber, > da auf eine gesendete Nachricht ein ACK kommen muss, sonst erhälst du > eine Fehlermeldung. Tja, ja schon klar, darum frage ich ja ob schon mal einer solch Konfiguration ohne "Dave" oä. zu Fuß gemacht hat. Ich steck da nämlich in ner Sackgasse. MfG Micha
Datum: 07.01.2008 21:47
Ich habe jetzt mal was zusammengezimmert, fällt einem was auf was noch fehlen könnte?
/* Define CAN module control registers */ #define CSR *(unsigned char*) 0xef00 // Control Status Register #define IR *(unsigned char*) 0xef02 // Interrupt Register #define BTR *(unsigned int *) 0xef04 // Bit Timing Register #define GMS *(unsigned int *) 0xef06 // Global Mask Short #define SYSCON *(unsigned int *) 0xFF12 //System Configuration Register /* Define CAN module control register values */ //CSR CSR = 0x0021; /* INIT 1 - Initialization IE 0 - Interupt Enable SIE 0 - Status Change Interrupt EIE 0 - Error Interrupt Enable CPS 0 - Clock Prescaler Control Bit CCE 1 - Configuration Change Enable TM 0 - Test Mode (must be 0!) LEC 0 - Last Error Code TXOK 0 - Transmitted Message Successfully RXOK 0 - Received Message Successfully EWRN 0 - Error Warning Status BOFF 0 - Bus off Status */ //IR IR = 0x0000; /* INITD 0 - Interrupt Identifier */ //BTR BTR = (BRP) | (SJW << 6) | (TSEG1 << 8) | (TSEG2 << 12); //GMS //11Bit MSGs GMS = 0xE0FF; //SYSCON /* XPER-SHARE x - XBUS Peripheral Share Mode Control VISIBLE x - Visible Mode Control XPEN 1 - XBUS Peripheral Enable Bit - !!!CAN!!! BDRSTEN x - Bidirectional Reset Enable Bit OWDDIS x - Oscillator Watchdog Disable Bit CSCFG x - Chip Select Configuration Control WRCFG x - Write Configuration Control CLKEN x - System Clock Output Enable BYTDIS x - Disable/Enable Control for Pin BHE (BHE = Byte High Enable) ROMEN x - Internal ROM Enable SGTDIS x - Segmentation Disable/Enable Control ROMS1 x - Internal ROM Mapping STKSZ x - System Stack Size */ SYSCON = 0xE024; //Direction Port DP4 //RxD _putbit(1,DP4,5); //TxD _putbit(0,DP4,6); |
Micha
Datum: 15.02.2008 14:40
Hallo, weiß jemand, wie man nach erfolgreicher Initialisierung des CANs, diesen wieder deaktivieren kann, sodass man den CAN_TXD-Pin als regulären Gerneral Purpose I/O verwenden kann? Konkret möchte ich für einen einfach Systemtest des externen CAN-Transceivers den TXD-Pin toggeln... Leider hat dies nicht mit einfachem setzen des DP4.6 auf output und toggeln des P4.6 nicht funktioniert ;o( Bitte um Hilfe !! MAGGi
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel