Forum: Mikrocontroller und Digitale Elektronik C167CR & CAN Initialisierung


von Michael H. (mischka)


Lesenswert?

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

von Thorsten (Gast)


Lesenswert?

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

von Michael H. (mischka)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

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

von Michael H. (mischka)


Lesenswert?

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

von Michael H. (mischka)


Lesenswert?

Ich habe jetzt mal was zusammengezimmert, fällt einem was auf was noch 
fehlen könnte?


1
/* Define CAN module control registers */
2
3
#define   CSR  *(unsigned char*) 0xef00   // Control Status Register
4
#define   IR  *(unsigned char*) 0xef02   // Interrupt Register
5
#define   BTR  *(unsigned int *) 0xef04   // Bit Timing Register
6
#define   GMS  *(unsigned int *) 0xef06   // Global Mask Short
7
#define    SYSCON *(unsigned int *) 0xFF12   //System Configuration Register
8
9
/* Define CAN module control register values */
10
11
//CSR
12
CSR = 0x0021;
13
/*
14
INIT    1 - Initialization
15
IE    0 - Interupt Enable
16
SIE     0 - Status Change Interrupt
17
EIE    0 - Error Interrupt Enable
18
CPS    0 - Clock Prescaler Control Bit
19
CCE    1 - Configuration Change Enable
20
TM    0 - Test Mode (must be 0!)
21
LEC    0 - Last Error Code
22
TXOK  0 - Transmitted Message Successfully
23
RXOK    0 - Received Message Successfully
24
EWRN  0 - Error Warning Status
25
BOFF    0 - Bus off Status
26
*/
27
28
//IR
29
IR = 0x0000;
30
/*
31
INITD  0 - Interrupt Identifier
32
*/
33
34
//BTR
35
BTR = (BRP) | (SJW << 6) | (TSEG1 << 8) | (TSEG2 << 12);
36
37
//GMS
38
//11Bit MSGs
39
GMS = 0xE0FF;
40
41
//SYSCON
42
/*
43
XPER-SHARE  x - XBUS Peripheral Share Mode Control
44
VISIBLE     x - Visible Mode Control
45
XPEN      1 - XBUS Peripheral Enable Bit - !!!CAN!!!
46
BDRSTEN    x - Bidirectional Reset Enable Bit
47
OWDDIS    x - Oscillator Watchdog Disable Bit
48
CSCFG    x - Chip Select Configuration Control
49
WRCFG    x - Write Configuration Control
50
CLKEN    x - System Clock Output Enable
51
BYTDIS    x - Disable/Enable Control for Pin BHE (BHE = Byte High Enable)
52
ROMEN    x - Internal ROM Enable
53
SGTDIS    x - Segmentation Disable/Enable Control
54
ROMS1    x - Internal ROM Mapping
55
STKSZ    x - System Stack Size
56
*/
57
SYSCON = 0xE024;
58
59
//Direction Port DP4
60
//RxD
61
_putbit(1,DP4,5);
62
//TxD
63
_putbit(0,DP4,6);

Micha

von MAGGi (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.