AnsweredAssumed Answered

ADE7880 HW reset error ?

Question asked by hyangwon on Apr 7, 2017
Latest reply on Apr 24, 2017 by nchandra

Hi,

 

My ADE7880 cannot read a voltage value. The value is always 0 when a voltage is applied or not.

(In normal products, I confirmed that I read some value when a voltage is applied.)

 

And, value of the CHECKSUM Register is different from the default value.

(In normal products, value of the CHECKSUM Register is same as the default value.)

 

The same problem occurs when I turn the product off and then on again.

 

So I did some tests and found a strange thing.

 

Originally, if the ADE7880 is in PSM0 mode and the RESET pin is toggled from high to low, IRQ1 interrupt pin is set low.

 

But, when RESET pin of my ADE7880 is toggled from high to low, IRQ0 as well as IRQ1 interrupt pin is set low.

 

My ADE7880's voltage is this :

 

AVDD : 3.47V

REF : 1.3V

PM0 : 3.47V

PM1 : 0V

VDD : 3.47V

DVDD : 2.55V

 

Why does this happen?..  Please, help me.

 

It is my source code.

  /* ADE7880 SPI initalize (GPIO, SPI and so on) */

  Spi_init();

 

 /* Reset pin toggle */

  GPIO_ResetBits(GPIOD, GPIO_Pin_6);
  Dly100us_pp(10);
  GPIO_SetBits(GPIOD, GPIO_Pin_6);
  Dly100us_pp(10);
  printf("Hardware Reset\r\n");
  printf("STATUS1 = 0x%x\r\n",ReadFromADE7880Register(STATUS1));
  Dly100us_pp(10);

 

 /* Select SPI mode (HSE/SS pin is toggled 3 times)*/

  Write_ADE7880_REG_8B(0xEBFF, 0); 
  Write_ADE7880_REG_8B(0xEBFF, 0);
  Write_ADE7880_REG_8B(0xEBFF, 0);

  printf("SPI MODE SELECTED\r\n");

 

  Dly100us_pp(10);
  Write_ADE7880_REG_8B(RUN, 1);

 

  while (1)
  {
    printf("IRQ0 = 0x%x\r\n",GPIO_ReadInputDataBit(IRQ0port, IRQ0pin));

    printf("IRQ1 = 0x%x\r\n",GPIO_ReadInputDataBit(IRQ1port, IRQ1pin));
    printf("AVRMS = 0x%x\r\n",ReadFromADE7880Register(AVRMS));
    Dly100us_pp(10000);
  }

Outcomes