www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik C167CR & CAN Initialisierung

Autor: Michael H. (mischka)
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
Autor: Thorsten (Gast)
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
Autor: Michael H. (mischka)
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.
Autor: Michael (Gast)
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
Autor: Michael H. (mischka)
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
Autor: Michael H. (mischka)
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
Autor: MAGGi (Gast)
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





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net