Forum: Mikrocontroller und Digitale Elektronik C_CAN Device: LPC11C24/301


von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Hallo Forum:
Ich suche Code-Beispiele für den ARM MO C_CAN
extra dieses Derivat was ich 2mal habe ist nichts zu finden 
LPC11C24/301.
Danke für Tips & Hilfe !

Gruss Holger.

#if 0
// can code sniplet#01
void speedCanRequest(void)
{
  msg_obj.msgobj  = (0x00);//-OBJ'0x01
  msg_obj.mode_id = 0x7DF; //+8 = $7E0

  msg_obj.mask    = (0x00);
  //--------------------------------------------
  msg_obj.dlc     = (   8); // ((8-Byte-Max-.Packet)
  // Max-Packet-DATA---0:7
  msg_obj.data[0] = 0x02;
  msg_obj.data[1] = 0x01;
  msg_obj.data[2] = 0x0D;
  msg_obj.data[3] = 0x55;
  msg_obj.data[4] = 0x55;
  msg_obj.data[5] = 0x55;
  msg_obj.data[6] = 0x55;
  msg_obj.data[7] = 0x55;
//--SEND via      C_CAN--------------------->>>>>>
  (*rom)->pCAND->can_transmit(&msg_obj);
//----------------------------------------
  msg_obj.msgobj   = (0x01);// new-OBJ'0x01
  msg_obj.mode_id  = 0x7E8;

  msg_obj.mask     = 0x7E0;
  //<<<<<<----------------------------
  (*rom)->pCAND->config_rxmsgobj(&msg_obj);

}

// can code sniplet#02

msg_obj.mode_id = (0x200 | CAN_MSGOBJ_STD);
  msg_obj.mask = 0x000; // $700
  (*rom)->pCAND->config_rxmsgobj(&msg_obj);


#endif

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Genau: (LPC11C24/301) CAN Transceiver is on Chip.
für ca. 15 Euro besorgt.

  WAKEUP11_IRQn                 = 11,
  WAKEUP12_IRQn                 = 12,
  CAN_IRQn                      = 13,       /*!< CAN Interrupt 
*/
  SSP1_IRQn                     = 14,       /*!< SSP1 Interrupt 
*/
  I2C_IRQn                      = 15,       /*!< I2C Interrupt 
*/
  TIMER_16_0_IRQn               = 16,       /*!< 16-bit Timer0 Interrupt 
*/



Momentan weiß ich nicht mehr so richtig weiter,
wo der Unterschied sein könnte.
Das DatenBlatt zeigt eine Basis für die
Auf der Argenda von NXP steht Pin to Pin Kompartibel.??

Aber
ARM LPC11xx
LPC1100 Mix für die LPC11xx-Derivate.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Hier muss ich noch den Ram-Offset machen.
Damit das CAN Ram frei bleibt.
1
------------- CAN Controller (CAN) ----------------------------
2
 LPC11xx_CAN LPC11xx Controller Area Network(CAN) */
3
// C_CAN Device: LPC11C24/301
4
#include "driver_config.h"
5
#include "target_config.h"
6
7
#include "rom_drivers.h"
8
9
#ifndef NULL
10
#define NULL    ((void *)0)
11
#endif
12
// Error RX-TX Handling
13
static uint32_t noAnswerErrorCount = (0x00);
14
15
/*  irq_Vaiables */
16
volatile int irq_toggle = (0x00);
17
// volatile int index;
18
19
// ten-Milion
20
// 10_1fff_1ff8 via       1FFf-1FF8 8Digits
21
ROM **CAN_rom = (ROM **)0x1FFF1FF8; // CAN_BASE_ADDR_Hardened_ROM_CODE
22
//__BSS(RESERVED) char CAN_driver_memory[256]; // reserva 256 bytes for CAN driver
23
CAN_MSG_OBJ CAN_msg_obj; //,*pCAN_msg_obj=&CAN_msg_obj;
24
25
/* Initialize CAN Controller */
26
uint32_t CAN_ClkInitTable[2] =
27
{ // Silent Dominant-HIGH nothing going out/or.in??
28
  0x00000000UL, // CANCLKDIV
29
/* ---_-__-__----*/
30
  0x00001C57UL  // CAN_BTR-->Bit-Rate
31
};
32
33
/* Callback function prototypes */
34
void CCAN_rx(uint8_t msg_obj_num);
35
void CAN_tx(uint8_t msg_obj_num);
36
void CAN_error(uint32_t error_info);
37
38
/* Publish CAN Callback_Hook_Vector's Functions */
39
CAN_CALLBACKS CAN_v_callbacks =
40
{  //@Hook#$0,$1,$2
41
   CCAN_rx, // go msg_obj_num_rx_01
42
   CAN_tx,  //
43
   CAN_error,
44
   NULL,
45
   NULL,
46
   NULL,
47
   NULL,
48
   NULL,
49
};
50
51
/*  NXP. CAN receive callback */
52
/*  Function is executed by the Callback handler after
53
  a CAN message has been received */
54
55
// Hook on Can_rx 'IRQ
56
int _CAN_rx(uint8_t msg_obj_num_rx_01 )
57
{                   // Stack Expect
58
                   //via Delegate
59
  /* Determine which CAN message has been received */
60
/* Store Mail get Filter */
61
  CAN_msg_obj.msgobj = msg_obj_num_rx_01; // $Filter Store ?0x01
62
63
  /* Now load up the CAN_msg_obj structure with the received CAN message */
64
  (*CAN_rom)->pCAND->can_receive(&CAN_msg_obj);
65
//######################################<<<<<<<<<<<<<<<<<<<<<
66
  if ( msg_obj_num_rx_01 == (0x01) ) // ?? Trigger = #0x01
67
  {
68
    /* Simply transmit CAN frame (echo) with with ID +0x100 via buffer 2 */
69
    CAN_msg_obj.msgobj =    (0x02); // new_object_Number
70
    /*  mode_id */
71
    CAN_msg_obj.mode_id  = (CAN_msg_obj.mode_id + 0x100);//0x7FF;--<RxDreceive all
72
73
    // @ECHO Transmit received back, with new mode_id ????
74
    (*CAN_rom)->pCAND->can_transmit(&CAN_msg_obj);
75
    //#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<
76
  }  // end if
77
78
  return(0);
79
}
80
void CCAN_rx(uint8_t msg_obj_num_rx_01)
81
{
82
  _CAN_rx(msg_obj_num_rx_01);
83
84
  return;
85
}
86
87
/*  CAN transmit callback */
88
/*  Function is executed by the Callback handler after
89
  a CAN message has been transmitted */
90
void CAN_tx(uint8_t msg_obj_num)
91
{
92
  return;
93
}
94
95
/*  CAN error callback */
96
/*  Function is executed by the Callback handler after
97
  an error has occured on the CAN bus */
98
void CAN_error(uint32_t error_info)
99
{   // Inc Err_Couter
100
  noAnswerErrorCount++;
101
  return;
102
}
103
104
int CAN_IRQ_Hook_dispatch (void)
105
{
106
  //'IRQ-CAN-RomVexec
107
108
  (*CAN_rom)->pCAND->isr();
109
  // Call @ Delegate Job_Master_#00
110
111
  irq_toggle ^= irq_toggle;
112
113
  return(0);
114
}
115
/*  CAN interrupt handler */
116
/*  The CAN interrupt handler must be provided by the user application.
117
  It's function is to call the isr() API witch is located in the ROM */
118
int CAN_IRQHandler (void)
119
{
120
  int irq_can_master_Irq;
121
   //
122
   irq_can_master_Irq = CAN_IRQ_Hook_dispatch ();
123
   return(irq_can_master_Irq);
124
}
125
void app_can_prep(void)
126
{
127
   // PIN# 04, 18,19
128
      /* Output the Clk onto the CLKOUT Pin PIO0_1 to monitor the freq on a scope */
129
      LPC_IOCON->PIO0_1  = (1<<0); //PIN#04'CLK_OUT$4, nRES'03,CAN.(L-#18,H-#19)
130
      /* Select the MAIN clock as the clock out selection since it's driving the core */
131
      LPC_SYSCON->CLKOUTCLKSEL = (0x03);
132
      /* Set CLKOUTDIV to 6 */
133
      LPC_SYSCON->CLKOUTDIV = (0x0A);  //  CLKOUT Divider = 10
134
}
135
136
int app_CAN_cfg_Init(int w)
137
{
138
  app_can_prep();
139
140
    /* Enable CLKOUT */
141
    LPC_SYSCON->CLKOUTUEN = (0x00);
142
    __NOP ();// Scope-Monitor X-FLIP
143
    LPC_SYSCON->CLKOUTUEN = (0x01);
144
    while (! (LPC_SYSCON->CLKOUTUEN & 0x01));// wait
145
146
    /* Initialize the CAN controller */
147
    /* Hardware-Buss */
148
    (*CAN_rom)->pCAND->init_can( &CAN_ClkInitTable[0], (0x01)/*#'IRQ-CAN-BUS-TRUE*/ );
149
    /* Bind-Struct_To-Hook's 0,1,2 */
150
    __NOP ();
151
    (*CAN_rom)->pCAND->config_calb(&CAN_v_callbacks);
152
    __NOP ();
153
154
return (0);
155
}
156
157
158
159
void aapp_main(void)
160
{
161
  noAnswerErrorCount = (0x00); // Init-Error
162
163
  app_CAN_cfg_Init(1); // Can-Config-Stuff
164
    __NOP ();
165
166
  /* Enable the CAN Interrupt */
167
  NVIC_EnableIRQ(CAN_IRQn);  // goto_ Vector#13 ??? wo is Der MASTER IRQ Enable???--
168
169
  /* Send a simple one time CAN message */
170
  CAN_msg_obj.msgobj  = (0x00);
171
  CAN_msg_obj.mode_id = (0x345);
172
   //CAN_msg_obj.mode_id += 0x100;
173
  CAN_msg_obj.mask    = 0x00; // BCAST???
174
  /* */
175
  CAN_msg_obj.dlc     = 0x04; // length 4*retry delay
176
  CAN_msg_obj.data[0] = 'T';  //0x54
177
  CAN_msg_obj.data[1] = 'E';  //0x45
178
  CAN_msg_obj.data[2] = 'S';  //0x53
179
  CAN_msg_obj.data[3] = 'T';  //0x54
180
  //CAN_msg_obj.data[4] = '\0';  //NULL-Terminated String 0x04 Bytes
181
  // 'CTRL-Z Trigger
182
183
  /* TRANSMIT */
184
  /*Header-RAW_DATA-Length-CRC */
185
  (*CAN_rom)->pCAND->can_transmit(&CAN_msg_obj);
186
187
  /* Configure message object 1 to receive all 11-bit messages 0x400-0x4FF */
188
  CAN_msg_obj.msgobj =   (0x01 + 0x00);   //
189
  CAN_msg_obj.mode_id = 0x400 | CAN_MSGOBJ_STD;  // oder $00
190
  CAN_msg_obj.mask =    0x700; //b0...000:0000
191
192
  /* Receive Message */
193
  (*CAN_rom)->pCAND->config_rxmsgobj(&CAN_msg_obj);  // remote
194
195
}
196
197
int main(void) {
198
int d;
199
  while(1)
200
  {
201
     aapp_main();
202
  }
203
return (d);
204
}

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Holger Harten schrieb:
> Hier muss ich noch den Ram-Offset machen.
>
> Damit das CAN Ram frei bleibt.
1
This sample project serves as a simple demonstration to use
2
the built-in on-chip CAN drivers available on the LPC11C00
3
NXP microcontroller series.
4
5
Hardware Requirements:
6
An external CAN Analyzer/Generator is needed to send and
7
receive CAN frames to the LPC11C00.
8
9
CAN Configuration:
10
CAN bus baudrate: 125kbps
11
12
Sample Project Details:
13
14
1.  Upon reset, the LPC11C00 will send a simple CAN frame
15
  using the on-chip CAN drivers. It will send a CAN frame
16
  with its data contents of "TEST".
17
18
2.  Whenever the LPC11C00 receives a CAN frame whose ID is
19
  between 0x400-0x4FF, it will simply resend the received
20
  frame back onto the CAN bus.
21
22
3.  While the LPC11C00 isn't sending or receiving CAN frames
23
  it will go into SLEEP. It resumes automatically into
24
  active mode once it has received a CAN frame.
25
26
4.  CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! CAUTION!
27
  =====================================================
28
  Make sure to reserve memory from 0x1000 0050 - 0x1000 00B8
29
  for the on_chip CAN drivers!
30
  See the project's linker scripts and the LPC11C1x Usermanual
31
  for details.
32
  =====================================================
33
  CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! CAUTION!

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

This sample project serves as a simple demonstration to use
the built-in on-chip CAN drivers available on the LPC11C00
NXP microcontroller series.
Hier der spezielle Chip der mit Transceiver, und der ohne ist vom
Pinning anders.
Das geht aber hoffe ich.
Gruss Holger.

von Lothar (Gast)


Lesenswert?

Es gibt keinen Unterschied bei der Programmierung zwischen LPC11C14 und 
LPC11C24. Letzterer ist lediglich ein Multi-Chip-Modul mit 
CAN-Transceiver.

Somit kann man eines der LPC11C14 Beispiele ohne Änderung verwenden. 
Beim IAR Compiler ist z.B. ein solches dabei. Einfach die kostenfreie 
Version installieren und rauskopieren:

\arm\examples\NXP\LPC11xx\IAR-LPC-11C14-SK\simple\CAN

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Lothar schrieb:
> Es gibt keinen Unterschied bei der Programmierung zwischen LPC11C14 und

Bei den Pic Derivaten ist das auch so supi. "speziell"...
5V CAN PIC 4585<yT) --->LPC_11_C(24)/301
#########################################################
@Lothar
Danke für die schnelle Hilfe.
Ich werde das mal mit IARC Compiler austesten.
Möglich ist ja das einer den
---------------------------------------------------
---------------------------------------------------
Der C- example ist für einen LPC1100

Hint:
Im Datenblatt sind schon einduetige
Derivat#s Hinweise im Command-Set

z.B für den SWI Bootloader zu erkennen. ???
Das DatenBlatt ist nicht so gut für mein spez. C_CAN-Derivat
gemacht.  (ist alles noch neu.. like erata ....)

ToDo:
suche: Data für spezielle Hardened "ROM-CAN_Exec_CODE" Adresse darin,
aber nix ist da zu lesen....???
####################################################################
@StolperFallen-- ausschalten..
Bild: Offene Jumpers für /EN-Bus,  + 5V Trigger-Level, (Trim)
3,3 Vdd  via Vdd_CAN_5.0 Versorung für int. (NXPTJF1051)
Gnd_Can, GND Chip..GND Plane, "120" Ohm Terminator for Can_Bus+/-.
###################################################################
Gruss Holger.


$Id:: main.c 5034 2010-09-24 23:48:37Z nxp12832                        $
 *   Project: NXP LPC11xx CAN example

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

LPCXpresso Introduction part 2 training video
https://www.youtube.com/watch?v=cLvGwmJAA7k

@at 0x80000 war bei meinem 80512 mit CAN
supi einfach zu machen..PERIPERIE switch to CAN to RAM bingo>.
Link:
LPCXpresso's IDE (powered by Code Red)
http://www.keil.com/dd/chip/5617.htm
__BSS(RESERVED) char CAN_driver_memory[256]; // reserva 256 bytes for 
CAN driver
geht nicht bei meinem neuen LPCXpresso Compiler via Eclipe IDE.
ROM **rom = (ROM **)0x1fff1ff8;
Hint:
für das RAM reserve Mapping..
--------
Bin noch  neu in der ARM Programmierung von(LPC11xx), deswegen
würde ich mich sehr über Hilfestellung oder irgendwelche konstruktiven
Tipps freuen.
Vielen Dank.
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

ToDo: LPC 1754 M3 ARM Kernel lesen...
JTAG oder SWI (Serial-Wire-Interface)
Hacks mit FLASHMAGIC Tool & HEX2BIN.exe lesen
Features:
Der Pin''/RESET in Verbindung mit Port:_0_$03 via H/L Level
ist ein Feature für den Hardened Boot-Loader via CAN
oder SWI (RS232), ....
##################################################################
Diverse Code-Protect Features 1wire-Bus.Micro-Wire.. SPI-Wire Stuff.
LPC800 Derivate.
###################################################################
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das JTAG um das Flash der beiden CAN EVAL Boards zu laden.
Hint: TestWorkspace RX TX CAN
1
  GPIOSetValue( PORT_0, PIO0_3, 0 ); // Habilitaci�n del transceiver CAN v�a STB (en bajo --> Activo)
2
3
      //set silent mode
4
  //    LPC_CAN->CNTL |= (1<<7);
5
  //    LPC_CAN->TEST |= (1<<3);
6
7
  //    //set loopback mode
8
  //    LPC_CAN->CNTL |= (1<<7);
9
  //    LPC_CAN->TEST |= (1<<4);
10
11
  //    //operaci�n normal
12
  //    LPC_CAN->CNTL &= ~(1<<7);
13
  //    LPC_CAN->TEST &= ~((0x1<<2)|(0x1<<3)|(0x1<<4));
14
15
      /* Enable the CAN Interrupt */
16
      NVIC_EnableIRQ(CAN_IRQn);
17
18
19
      /* Configure message object 1 to receive all 11-bit messages 0x200-0x4FF */
20
      msg_obj.msgobj = 0;
21
      msg_obj.mode_id = 0x7FF; //| CAN_MSGOBJ_STD;
22
      msg_obj.mask = 0x000;
23
      (*rom)->pCAND->config_rxmsgobj(&msg_obj);
24
25
26
      while(1){

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Holger Harten schrieb:
> Das JTAG um das Flash der beiden CAN EVAL Boards zu laden.
(LPC11C00 isn't sending or receiving CAN frames)
Make sure to reserve memory from 0x1000 0050 - 0x1000 00B8
  for the on_chip CAN drivers!
  See the project's linker scripts and the LPC11C1x Usermanual
  for details.
  =====================================================
*CAN-NXP-LPC_11xxC\-*301_SIMSYS-Kernel@ARM_MO@12Mhz*
Mail-Box 32 Add: $00 BroadCast Allert Burst
Addr: $01 .. $02 ..<ptr(2>Objects + Mask-bits)
Hardware Reg. Arcitektur:
1
  =====================================================
2
SJA1000 Timing Calculator
3
http://www.esacademy.com/en/library/calculators/sja1000-timing-calculator.html  
4
/*------------- CAN Controller (CAN) ----------------------------*/
5
/** @addtogroup LPC11xx_CAN LPC11xx Controller Area Network(CAN) 
6
  @{
7
*/
8
typedef struct
9
{
10
  __IO uint32_t CNTL;                   /*!< Offset: 0x000 (R/W)  CAN control Register */
11
  __IO uint32_t STAT;                   /*!< Offset: 0x000 (R/W)  Status Register */
12
  __IO uint32_t EC;                     /*!< Offset: 0x000 (R/ )  Error counter Register */
13
  __IO uint32_t BT;                     /*!< Offset: 0x000 (R/W)  Bit timing Register */
14
  __IO uint32_t INT;                    /*!< Offset: 0x000 (R/ )  Interrupt Register */
15
  __IO uint32_t TEST;                   /*!< Offset: 0x000 (R/W)  Test Register */
16
  __IO uint32_t BRPE;                   /*!< Offset: 0x000 (R/W)  Baud rate prescaler extension Register */
17
       uint32_t RESERVED0[1];
18
  __IO uint32_t IF1_CMDREQ;             /*!< Offset: 0x000 (R/W)  Message interface 1 command request Register */
19
  __IO uint32_t IF1_CMDMSK;             /*!< Offset: 0x000 (R/W)  Message interface 1 command mask Register */
20
  __IO uint32_t IF1_MSK1;               /*!< Offset: 0x000 (R/W)  Message interface 1 mask 1 Register */
21
  __IO uint32_t IF1_MSK2;               /*!< Offset: 0x000 (R/W)  Message interface 1 mask 2 Register */
22
  __IO uint32_t IF1_ARB1;               /*!< Offset: 0x000 (R/W)  Message interface 1 arbitration 1 Register */
23
  __IO uint32_t IF1_ARB2;               /*!< Offset: 0x000 (R/W)  Message interface 1 arbitration 2 Register */
24
  __IO uint32_t IF1_MCTRL;              /*!< Offset: 0x000 (R/W)  Message interface 1 message control Register */
25
  __IO uint32_t IF1_DA1;                /*!< Offset: 0x000 (R/W)  Message interface 1 data A1 Register */
26
  __IO uint32_t IF1_DA2;                /*!< Offset: 0x000 (R/W)  Message interface 1 data A2 Register */
27
  __IO uint32_t IF1_DB1;                /*!< Offset: 0x000 (R/W)  Message interface 1 data B1 Register */
28
  __IO uint32_t IF1_DB2;                /*!< Offset: 0x000 (R/W)  Message interface 1 data B2 Register */
29
       uint32_t RESERVED1[13];   
30
  __IO uint32_t IF2_CMDREQ;             /*!< Offset: 0x000 (R/W)  Message interface 2 command request Register */
31
  __IO uint32_t IF2_CMDMSK;             /*!< Offset: 0x000 (R/W)  Message interface 2 command mask Register */
32
  __IO uint32_t IF2_MSK1;               /*!< Offset: 0x000 (R/W)  Message interface 2 mask 1 Register */
33
  __IO uint32_t IF2_MSK2;               /*!< Offset: 0x000 (R/W)  Message interface 2 mask 2 Register */
34
  __IO uint32_t IF2_ARB1;               /*!< Offset: 0x000 (R/W)  Message interface 2 arbitration 1 Register */
35
  __IO uint32_t IF2_ARB2;               /*!< Offset: 0x000 (R/W)  Message interface 2 arbitration 2 Register */
36
  __IO uint32_t IF2_MCTRL;              /*!< Offset: 0x000 (R/W)  Message interface 2 message control Register */
37
  __IO uint32_t IF2_DA1;                /*!< Offset: 0x000 (R/W)  Message interface 2 data A1 Register */
38
  __IO uint32_t IF2_DA2;                /*!< Offset: 0x000 (R/W)  Message interface 2 data A2 Register */
39
  __IO uint32_t IF2_DB1;                /*!< Offset: 0x000 (R/W)  Message interface 2 data B1 Register */
40
  __IO uint32_t IF2_DB2;                /*!< Offset: 0x000 (R/W)  Message interface 2 data B2 Register */
41
       uint32_t RESERVED2[21];
42
  __I  uint32_t TXREQ1;                 /*!< Offset: 0x000 (R/ )  Transmission request 1 Register */
43
  __I  uint32_t TXREQ2;                 /*!< Offset: 0x000 (R/ )  Transmission request 2 Register */
44
       uint32_t RESERVED3[6];
45
  __I  uint32_t ND1;                    /*!< Offset: 0x000 (R/ )  New data 1 Register */
46
  __I  uint32_t ND2;                    /*!< Offset: 0x000 (R/ )  New data 2 Register */
47
       uint32_t RESERVED4[6];
48
  __I  uint32_t IR1;                    /*!< Offset: 0x000 (R/ )  Interrupt pending 1 Register */
49
  __I  uint32_t IR2;                    /*!< Offset: 0x000 (R/ )  Interrupt pending 2 Register */
50
       uint32_t RESERVED5[6];
51
  __I  uint32_t MSGV1;                  /*!< Offset: 0x000 (R/ )  Message valid 1 Register */
52
  __I  uint32_t MSGV2;                  /*!< Offset: 0x000 (R/ )  Message valid 2 Register */
53
       uint32_t RESERVED6[6];
54
  __IO uint32_t CLKDIV;                 /*!< Offset: 0x000 (R/W)  Can clock divider Register */
55
} LPC_CAN_TypeDef;
56
/*@}*/ /* end of group LPC11xx_CAN */

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier das Bild ist das Modul "ohne" Chip-CAN.
Also das erst mal nicht kaufen...
Das mit Can hat auch einen SUB-9 Connector Plug auf dem Proto-Shield.
######################################################################
Da muss ich noch den Proz./RES Pin jeweils auf GND legen.
Proz.--(T-Ristaten).
So kann ich jeweils die 2 Eval-Board mit den Can-Chips seperat flashen,
und somit wird die Patine nicht wie vorgeschlagen getrennt zersägt...
Der Preis von ca.$15 ist für 32Bitter CAN-Develop schon gut.

######################################################################
Remote Target CLK-Clock ist der iCE Debugger(LP-LINK JTAG & SWD)
[1#JTAG + (2#Serial Wire Debug InterFace)}
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Error Handling. Resync
SCope §03 LSB first ? Suff bei 00000 oder 11111.
##########################################
https://www.youtube.com/watch?v=nlksYTtgeXE
(Ver:C_CAN2.0'Bosch)

Die Couter'sw Rx /TX Err_counter:127> ist nicht dabei );
255 BUSS-OFF Self-Remove Fault. Resync (128 )--Bus-Onn...kicker
// (#cB)osch-Protocoll Analyse & 
'Err-Anarchie..multivariante-'trigger-Hacks
//* 6Consequqent Zerros_000_000 ==<>-'Error
// NRZ Access Verletzung =<generate.an>ERROR ..Bingo>..
// error status bits
 #define CAN_ERROR_PASS 0x00000001UL
 #define CAN_ERROR_WARN 0x00000002UL

 #define CAN_ERROR_BOFF 0x00000004UL
 //Buss-OFF >= $7F

 #define CAN_ERROR_STUF 0x00000008UL
 //set-HALF-CARRY if >$5 '_*Mirr-inv.flip-bit&Stuff
 // NRZ Algo. (1=0)-XOR-v@irqHOOK-TURN-(0=1)
 #define CAN_ERROR_FORM 0x00000010UL
 #define CAN_ERROR_ACK  0x00000020UL // b10:0000_0000'ACK
 //######################################################
 #define CAN_ERROR_BIT1 0x00000040UL
 #define CAN_ERROR_BIT0 0x00000080UL
//                 ?????
//########################################################
 #define CAN_ERROR_CRC  0x00000100UL
 //        Algo. 8Bit      CRC DATA +'count+ for_HeadderBurst

http://www.esacademy.com/en/library/calculators/sja1000-timing-calculator.html
http://knowledgebase.nxp.com/showthread.php?p=15911#post15911
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Link:
http://knowledgebase.nxp.trimm.net/showthread.php?p=12963#post12963
###################################################################
1
>Data Pack-is for you -- grab Data & ACK 
2
So in der Can_Config geht es an die 
3
Getreibe Bits .IF1_CMDMS..
4
Siehe Posting der Arcitektur: 
5
Ich suche noch den optionellen ACK via ByPass Mode );
6
Das ist fast ein Rockwell-Modem, siehe Bild 
7
echt schräg der C_CAN 2*DSR/DTR--CAN-RockWell
8
nur "ein" Timer wurde für das CAN-Feature pre reserved. 
9
Kann der user den den in der user-App. zumindest uneingeschränkt 
10
mit lesen ??, um das App-State-Modell  noch besser zu trig-timen ???.);
11
ToDo 
12
CTS,DSR,#'RI-,DCD--iINP--to---MCU;
13
DTR,RTS;-----------o-OUT-from-MCU;
14
15
/*-----------------------------------------------------------------*/
16
Link:
17
http://knowledgebase.nxp.trimm.net/showthread.php?p=12963#post12963
18
###################################################################
19
void CAN_ConfigureMessages( void ) // Letzter Stand: 15.02.13
20
{
21
  uint32_t i;
22
  uint32_t ext_frame = 0; //29
23
24
  /* It's organized in such a way that:
25
        obj(x+1)    standard    receive (RX)
26
        obj(x+2)    standard    transmit(TX)
27
        obj(x+3)    extended    receive
28
        obj(x+4)    extended    transmit    where x is 0 to 7
29
        obj31 is not used. 
30
        obj32 is for remote date request test only */
31
        // Holg. support "old" Remote-Data-Procedure
32
  
33
  for ( i = 0; i < MSG_OBJ_MAX; i++ )
34
  {
35
    LPC_CAN->IF1_CMDMSK = WR|MASK|ARB|CTRL|DATAA|DATAB;
36
37
    if ( ext_frame == 0 ) // Holg. only 11Bit-Identifyer
38
    {
39
      /* Mxtd: 0, Mdir: 0, Mask is 0x7FF */
40
      LPC_CAN->IF1_MSK1 = 0x0000;
41
      LPC_CAN->IF1_MSK2 = ID_STD_MASK << 2;
42
43
      /* MsgVal: 1, Mtd: 0, Dir: 0, ID = 0x100 */
44
      LPC_CAN->IF1_ARB1 = 0x0000;
45
      LPC_CAN->IF1_ARB2 = ID_MVAL | ((RX_MSG_ID+i) << 2);
46
47
      if ( (i % 0x02) == 0 ) 
48
      {
49
        LPC_CAN->IF1_MCTRL = UMSK|EOB|DLC_MAX;
50
      }
51
      else
52
      {
53
        LPC_CAN->IF1_MCTRL = UMSK|RXIE|EOB|DLC_MAX;
54
        ext_frame = 1; // Holg#1. ?29 Bits 
55
      }
56
    }
57
    else
58
    {
59
      /* Mxtd: 1, Mdir: 0, Mask is 0x1FFFFFFF */
60
      LPC_CAN->IF1_MSK1 = ID_EXT_MASK & 0xFFFF;
61
      LPC_CAN->IF1_MSK2 = MASK_MXTD | (ID_EXT_MASK >> 16);
62
63
      /* MsgVal: 1, Mtd: 1, Dir: 0, ID = 0x100000 */
64
      LPC_CAN->IF1_ARB1 = (RX_EXT_MSG_ID+i) & 0xFFFF;
65
      LPC_CAN->IF1_ARB2 = ID_MVAL | ID_MTD | ((RX_EXT_MSG_ID+i) >> 16);
66
67
      if ( (i % 0x02) == 0 )
68
      {
69
        LPC_CAN->IF1_MCTRL = UMSK|EOB|DLC_MAX;
70
      }
71
      else
72
      {
73
        LPC_CAN->IF1_MCTRL = UMSK|RXIE|EOB|DLC_MAX;
74
        ext_frame = 0;
75
      }
76
    }
77
    /* holg. Clear- all 'IF1-index_ed'irqFlgs?*/
78
    LPC_CAN->IF1_DA1 = 0x0000;
79
    LPC_CAN->IF1_DA2 = 0x0000;
80
    LPC_CAN->IF1_DB1 = 0x0000;
81
    LPC_CAN->IF1_DB2 = 0x0000;
82
83
    /*** Holg. Reserve--genug 'RAM vorher */
84
    /* Transfer data to message RAM  */
85
#if BASIC_MODE
86
    LPC_CAN->IF1_CMDREQ = IFCREQ_BUSY;
87
#else
88
    LPC_CAN->IF1_CMDREQ = i+1;
89
#endif
90
    while( LPC_CAN->IF1_CMDREQ & IFCREQ_BUSY );
91
  }
92
  return;
93
}
94
/*********** CAN CODE SNIPLET ENDE */

Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

http://www.nxp.com/documents/line_card/75017327.pdf
CMSIS stands for “Cortex Microcontroller Software Interface Standard”.
Please have a look at this line card:
Just a short overview:
LPC8xx = Cortex M0+ core, simple peripherals
LPC11xx = Cortex M0 core, simple peripherals
LPC12xx = Cortex M0 core, extended peripherals
LPC13xx = Cortex M3 core, simple peripherals
LPC17xx = Cortex M3 core, extended peripherals
LPC18xx = Cortex M3 core, even more peripherals...
LPC40xx = Cortex M4 core, extended peripherals
LPC43xx = Cortex M4 + Cortex M0 (dual core), extended peripherals

The letters inside the part numbers (e.g. LPC11A14) are a hint for 
additional functionality:
A = analog modules (Comparator, DAC etc.)
U = USB
C = CAN
D = LCD driver
E = integrated EEPROM (but other family members have an EEPROM, too...)

Usually you can port your program very easily, if the core doesn't 
change. As an example: LPC1114->LPC11A14 or LPC11U14->LPC1227. I would 
suggest that you start with a very simple controller like a LPC1114 and 
a LPCXpresso board. These little beasts are great for exploring the LPC 
world

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Fam: LPC11C00 ARM M0 via CMSIS V2..?V3.CORE-Reg-Pos.Adapter
Project: LPC11C24/301 can_onchip.bin
Sub Fam: LPC11C00 ARM M0
How to kick in LPC11C24/301 Can-Self-Test-Mode.
To-Do: How Handle Reconnect Vexec[0,1,2.NULL,NULL..]
Un-ARM-IRQ-Handler& ARM it via Vexec+Mask
Testing IRQ + TX & RX Call-Backs via. self test
in CAN off disconnected from-Buss ? a'Tristate Lopp_Back_Mode
Req:
Bits: Im Contr-Reg -Test b'(#4),-Loop-Bk (b#7);
Ist -Test a Bypass-Mode-For self-ACK ?
##############################################
Question: What is a Overload-Frame, how to use ?
##############################################
Loopback freq=0-via-Table[0]
Timing-Gen via.Freq-Divider Reg. is NULL-Zero-Nada why ???
a STATIC REZESSIVHIGH LEVEL.--IDLE no Phy-Connected.
Like REALTEC NE2000 3-Lopp-Bk Modes.

Devide by Zero/throw  Exeption IRQ Trap-Vector ???
Pin-IRQ Port_Px 3 is 'Hack ??Self-Stimulate a Datagramm.

---------------------------
1
#include <cr_section_macros.h>
2
#include "driver_config.h"
3
#include "target_config.h"
4
#include "small_gpio.h"
5
#include "gpio.h"
6
#include "rom_drivers.h"
7
8
#ifndef NULL
9
#define NULL    ((void *)0)
10
#endif
11
Grundsätzlich gilt bei Daten-Bytes Sende'Tele-Gramm "'MSB 'First" 
12
$80Bit $40Bit.. bei RS232 LSB first
13
#define LB_FREQ_NULL    ((0x00)) // TAB_
14
// loopBack mit Galvanisch on Buss 
15
#define BUS_ON_CONNECT_1 (0x01) // react OFF then ON -toggle-System-Init 
16
#define BCAST    (0x00)         // BCAST_LISTEN_ALL
17
18
/*-----SEND LOOP-BACK----------------------------------*/
19
#define OBJ_0            (0x00) //TxtoRx-buff-pstorage_0
20
#define OBJ_1            (0x01) //Rx-buff-pstorage_fom_0
21
//-----------------------------------------
22
/* [SAME MASK OBJ_1 to OBJ_2] */
23
// hirracical_MAX_dominant-neg_00 --to least_dominant 16.. 30,"31-"[0:31]--[31:0]
24
// >___5Bit Low-Level overwrites High-Leves during Add-rez-e_sssss-@Phase#2,
25
// witch comes after the time-slotted 'synccc.Phase#0
26
// setrete all ......;.......255/2......>
27
/*############# MESSAGE OBJECT #############################*/
28
/* #############Descriptor*/
29
#define MASK_OBJ_1    (0x7FF) // ID_A1K_MASK
30
#define MASK_OBJ_2    (0x7FF) // ID_A2K_MASK 
31
32
33
__BSS(RESERVED) char CAN_driver_memory[256]; // reserva 256 bytes for CAN driver
34
35
ROM **rom = (ROM **)0x1fff1ff8;
36
37
CAN_MSG_OBJ msg_obj;
38
uint32_t cuenta;
39
uint32_t cuenta_Rx;
40
uint32_t cuenta_Tx;
41
42
/* Initialize CAN Controller */
43
uint32_t ClkInitTable[2] = {
44
  0x00000000UL, // CANCLKDIV
45
  0x00001C57UL  // CAN_BTR
46
};
47
48
/* Callback function prototypes */
49
void CAN_rx(uint8_t msg_obj_num);
50
void CAN_tx(uint8_t msg_obj_num);
51
void CAN_error(uint32_t error_info);
52
53
/* Publish CAN Callback Functions */
54
CAN_CALLBACKS callbacks = {
55
   CAN_rx,
56
   CAN_tx,
57
   CAN_error,
58
   NULL,
59
   NULL,
60
   NULL,
61
   NULL,
62
   NULL,
63
};
64
65
/*  CAN receive callback */
66
/*  Function is executed by the Callback handler after
67
  a CAN message has been received */
68
void CAN_rx(uint8_t msg_obj_num){
69
70
  //ToggleGPIOBit(LED_PORT, LEDV_BIT);
71
  ++cuenta_Rx;
72
73
  return;
74
}
75
76
/*  CAN transmit callback */
77
/*  Function is executed by the Callback handler after
78
  a CAN message has been transmitted */
79
void CAN_tx(uint8_t msg_obj_num){
80
81
  ToggleGPIOBit(LED_PORT, LEDV_BIT);
82
  ++cuenta_Tx;
83
  return;
84
}
85
86
/*  CAN error callback */
87
/*  Function is executed by the Callback handler after
88
  an error has occured on the CAN bus */
89
void CAN_error(uint32_t error_info){
90
  return;
91
}
92
93
/*  CAN interrupt handler */
94
/*  The CAN interrupt handler must be provided by the user application.
95
  It's function is to call the isr() API located in the ROM */
96
void CAN_IRQHandler (void){
97
  (*rom)->pCAND->isr();
98
}
99
100
int main(void) {
101
102
  InitGPIO();
103
104
  /* Initialize the CAN controller */
105
  (*rom)->pCAND->init_can(&ClkInitTable[LB_FREQ_NULL], BUS_ON_CONNECT_1); //
106
107
  /* Configure the CAN callback functions */
108
  (*rom)->pCAND->config_calb(&callbacks);
109
110
111
  SetGPIOOut(LED_PORT, LEDV_BIT);
112
  SetGPIOOut(LED_PORT, LEDR_BIT);
113
  SetGPIOOut(PORT_0, PIO0_3);
114
  
115
  GPIOSetValue( PORT_0, PIO0_3, 0 ); // Habilitación del transceiver CAN vía STB (en bajo --> Activo)
116
117
118
    //set loopback mode
119
    LPC_CAN->CNTL |= (1<<7);
120
    LPC_CAN->TEST |= (1<<4);
121
122
  /* Enable the CAN Interrupt */
123
  NVIC_EnableIRQ(CAN_IRQn);
124
125
  /* Configure message object 1 to receive all 11-bit messages 0x200-0x4FF */
126
  msg_obj.msgobj =  (OBJ_0); // ?OBJ=00
127
  msg_obj.mode_id = (0x7FF); //| CAN_MSGOBJ_STD;
128
  //#### 11Bit_ID
129
  msg_obj.mask =   (0x000);  // OBJ-Filter
130
  
131
  (*rom)->pCAND->config_rxmsgobj(&msg_obj);//RemoteRX
132
      cuenta ^= cuenta; //Clear Lock 
133
  while(1)
134
  {
135
           //pre_Inc
136
    if (++cuenta == 1000000) // 
137
    {
138
          cuenta ^= cuenta; //Clear Lock 
139
      ToggleGPIOBit(LED_PORT, LEDR_BIT);
140
    
141
142
      msg_obj.msgobj  = OBJ_1; //New 
143
      msg_obj.mode_id = 0x7FF; //Same 
144
      msg_obj.mask    = (0x0); // Bit-Filter-Mask
145
      
146
      msg_obj.dlc     = (0x08 & 0x04); // sizeof as strlen
147
      msg_obj.data[0] = 'T';  //0x54
148
      msg_obj.data[1] = 'E';  //0x45
149
      msg_obj.data[2] = 'S';  //0x53
150
      msg_obj.data[3] = 'T';  //0x54
151
      // ---------------------------->
152
      (*rom)->pCAND->can_transmit(&msg_obj);
153
154
155
    }
156
    //cuenta++; // INC 
157
  }
158
}
############################

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

http://www.computer-solutions.co.uk/info/Embedded_tutorials/can_tutorial.htm
Knoten_ACK:
Der ACK ist nach dem Major-Prinzip für "alle" Knoten zu beantworten.
Und wird auch von jedem via Monitor Feddback gewertet.
FallBeispiel:
99 Knoten sagen Ja und 1 Knotn sagt Nein. Bingo>
 Knoten der Nein gesagt hat ist der Fehler-Teufel.
Major Prinzip. via Vote[akt_Vector]über-alle_Knoten_Teilnehmer.
PS:
Nach so einer Doku habe ich schon immer gesucht...findet man noch nich 
mal
in meinem Buch von Wolfhard Lawrenz CAN Controller Area Networks.
2te Auflage.

Also teilnahme an seinem Knoten "Fehler-Teufel" Vote A-Bit kann man auch 
abschalten. (Bypass-Bit)


Remote:
Das Remote ist Default als NULL im "DATA-MODE".
#####################################################################
Lese noch über CAN-Bibliothek at90CAN128 da steht noch was über
Single IRQ-Bit[Vector] für jeweilige MSG-OBJ-Nummer# ...
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Beitrag "CAN-Bibliothek für den at90CAN128 und das AVRStudio"
Hier ist der Link:
Und das ist sehr hilfreich.
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Holger Harten schrieb:
> Und das Aktiv-Voting mit Monitor Funktion
Die Quarze der Knoten müssen präzise sein, und die Leitung ca. 30m.
Der ACK SLOT wo alle Knoten genau bit-aktiv-trig.Voten bingo<>.#Ticks
#####################################################################


http://www.vde-verlag.de/buecher/483305/funktionale-sicherheit.html
Hint:

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

__disable_irq(); // -IQR'S
Receive
   : case () //MSG--OBJ[][]
   UpdateSLI Reg-sep:Bit.Table Set..Clr
   :end-case()
Transmit //MSG--OBJ[][]
__enable_irq();  //+IRQ's
Anhang: Bild für das IRQ'13 'Handling
mit den Object-Bitspuren [][]-->[][] V_OBJ-
(x)('x)Also zu jedem Object[#x] sind 2 Reg. krorrospondierende
 2 Bitspuren nötig ...x ...'x
 So kann man also z.B 16 seperate Objecte verwalten.
 Und die X-or Listen_to Maske auf die 11Bit 'Id# einstellen.
 ID und ID-Sub-Maske
 #############################################################
 Weiter ging es mit der 29Bit 'Id# bit für Ext_ID=1.
 Die soll auch noch zu der alten 11Bit kompartibel sein. :);
 COP88C machte das via Zusatz via ext. Tabellen via '#EEPROM SPI-Wire...

Link:code LPC C_CAN_24/301 IRQ-Stuff;
http://www.downtowndougbrown.com/2012/06/microcontrollers-gpiotimersinterrupts-example-and-lpcxpresso-lpc1114-review/

Link: Das Wolfhard Lawrenz Can Buch ist schon auf Auflage 5 mit CD-ROM
http://elmicro.com/de/bu-lawrenz.html

Fazit: Feature LPC C_CAN_24/301 wurde nur 1 Timer dafür geopfert.
Gruss Holger.

von Aloa (Gast)


Lesenswert?

Verkommt das Forum langsam zum Scratchpad?

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Thema: Scratchpad?
NXP LPC C_CAN_24/301 also C_CAN Wissen für die Schule.
Damit man einen 32Bitter auch gegen einen (CAN(8-Bit)Pic4585 hat.
Der National Semi COP888BC ist da noch flexibler was CAN via 
ADC-mess-trigger mit
CAN Data via "auto-answer".  bietet.
Der aktuelle ADC-messwert wird also automatsch in die jeweilige
via OBJ#-Mail-Box[Slot-ID] geladen. So ist der adc-Messwert immer 
aktuell.
für den OPC-Server.

Also Optimal um eine Techniker-Abschlussarbeit damit umzusetzen.

 Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Holger Harten schrieb:
> Also Optimal um eine Techniker-Abschlussarbeit damit umzusetzen.
Hier der You Tube Kanal
Learn Eclipse the LPCXpresso way - from the developers
 Bild: UART LPC_11_CAN_24_1.PNG
 Das obere Board ist CAN mit SUB-D 9-Pin.
 Die spezi. CAN Pinne Z.B BT-SLEEP sind noch zu Tacken da das default 
OFF-Bus ist. Auch das GND-CAN ist offen ???
 Ich hoffe mit dem Loop-Back erst mal das IRQ-Vexec zu testen.

Linker Einstellungen CAN ORG Base-Ram und Vexec ROM AdDress.
######################################################################## 
#
Ich vermisse noch das Instruction Stepping Mode, in dem Menue.
Ich habe die Debugging Steps ...
Bei Way Engeneer habe ich ein Register-Modell für CAN-LPC11C24/301.

Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier sind die Ram-Maps via Linker mod, grosszügig
mit   via 8k-256bytes = 0x1F00 bingo>.
1
 
2
  
3
Also:  lpc1114_mem_ram_can_crp.ld
4
linker/lpc1114_mem_ram_can_crp.ld"
5
MEMORY
6
{
7
  /* Define each memory region */
8
/*  MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 */ /* 32k */
9
  RamLoc8 (rwx) : ORIGIN = 0x10000100, LENGTH = 0x1F00 /* 8k-256bytes */
10
11
}
12
  /* Define a symbol for the top of each memory region */
13
/*  __top_MFlash32 = 0x0 + 0x8000; */
14
  __top_RamLoc8 = 0x10000100 + 0x1F00;
15
  
16
-----------------------------------------------------
17
INCLUDE "../linker/lpc1114_lib_ram_crp.ld"
18
INCLUDE "../linker/lpc1114_mem_ram_can_crp.ld"
19
20
ENTRY(ResetISR)
21
22
SECTIONS
23
{
24
  .text :
25
  {
26
    FILL(0xFF);
27
    KEEP(*(.isr_vector))
28
    *(.text*)
29
    *(.rodata*)
30
31
  } > RamLoc8
32
33
34
  /* for exception handling/unwind - some Newlib functions (in common with C++ and STDC++) use this. */
35
  
36
  .ARM.extab : 
37
  {
38
    *(.ARM.extab* .gnu.linkonce.armextab.*)
39
  } > RamLoc8
40
41
  __exidx_start = .;
42
  .ARM.exidx :
43
  {
44
    *(.ARM.exidx* .gnu.linkonce.armexidx.*)
45
  } > RamLoc8
46
  __exidx_end = .;

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Hier ist der Autor Kunil Kuda, der schreibt noch mehr Info-Hints zur
Timer-Architektur ...

Hier Seíte: 20 Info zur Debugger-ASM-Code Stepping.
Link:
http://de.scribd.com/doc/38280844/LPCXpresso-Hands-On
#########################################################
Endlich habe ich den Instruction Stepping Mode am laufen.
Problem-Bericht:
Hier:-->Link:
Beitrag "LPCXpresso Instruction Stepping mode"

Gruss Holger.
Link zum Lernen der Stepping Mode ca. nach 20 Min.
http://www.youtube.com/watch?v=E6vSPloei-0

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Holger Harten schrieb:
> Link zum Lernen der Stepping Mode ca. nach 20 Min.
Hier ein Bild wie es sein Sollte, aber diese "I"Step-ICONS habe ich 
nicht.
     Menue: ... [  I step    ]

Der Mode ist für mich nur mit "Handarbeit" zu aktivieren.
############################################################
Debug: Mode--
Wie bekomme ich die Icons in die Menue-Leiste
   ( (DEBUG)Liste ganz "oben" - (..axf) Rechte MausTaste ASM - STEP )
 In der Liste habe ich das nur mit dem Hint: Seite 20 aktiv bekommen.

Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Kurzer-Update:
Hier komme ich noch nicht richtig weiter.
Die Version ist bei mir nicht auf UBUNTU ..sind da noch mehr
Debug-Features dabei ??
Fazit:
Menue-"Variablen"-Reiter-Leiste
 1) Die Trigger Einstellung. wie beim FreeScale Compiler ???
  prozess_x_variable = 4
  via simpler also ohne event == trigger. (oder super Cross-Trigger)
  z.B ( var1 == 1 && var2 == 3)
--------------------------------------------------------------------
  watch  prozess_x_variable. -- Das ist also was erst mal via Debug-Mode
  geht..

 2) Die Box  (x) Variable ist gesperrt -->geht nix einzutragen.
######################################################################
Hier noch was zu lesen:
Freely distributable ARM BOOKS.:
http://de.scribd.com/doc/30063713/The-Definitive-Guide-to-the-ARM-Cortex-M3-2010
Hint: http://de.scribd.com/doc/38226967/ARM-Cortex-M0-Overview
http://de.scribd.com/doc/84478286/How-to-Use-LPCXpresso-IDE-with-LPCXpresso-Board-ARM-CORTEX-M3
Timer: http://www.scribd.com/doc/38287837/LPC1114-HandsOn
Hitex: http://de.scribd.com/doc/37980850/STM32-Cortex-M3
Texas Instruments. SN65HVD1050D CAN TransCEIVER
CAN Industrial and Factory Automation
########################################################################
Hint:
In dem Hands-On Buch ist noch ein Kapitel isp-EEPROM Flash-Emulation
also Linker muss 32Byte Ram am Top-Ram frei lassen.
$8000 - 32Byte -->new_Top-Mem
Bild Memory-Map CAN(24) Derivat.
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Holger Harten schrieb:
 Kurzer-Update: Für CAN MESSAGE 4 bit nibble Accept-Filter & 
Mask-Register
Hier komme richtig weiter mit dem CAN MESSAGE dual Filter.
Das Beispiel ist für ein double Filter mit der msg_ID: 0x601.
Das Bit-Muster für den Filter rekrutiert sich wie auf dem Bild.
( ab. Roter-Strip mit 3Bit + 4+2+1*0 = "6"....,0001 usw. )
################################################################
Laut spec wird das Remote-Bit zuerst gesendet. Rules: MSB First ..

Default ist das Remote-Bit Null.

Hint:
http://www.can232.com/docs/CAN_Filter_Std_Dual.pdf
DatenBlatt: SJA1000 CAN Controller
Gruss Holger.

von Robert T. (robertteufel)


Lesenswert?

Ich mag zwar den LPC11C24 aber sind Monologe im Forum angebracht?
Schreib doch alles zusammen als Artikel wenn es fertig ist. Dann ist ein 
solches Posting hilfreich.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Robert Teufel schrieb:
> Schreib doch alles zusammen als Artikel wenn es fertig ist. Dann ist ein
>
> solches Posting hilfreich.

@Robert Hallo ! Du kannst hier gerne mitwerkeln u. z.B
Beispiele Posten. Besonders ist das nicht, wenn
ein Project hier vorab mal mit den Eckdaten vorgestellt wird.
Fazit:
Die Platine hat erst nach richtiger ext. el. Beschaltung CAN-BUS
Funktion. (Siehe Schaltbilder via 10K Pull-Up-via Transceiver-/EN),
          via (JTAG-Disconnect)
Link: Id-Bit+REMOTE_ID+Data+ b(#ACK + CRC EOF::
http://www.me-systeme.de/canbus.html#1578569eb20a42813
Bilder zur CAN-Msg-Id.
Beitrag "CAN Komunikation Evalboard MCBSTM32C zu STM32F103VDT6"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Thema: Linker Script anpassen
Für EEPROM-Flash-Emulation & CAN RAM.
http://support.code-red-tech.com/CodeRedWiki/EnhancedManagedLinkScripts

Für EEPROM muss top-Ram noch 32Byte nach "unten" setzen.
somit ist...
Der Stack via Top liegt da: at 'top -32 bytes.
also ab 0x1F00 - 32 = '0x1EE0
Memory-MAP:
[top-mem]-------------
[stack}\'down-grow(...)
...............}stack:size

My-User-Ram#1//grow-'up
[CAN-RAM 50--B8] // Can-Controller-(b'Mob) @Hook

[0000_:50-RAM]
##################################################
Link:
http://knowledgebase.nxp.com/showthread.php?t=2687
Guss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

LINK:
RAM Offset base(CAN-RAM)--(top-32bytes)
zERO.
http://knowledgebase.nxp.com/showthread.php?t=4223&highlight=lpc11c24

Stack_offset: 0 to 32 Byte für ISP Mode
http://www.support.code-red-tech.com/CodeRedWiki/ReserveIAPRam
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--

Tutorial 1 LPCXpresso com Target Project Manage LPC1769
http://www.youtube.com/watch?v=bcNNzrhN7TY&feature=endscreen&NR=1

##################################################
Link: .Zero Vid-Tut.
Switch seq. LPCXpresso to ISP during RESET via P_01 to GND.
http://www.youtube.com/watch?v=chFv1EiZcYo
Gruss Holger.
######################################################################## 
#
Hint:
Increase Stack offset to 32 as described here: 
http://www.support.code-red-tech.com.../ReserveIAPRam

Solution #2-2 Change MCU memory region
As mentioned in Solution #1-2 just reduce memory size
Memory configuration LPC11Cxx without first 0xC0 bytes and without last 
32 bytes (0x2000-0xC0-0x20=0x1F20):

Quote:
 Type Name Location Size
 RAM RamLoc8 0x100000C0 0x1F20

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

CCAN_CALLBACKS_T und Register. in Doxygen-Format
Link:
http://docs.lpcware.com/lpcopen/ccand__11xx_8h.html

Link: raw-Can von Zero. TD.A(1,2)/B(1,2) ; je 4 Byte Vector-Data-Buff
CAN Problems
http://knowledgebase.nxp.trimm.net/showthread.php?t=4249

Hint: Plain C code .
http://knowledgebase.nxp.trimm.net/showthread.php?s=a49f67a6f5d7482cbb31e85781a32c23&t=2649&page=2

Gruss Holger.

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.