ARMwizard, freeware app to setup LPC2xxx,17xx,13xx,11xx reg

I have designed the application to be used in a non resizable form so even if you resize it you will either hide some of the components or you will see a lot of empty space, in either case I don’t find this useful.

I know that there are a couple of settings lists that are shown with a height scroll bar but they should be convenient enough.

In which specific area would you find the sizable option useful?

Alex

Looks like an interesting tool. Have you thought about supporting the CMSIS standard. at least for register definitions.

I know this is a big change, as I’ve been converting our tools and examples to it. Almost ready to publish the results.

What CMSIS does at the low level is define register blocks as C structures. Whether this is good or bad can be open to debate.

But what is definitely good is that ARM and the vendors are publishing examples for their peripherals using these definitions. Unfortunately they haven’t gone back to the ARM7 parts to do this in many cases, but for our examples we did a partial conversion.

Your right, the vast majority of the app would not benefit. I suppose I’m thinking of the main IO page but it’s not worth it just for that.


Rob

viskr:
Looks like an interesting tool. Have you thought about supporting the CMSIS standard. at least for register definitions.

I know this is a big change, as I’ve been converting our tools and examples to it. Almost ready to publish the results.

What CMSIS does at the low level is define register blocks as C structures. Whether this is good or bad can be open to debate.

But what is definitely good is that ARM and the vendors are publishing examples for their peripherals using these definitions. Unfortunately they haven’t gone back to the ARM7 parts to do this in many cases, but for our examples we did a partial conversion.

I’m actually not familiar with it so I would have to learn what it is first and then try to apply it and I think it will be time consuming

I think I would rather focus on adding more features to the application (and probably more mcu like 13xx) but thank you for your suggestion.

Alex

You might want to look at CMSIS a bit more as it will help in adding new parts. The big difference will be how registers are defined. In older header files like LPC21xx.h and earlier LPC17xx.h you would see

/* SPI0 (Serial Peripheral Interface 0) */
#define SPI0_BASE_ADDR		0x40020000
#define S0SPCR         (*(volatile unsigned long *)(SPI0_BASE_ADDR + 0x00))
#define S0SPSR         (*(volatile unsigned long *)(SPI0_BASE_ADDR + 0x04))
#define S0SPDR         (*(volatile unsigned long *)(SPI0_BASE_ADDR + 0x08))
#define S0SPCCR        (*(volatile unsigned long *)(SPI0_BASE_ADDR + 0x0C))
#define S0SPINT        (*(volatile unsigned long *)(SPI0_BASE_ADDR + 0x1C))

But in newer headers including LPC17xx.h from Keil or NXP you’ll see

typedef struct
{
  __IO uint32_t SPCR;
  __I  uint32_t SPSR;
  __IO uint32_t SPDR;
  __IO uint32_t SPCCR;
       uint32_t RESERVED0[3];
  __IO uint32_t SPINT;
} LPC_SPI_TypeDef;

#define LPC_SPI               ((LPC_SPI_TypeDef       *) LPC_SPI_BASE      )

So a register access goes from being

S0SPCR=0x123;

to

LPC_SPI->SPCR = 0x123;

Yes its a bit wordier, but in the future all header files delivered will be of this form. The best part is they now are in sync with the documentation, such that the user manual will call it by the same name as that one used in the header file. For a long time this was not always the case, and in fact much of the documentation is now done as XML so that headers are automatically generated from the user manual.

One other thing that has been added in Keil is some sort of meta script in the comments of system_LPCxxxx.c which can be used by their configuration wizard to set up clock and PLL registers. You might be able to leverage off that, and maybe extend it for port initialization.

If CMSIS is to use the code format of your example (using structures) then my application already generates code for all LPC17xx chips this way, is this what you mean?

/************************************************************************************
   Code created using the ARMwizard, visit http://alexan.edaboard.eu 
************************************************************************************/

#include LPC17xx.h>


/******************************************************************************
                  TIMER0 interrupt service function
******************************************************************************/
void TIMER0_IRQHandler(void) {
/* write code here */


/* list of all available flags, select which to use */
LPC_TIM0->IR = 1;   /* Clear MAT0.0 interrupt flag */
LPC_TIM0->IR = 2;   /* Clear MAT0.1 interrupt flag */
LPC_TIM0->IR = 4;   /* Clear MAT0.2 interrupt flag */
LPC_TIM0->IR = 8;   /* Clear MAT0.3 interrupt flag */
LPC_TIM0->IR = 16;  /* Clear CAP0.0 interrupt flag */
LPC_TIM0->IR = 32;  /* Clear CAP0.1 interrupt flag */
}

/******************************************************************************
                  EINT0 interrupt service function
******************************************************************************/
void EINT0_IRQHandler(void) {
/* write code here */


LPC_SC->EXTINT = 1;   /* Clear EINT0 interrupt flag */
}

/******************************************************************************
                  SPI interrupt service function
******************************************************************************/
void SPI_IRQHandler(void) {
/* write code here */


LPC_SPI->SPINT = 1;   /* Clear SPI interrupt flag */
}

int main(void)
{
/*
    P0.0:  PORT0.0 (General purpose I/O)  Output, pull-up resistor enabled
    P0.1:  PORT0.1 (General purpose I/O)  Output, pull-up resistor enabled
    P0.2:  PORT0.2 (General purpose I/O)  Input, repeater mode
    P0.3:  PORT0.3 (General purpose I/O)  Input, repeater mode, open drain
    P0.4:  PORT0.4 (General purpose I/O)  Input, pull-up resistor enabled
    P0.5:  PORT0.5 (General purpose I/O)  Input, pull-up resistor enabled
    P0.6:  PORT0.6 (General purpose I/O)  Input, neither pull-up nor pull-down
    P0.7:  PORT0.7 (General purpose I/O)  Input, neither pull-up nor pull-down
    P0.8:  PORT0.8 (General purpose I/O)  Input, pull-down resistor enabled, open drain
    P0.9:  PORT0.9 (General purpose I/O)  Input, pull-up resistor enabled
    P0.10:  PORT0.10 (General purpose I/O)  Input, pull-up resistor enabled
    P0.11:  PORT0.11 (General purpose I/O)  Input, pull-up resistor enabled
    P0.15:  PORT0.15 (General purpose I/O)  Input, pull-up resistor enabled
    P0.16:  PORT0.16 (General purpose I/O)  Input, pull-up resistor enabled, open drain
    P0.17:  PORT0.17 (General purpose I/O)  Input, pull-up resistor enabled
    P0.18:  PORT0.18 (General purpose I/O)  Input, pull-up resistor enabled
    P0.19:  PORT0.19 (General purpose I/O)  Input, pull-up resistor enabled
    P0.20:  PORT0.20 (General purpose I/O)  Input, pull-up resistor enabled
    P0.21:  PORT0.21 (General purpose I/O)  Input, pull-up resistor enabled
    P0.22:  PORT0.22 (General purpose I/O)  Input, pull-up resistor enabled
    P0.23:  PORT0.23 (General purpose I/O)  Input, pull-up resistor enabled
    P0.24:  PORT0.24 (General purpose I/O)  Input, pull-up resistor enabled
    P0.25:  PORT0.25 (General purpose I/O)  Input, pull-up resistor enabled
    P0.26:  PORT0.26 (General purpose I/O)  Input, pull-up resistor enabled
    P0.27:  PORT0.27 (General purpose I/open-drain O)  Input
    P0.28:  PORT0.28 (General purpose I/open-drain O)  Input
    P0.29:  PORT0.29 (General purpose I/O)  Input
    P0.30:  PORT0.30 (General purpose I/O)  Input
    P1.0:  PORT1.0 (General purpose I/O)  Input, pull-up resistor enabled
    P1.1:  PORT1.1 (General purpose I/O)  Input, pull-up resistor enabled
    P1.4:  PORT1.4 (General purpose I/O)  Input, pull-up resistor enabled
    P1.8:  PORT1.8 (General purpose I/O)  Input, pull-up resistor enabled
    P1.9:  PORT1.9 (General purpose I/O)  Input, pull-up resistor enabled
    P1.10:  PORT1.10 (General purpose I/O)  Input, pull-up resistor enabled
    P1.14:  PORT1.14 (General purpose I/O)  Input, pull-up resistor enabled
    P1.15:  PORT1.15 (General purpose I/O)  Input, pull-up resistor enabled
    P1.16:  PORT1.16 (General purpose I/O)  Input, pull-up resistor enabled
    P1.17:  PORT1.17 (General purpose I/O)  Input, pull-up resistor enabled
    P1.18:  PORT1.18 (General purpose I/O)  Input, pull-up resistor enabled
    P1.19:  PORT1.19 (General purpose I/O)  Input, pull-up resistor enabled
    P1.20:  PORT1.20 (General purpose I/O)  Input, pull-up resistor enabled
    P1.21:  PORT1.21 (General purpose I/O)  Input, pull-up resistor enabled
    P1.22:  PORT1.22 (General purpose I/O)  Input, pull-up resistor enabled
    P1.23:  PORT1.23 (General purpose I/O)  Input, pull-up resistor enabled
    P1.24:  PORT1.24 (General purpose I/O)  Input, pull-up resistor enabled
    P1.25:  PORT1.25 (General purpose I/O)  Input, pull-up resistor enabled
    P1.26:  PORT1.26 (General purpose I/O)  Input, pull-up resistor enabled
    P1.27:  PORT1.27 (General purpose I/O)  Input, pull-up resistor enabled
    P1.28:  PORT1.28 (General purpose I/O)  Input, pull-up resistor enabled
    P1.29:  PORT1.29 (General purpose I/O)  Input, pull-up resistor enabled
    P1.30:  PORT1.30 (General purpose I/O)  Input, pull-up resistor enabled
    P1.31:  PORT1.31 (General purpose I/O)  Input, pull-up resistor enabled
    P2.0:  PORT2.0 (General purpose I/O)  Input, pull-up resistor enabled
    P2.1:  PORT2.1 (General purpose I/O)  Input, pull-up resistor enabled
    P2.2:  PORT2.2 (General purpose I/O)  Input, pull-up resistor enabled
    P2.3:  PORT2.3 (General purpose I/O)  Input, pull-up resistor enabled
    P2.4:  PORT2.4 (General purpose I/O)  Input, pull-up resistor enabled
    P2.5:  PORT2.5 (General purpose I/O)  Input, pull-up resistor enabled
    P2.6:  PORT2.6 (General purpose I/O)  Input, pull-up resistor enabled
    P2.7:  PORT2.7 (General purpose I/O)  Input, pull-up resistor enabled
    P2.8:  PORT2.8 (General purpose I/O)  Input, pull-up resistor enabled
    P2.9:  PORT2.9 (General purpose I/O)  Input, pull-up resistor enabled
    P2.10:  PORT2.10 (General purpose I/O)  Input, pull-up resistor enabled
    P2.11:  PORT2.11 (General purpose I/O)  Input, pull-up resistor enabled
    P2.12:  PORT2.12 (General purpose I/O)  Input, pull-up resistor enabled
    P2.13:  PORT2.13 (General purpose I/O)  Input, pull-up resistor enabled
    P3.25:  PORT3.25 (General purpose I/O)  Input, pull-up resistor enabled
    P3.26:  PORT3.26 (General purpose I/O)  Input, pull-up resistor enabled
    P4.28:  PORT4.28 (General purpose I/O)  Input, pull-up resistor enabled
    P4.29:  PORT4.29 (General purpose I/O)  Input, pull-up resistor enabled
*/

    LPC_PINCON->PINSEL0=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE0=0x0003A050;     /* binary: 00000000_00000011_10100000_01010000 */
    LPC_GPIO0->FIODIR=0x00000003;     /* binary: 00000000_00000000_00000000_00000011 */
    LPC_PINCON->PINMODE_OD0=0x00010108;     /* binary: 00000000_00000001_00000001_00001000 */
    LPC_PINCON->PINSEL1=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE1=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINSEL2=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE2=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_GPIO1->FIODIR=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE_OD1=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINSEL3=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE3=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINSEL4=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE4=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_GPIO2->FIODIR=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE_OD2=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINSEL7=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE7=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_GPIO3->FIODIR=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE_OD3=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINSEL9=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE9=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_GPIO4->FIODIR=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_PINCON->PINMODE_OD4=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */

/******************************************************************************
                           External interrupts
*******************************************************************************
    Ext. interrupt 0 mode: Edge sensitivity / Rising edge
*/
    LPC_SC->EXTMODE=0x01;     /* binary: 00000001 */
    LPC_SC->EXTPOLAR=0x01;     /* binary: 00000001 */
    LPC_SC->EXTINT=0x01;     /* clear the external interrupt flags */

/******************************************************************************
                                       GPIO interrupts
*******************************************************************************
    P0.0 : On falling edge
    P0.1 : On falling edge
    P0.4 : On both edges
    P0.6 : On rising edge
*/
    LPC_GPIOINT->IO0IntEnR=0x00000050;     /* binary: 00000000_00000000_00000000_01010000 */
    LPC_GPIOINT->IO0IntEnF=0x00000013;     /* binary: 00000000_00000000_00000000_00010011 */
    LPC_GPIOINT->IO2IntEnR=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */
    LPC_GPIOINT->IO2IntEnF=0x00000000;     /* binary: 00000000_00000000_00000000_00000000 */

/******************************************************************************
                         Vectored Interrupt initialization
******************************************************************************/

   NVIC_EnableIRQ(TIMER0_IRQn);           /* Enable TIMER0 interrupt */
   NVIC_SetPriority(TIMER0_IRQn,0);          /* Default priority group 0, can be 0(highest) - 31(lowest) */

   NVIC_EnableIRQ(EINT0_IRQn);           /* Enable EINT0 interrupt */
   NVIC_SetPriority(EINT0_IRQn,0);          /* Default priority group 0, can be 0(highest) - 31(lowest) */

   NVIC_EnableIRQ(SPI_IRQn);           /* Enable SPI interrupt */
   NVIC_SetPriority(SPI_IRQn,0);          /* Default priority group 0, can be 0(highest) - 31(lowest) */

/******************************************************************************
                                           ADC0
*******************************************************************************
   ADC operational
   ADC clk: 3 MHz  (calculated with peripheral clock: 15MHz)
   ADC rate: 46,1538 Ksamples/sec
   manual mode, 60 clocks / 12 bit accuracy
   No start (only in manual mode, for burst always on)
   Channel 0 enabled, global DONE flag in ADGDR will generate an interrupt
   Channel 1 disabled, global DONE flag in ADGDR will generate an interrupt
   Channel 2 disabled, global DONE flag in ADGDR will generate an interrupt
   Channel 3 disabled, global DONE flag in ADGDR will generate an interrupt
   Channel 4 disabled, global DONE flag in ADGDR will generate an interrupt
   Channel 5 disabled, global DONE flag in ADGDR will generate an interrupt
   Channel 6 disabled, global DONE flag in ADGDR will generate an interrupt
   Channel 7 disabled, global DONE flag in ADGDR will generate an interrupt
*/

LPC_SC->PCONP |= 0x1000;      /* Enable peripheral clock for ADC (default is disabled) */
LPC_ADC->ADCR=0x00200401;     /* binary: 00000000_00100000_00000100_00000001 */
LPC_ADC->ADINTEN=0x00000100;     /* binary: 00000000_00000000_00000001_00000000 */

/******************************************************************************
                                 Timer0 (32bit)
*******************************************************************************
   Counter Disabled,    Counter Reset=0
   Timer mode: count on rising edge of PCLK
   Counter clk: 2 MHz, Counts every: 500 ns  (calculated with peripheral clock: 30MHz)
   MCR0.0 : generate interrupt on compare match
*/
LPC_TIM0->CTCR=0x00;     /* binary: 00000000 */
LPC_TIM0->TC=0x00000000;     /* decimal 0 */
LPC_TIM0->PR=0x0000000E;     /* decimal 14 */
LPC_TIM0->MCR=0x0001;     /* binary: 00000000_00000001 */
LPC_TIM0->MR0=0x000000C8;     /* decimal 200 */
LPC_TIM0->MR1=0x00000000;     /* decimal 0 */
LPC_TIM0->MR2=0x00000000;     /* decimal 0 */
LPC_TIM0->MR3=0x00000000;     /* decimal 0 */
LPC_TIM0->CCR=0x0000;     /* binary: 00000000_00000000 */
LPC_TIM0->EMR=0x0000;     /* binary: 00000000_00000000 */
LPC_TIM0->TCR=0x00;     /* binary: 00000000 */

   while(1)
  {
  
  
   }

}

Alex

You are already there, I was looking at version of code for the 21xx parts where the old style was in use.

With that being the case, I’ll look harder into adding ARMwizard to our gcc based IDE for LPC21xx, LPC17xx, LPC11xx, LPC12xx and LPC13xx. We have made most of the conversion and also unified many of the common examples published from ARM for the peripherals.

So far I have only included LPC21xx, 23xx, 24xx, 175x/6x and the latest 177x/8x that use the IOCON register.

I haven’t included any LPC11xx, LPC12xx and LPC13xx but I will probaby add the 13xx at some point.

The register names that I use are the ones defined in the NXP datasheet and not the ones used by uvision which in some cases are different, whenever this is the case I use a set of defines so that the datasheet register names are translated to the ones used by uvision

for example in the generated code for LPC23xx I have included

#define I2C0CONCLR I20CONCLR
#define I2C1CONCLR I21CONCLR
#define I2C2CONCLR I22CONCLR
#define INTCLEAR MAC_INTCLEAR
#define USBDevIntClr DEV_INT_CLR
#define USBEpIntClr EP_INT_CLR
#define USBDMARClr DMA_REQ_CLR
#define USBEoTIntClr EOT_INT_CLR
#define USBNDDRIntClr NDD_REQ_INT_CLR
#define USBSysErrIntClr SYS_ERR_INT_CLR
#define OTGIntClr OTG_INT_CLR
#define ILR RTC_ILR
#define IO0DIR IODIR0
#define IO1DIR IODIR1
#define MCIClear MCI_CLEAR
#define DMACIntClear GPDMA_INT_TCCLR
#define DMACIntErrClr GPDMA_INT_ERR_CLR

so in my code I use I2C0CONCLR as defined in the datasheet instead of the I20CONCLR which is defined in the keil header or INTCLEAR instead of MAC_INTCLEAR etc.

Alex

Hi,

Great Idea.

Do you have ARMwizard for STM32 ?

Thanks and best regards.

Unfortunately no, I have only used the NXP chips so the application was designed for them.

Alex

ARMwizard updated to version 2.1 , added SPI/SSP settings

What is new:

• Fixed: There were cases where the CCR1.0 checkboxes were not shown for PWM

• Fixed: The PCLK divider range was 1/1 - 1/8 instead of 1/1 - 1/31 for LPC177x/8x

• Fixed: The PWM power control bits (PCONP) were not set to turn on the peripheral in LPC177x/8x

• Fixed: The ADC1 power control bits (PCONP) were not set to turn on the peripheral in LPC2134/36/38

• Fixed: There was an erron in the name of the included header for LPC2141

• Fixed: In LPC175x/6x the right click on the pull up/down triangle didn’t change the mode correctly (from up<->down)

• Added: All edit box values can now be increased/decreased using the up/down arrow keys (like spin edits)

• Added: For desktops with vertical resolution lower than 660 the ARMwizard form is reduced to 550px and a scrollbar is shown

• Added: SPI/SSP settings for all the included mcu models

• Added: Set the power control bits (PCONP) to enable every used peripheral even if the default setting after reset is on

Visit http://alexan.edaboard.eu

Best regards

Alex

ARMwizard updated to version 2.2

• Fixed: The GPDMA power control bit (PCONP) was not set to turn on the peripheral in LPC23xx/24xx/17xx

• Fixed: The IOCON, GPIO, GPIO interrupts power control bit (PCONP) was not set to turn on the peripheral in LPC17xx

• Fixed: The ADC clocks comment for each conversion in cortex MCU was always 60 instead of 65 or 31 in 17xx (calculation was correct)

• Fixed: The ADC calculate from samples/sec option didn’t give correct results when a bit accuracy lower that 10bit/11clk was selected.

• Fixed: Some Processor Exception interrupt handler names in LPC17xx were not correct (NonMaskableInt, MemoryManagement, SVCall, DebugMonitor).

• Fixed: Changed several register names in LPc177x/8x models to match the names used in the latest CMSIS file (2011-03-03) included in Uvision v4.5

   *******************************************************************
   *  OLD NAME                       *      NEW NAME                 *
   *******************************************************************
   * KFLASH_IRQn                     *  EEPROM_IRQn                  *
   * KFLASH_IRQHandler               *  EEPROM_IRQHandler            *
   * LPC_IOCON->Px_00...Px_09        *  LPC_IOCON->Px_0...Px_9       *
   * LPC_USB->USBDevIntClr           *  LPC_USB->DevIntClr           *
   * LPC_USB->USBEpIntClr            *  LPC_USB->EpIntClr            *
   * LPC_USB->USBDMARClr             *  LPC_USB->DMARClr             *
   * LPC_USB->USBEoTIntClr           *  LPC_USB->EoTIntClr           *
   * LPC_USB->LPC_USB->USBNDDRIntClr *  LPC_USB->NDDRIntClr          *
   * LPC_USB->USBSysErrIntClr        *  LPC_USB->SysErrIntClr        *
   * LPC_USB->OTGIntClr              *  LPC_USB->IntClr              *
   * LPC_EEPROM->INTSTATCLR	       *  LPC_EEPROM->INT_CLR_STATUS   *
   *******************************************************************

• Added: Interrupt description for the interrupt selected in the drop down list (CORTEX mcu).

• Added: The application form can now be resized because there were some problems in W7 with fonts set to 125%

• Added: Replace name functionality, in order to make the generated code compatible with register name changes in the mcu headers

• Changed: All the interrupt clear values have been changed from absolute values to a (1UL<<x) format for easier reading

Visit http://alexan.edaboard.eu

Best regards

Alex

What is new in v2.2.2

• Fixed: The drop down list contents in several peripheral settings were empty so the peripherals couldn’t be set properly (EINT, ADC, Timer, PWM, SPI, SSP).

What is new in v2.2.1

• Fixed: The replace list was saved even when the cancel button was clicked in the “save as” dialog.

• Added: A swap button that can invert the list content, it swaps the old with the new values

• Added: Button to apply the replace operation to an external file

Visit http://alexan.edaboard.eu

Best regards

Alex

ARMwizard has been updated to version 3.0

I’m very excited about this new version, I have added several new models that many of you have been asking.

I have also added the pinout images of the new models for quick reference (showMCU button).

If you are using the LPC11xx or LPC12xx then you have to wait a little longer, they will be added soon.

Please note that according to the NXP user manual the reserved bits 7:6 of IOCON have a reset value of 0 for the I2C pins (P0.4 and P0.5) in LPC1311/13/42/43 (this is also the case in the 11xx manual but not the 1315 or 11Uxx).

Bit7 is responsible for setting the analog/digital mode of the pin even when reserved and this is why the value of bit7 is 1 in every other pin of the mcu so it doesn’t make sense to make an exception and have a value of 0 in a digital I2C pin.

I have asked the NXP support and they replied that the value is 0 as the manual says but I still doubt the answer and I believe it was based on the user manual without further thought.

After a discussion in the LPC2000 forum I have concluded that the values mentioned in the user manual are wrong so note than in the application I set the value of b7:6 to 1.

If you have an LPC1311/13/42/43 and after testing you think that the value I use is wrong please email me.

What is new in v3.0

v3.0.0

• Fixed: In LPC177x/8x bit7 value in the IOCON register of pins P0.7, P0.8, P0,9 should be 1 and not 0
• Added: Group GPIO and EDGE/LEVEL PIN GPIO for LPC13xx, LPC11xx
• Added profiles for LPC11Uxx_(33p)        LPC11U12/14/24/34/35
• Added profiles for LPC11Uxx_(48p_QFP)        LPC11U12/13/14/23/24/34/35/36/37
• Added profiles for LPC11Uxx_(48p_BGA)        LPC11U14/24/35
• Added profiles for LPC11Uxx_(64p)        LPC11U24/35/36/37
• Added profiles for LPC1311/13/42/43         33pin, 48pin
• Added profiles for LPC1315/16/17/45/46/47    33pin, 48pin, 64pin
• Added profiles for LPC1776/78/86/88        144pin, 180pin

Visit http://alexan.edaboard.eu

Best regards

Alex

Have you guys seen this http://www.arm.com/products/processors/ … /index.php

That recommendation came out some time ago as the Cortex line appeared.

Likley several years of overlap in ARM7 TDMI and Cortex product lines.

ARMwizard updated to v3.1.0

• Fixed: The max operating frequency for the ADC peripheral in LPC175x/6x was 14MHz instead of 13MHz [nxp41306 in LPCware.com]
• Fixed: In the interrupt initalization of Cortex M0 the priority setting is now placed before enabling the interrupt.
• Fixed: The Interrupt priority comment was wrong, the priority level for CortexM0 is 0(highest) to 3(lowest).
• Added profiles for LPC11xx_(33p)		LPC11xx33/101, LPC11xx33/201, LPC11xx33/301 (33 pin)
• Added profiles for LPC11xx_(48p)		LPC11xx48/101, LPC11xx48/201, LPC11xx48/301 (48 pin)
• Added profiles for LPC11Lxx_(33p)		LPC11xx33/102, LPC11xx33/202, LPC11xx33/302 (33 pin)
• Added profiles for LPC11Lxx_(48p)		LPC11xx48/102, LPC11xx48/202, LPC11xx48/302 (48 pin)
• Added profiles for LPC11XLxx_(33p)		LPC11xx33/103, LPC11xx33/203, LPC11xx33/303, LPC11xx33/323, LPC11xx33/333 (33 pin)	
• Added profiles for LPC11XLxx_(48p)		LPC11xx48/103, LPC11xx48/203, LPC11xx48/303, LPC11xx48/323, LPC11xx48/333 (48 pin)     	
• Added profiles for LPC11C12_14_(48p)		LPC11C12, LPC11C14 (48 pin)
• Added profiles for LPC11C22_24_(48p)		LPC11C22, LPC11C24 (48 pin)
• Added profiles for LPC11Exx_(33p)		LPC11E11, LPC11E14 (33 pin)
• Added profiles for LPC11Exx_(48p)		LPC11E12, LPC11E13, LPC11E14 (48 pin)
• Added profiles for LPC11Exx_(64p)		LPC11E14 (64 pin)
• Added profile for mbed LPC11U24 board (LPC11U24_MBED) including an image with the board pinout.The Led pins (0.8, 0.9, 0.10, 0.11) are set as output only and the two UART pins (0.18, 0.19) connected internally to the USB uart emulator
are inputs with only the uart alternative function available. I have also removed the OD, HYS, INV and pull up/down modes from these pins.

Visit http://alexan.edaboard.eu

Best regards

Alex

Any chance of getting the 122x chips included?


Rob

Yes I will add it too but it will take a while, it will not be included in the next update but I think in the update after that.

Alex

Thanks.


Rob

ARMwizard has been updated to version 3.2.0

• Added profile for LPC11Axx

• bug fixes

To download or read the list of changes visit http://alexan.edaboard.eu

Alex