Forum: Mikrocontroller und Digitale Elektronik XC167 CAN-Peripherie benutzen


von Philipp K. (Gast)


Lesenswert?

Hallo zusammen,

ich mache ein Projekt mit dem XC167 und dem CAN-Bus.

Mein Problem: Ich kann nicht in die CAN-Register (z.B. ACR oder BCR) 
schreiben. Wenn ich was reinschreibe und das Register wieder auslese, 
steht der Defaultwert drin.
Ich habe gelesen, dass die CAN-Peripherie über CS7 ausgewählt wird. In 
meiner Startup-Datei habe ich die Adressen (ADDRSEL, ...) entsprechend 
angepasst, leider ohne Erfolg.

Kann mir jemand helfen?

Vielen Dank schonmal,

Philipp

von Microman (Gast)


Lesenswert?

Hallo Phillip,

ein paar mehr Infos sind schon notwendig, wenn man Dir schnell helfen 
soll. Zum Beispiel ist es sehr hilfreich wenn Du deinen Sourcecode 
postest, damit man nachvollziehen kann was Du alles gemacht hast. Was 
steht in deiner Startup-Datei? Welche Settings hast Du gemacht? Was, wo 
und wie schreibst/liest Du aus den ACR oder BCR Registern?

Gruß
Microman

von Philipp K. (Gast)


Lesenswert?

Hallo,

ich schreibe z.B. CAN_ACR = 0x41; (Programmierung in C) und dann zum 
Lesen z.B. printf("ACR: %x", CAN_ACR); Die Registernamen sind durch die 
xc16x.h festgelegt.
Zum Programmieren benutze ich Keil µVision 3.

Hier ein Auszug aus der Startup-Routine:

; <h>Definitions for Address Select register ADDRSEL7
; ===================================================
; <o> CS7 Start Address   <0x0-0xFFFFFF:0x1000>
_ADDR7      EQU 0x200000     ; Set CS7# Start Address (default 100000H)

; <o> CS7 Size in KB

_SIZE7      EQU 1024*KB         ; Set CS7# Size (default 1024*KB = 1*MB)

;</h>
;
; <h>Definitions for Function Configuration Register FCONCS7
; =======================================================
;
; <q> ENCS7: Enable Chip Select (FCONCS7.0)
_ENCS7     EQU    1     ; 0 = Chip Select 0 disabled
                        ; 1 = Chip Select 0 enabled
;
; <q> RDYEN7: Ready Enable (FCONCS7.1)
_RDYEN7    EQU    1     ; 0 = Access time controlled by TCONCS7.PHE1
                        ; 1 = Access time cont. by TCONCS7.PHE1 and 
READY signal
;
; <o> RDYMOD7: Ready Mode (FCONCS7.2)
; <0=> Asynchronous  <1=> Synchronous
_RDYMOD7   EQU    1     ; 0 = Asynchronous READY
                        ; 1 = Synchronous READY
;
; <o> BTYP7: Bus Type Selection (FCONCS7.4 .. FCONCS7.5)
; <0=> 8-bit Demultiplexed Bus  <1=> 8-bit Multiplexed Bus
; <2=> 16-bit Demultiplexed Bus <3=> 16-bit Multiplexed Bus
_BTYP7     EQU    2     ; 0 = 8 bit Demultiplexed bus
                        ; 1 = 8 bit Multiplexed bus
                        ; 2 = 16 bit Demultiplexed bus
                        ; 3 = 16 bit Multiplexed bus
;</h>
;
; <h>TCONCS7: Definitions for the Timing Configuration register
; ==========================================================
;
; <o>PHA7: Phase A clock cycle (TCONCS7.0 .. TCONCS7.1) <0-3>
_PHA7       EQU    0    ; 0 = 0 clock cycles
                        ; : = :
                        ; 3 = 3 clock cycles
;
; <o>PHB7: Phase B clock cycle (TCONCS7.2) <1-2> <#-1>
_PHB7       EQU    0    ; 0 = 1 clock cycle
                        ; 1 = 2 clock cycles
;
; <o>PHC7: Phase C clock cycle (TCONCS7.3 .. TCONCS7.4) <0-3>
_PHC7       EQU    0    ; 0 = 0 clock cycles
                        ; : = :
                        ; 3 = 3 clock cycles
;
; <o>PHD27 Phase D clock cycle (TCONCS2.5) <0-1>
_PHD7       EQU    0    ; 0 = 0 clock cycles
                        ; 1 = 1 clock cycle
;
; <o> PHE7: Phase E clock cycle (TCONCS7.6 .. TCONCS7.10) <1-32> <#-1>
_PHE7       EQU    8    ; 0 = 1 clock cycle
                        ; : = :
                        ; 31 = 32 clock cycles
;
; <o>RDPHF7: Phase F read clock cycle (TCONCS7.11 .. TCONCS7.12) <0-3>
_RDPHF7     EQU    0    ; 0 = 0 clock cycles
                        ; : = :
                        ; 3 = 3 clock cycles
;
; <o>WRPHF7: Phase F write clock cycle (TCONCS7.13 .. TCONCS7.14) <0-3>
_WRPHF7     EQU    3    ; 0 = 0 clock cycles
                        ; : = :
                        ; 3 = 3 clock cycles
;</h> </e>

Vielen Dank für die Antwort,

Philipp

von Microman (Gast)


Lesenswert?

Hallo Phillip,

hast du immer noch dein Problem? War leider in letzter Zeit sehr 
beschäftigt, Sorry! Melde dich doch kurz.

Microman

von Philipp K. (Gast)


Lesenswert?

Hallo Microman,

danke, wir haben das Problem mittlerweile gelöst. Es war ein Fehler in 
den Einstellungen für die CS-Leitungen.

Danke für die Antworten,

Philipp

von rk (Gast)


Lesenswert?

Hallo,

dieser thread ist zwar schon etwas älter, allerdings hoffe ich trotzdem, 
dass hier nochmal jmd reinschaut.

"Es war ein Fehler in den Einstellungen für die CS-Leitungen"...
was für ein Fehler?

Ich versuche verzweifelt, das TwinCAN Modul in Betrieb zu nehmen, aber 
irgendwetwas scheint mit der start_v2.a66 Datei nicht zu stimmen...

Ich habe darin bereits das TwinCAN Modul aktiviert (candis=0), ebenso 
den LXBus. Ich habe auch im xc167 errata nachgelesen. Alle Tipps haben 
nicht funktioniert...

Vielleicht hat ja jemand eine funktionierende startup Datei 
(start_v2.a66)?


Danke!

rk

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.