LPC23xx Family
  Question: Can I run codes from the Ethernet RAM or USB SRAM memories?
 

Unfortunately, it is not possible to execute codes from these memory areas. However, when not in use, it is possible to store data on these memories and handle them with a code executed from Flash or RAM memory. That’s a good alternative to save memory from RAM or Flash to store arrays, definitions and so on.



 


  Question: Sometimes, when using nestling interrupts and MAM simultaneously, my solution gets unsynchronized. Why?
 
The execution of MAM can cause a time distortion, and it is due to the fact that the MAM engine is susceptible to word alignment. It is nothing but a feature from MAM. It can make a “lower priority” task can be distorted by a “higher priority” task being executed at the same time. Furthermore, the "highest priority" will always be concluded in time, regardless if the "lower priority" needs to be executed or not. Our suggestion is to avoid nesting interrupts and use MAM at the same time. And while writing the code, if a word alignment is present, use dummy code to avoid it.
 
  Question: I need an I2C communication speed in order to 400kHz. Is it possible to make with a LPC2378?
 
Sure! With LPC2378, it can be reached I2C speeds up to 400kHz, as we can find at datasheets. However, some tests revealed I2C speeds in order of 480kHz, depending on the configuration


FCLK = 57.6MHz, PCLK = 14.4MHz

I20SCLH| I20SCLL

SCL calculated (kHz)

SCL measured (kHz)

0x80 | 0x80

56, 25

~56,25

0x1C | 0x1C

255,172

~257,3

0x11 | 0x11

423,529

~425,4

0x10 | 0x10

450

~446.3

0x0F | 0x0F

480

~480,7

 


  Question: Is an assembler code executed at the same way of a C code?
  Depending on the compiler, the Assembler and C codes can be executed differently. When using Assembler code, most of compilers doesn’t make any kind of optimization and generates the Machine File (.HEX or .AXF, of another) just as it is written – checking only if the syntax is correct. When Compiling C codes and generating the machine files, the compiler makes an optimization and can find the best behavior for the microcontroller it is being working with. Due to these features, sometimes it is possible to observe two codes written in Assembler and C and executing the same task, where the C code’s task is being executed faster than the Assembler code’s.
 
  Question: I am currently using several FIQs and I got a problem of latency. Why is it happening?
 

When a single FIQ is used, no extra operations are needed to make it work. But when two or more FIQ are being used, VIC sums all requests (enlarging latency) to generate a FIQ signal to ARM processor. It is not mandatory to use a single FIQ but, in order to achieve the minimum latency, you have to use as few FIQs as possible.


 


If you have other questions that you would like answered, please contact us.