73 LCD.DIRSET = LCD_CS | LCD_WRITE | LCD_DATA | LCD_READ;
74 LCD.PIN3CTRL = PORT_OPC_PULLUP_gc;
75 LCD.PIN2CTRL = PORT_OPC_PULLUP_gc;
76 LCD.PIN1CTRL = PORT_OPC_PULLUP_gc;
77 LCD.PIN0CTRL = PORT_OPC_PULLUP_gc;
109 OSC.XOSCCTRL = OSC_XOSCSEL_32KHz_gc;
112 OSC.DFLLCTRL = ( OSC.DFLLCTRL & ~(OSC_RC32MCREF_gm | OSC_RC2MCREF_bm)) | OSC_RC32MCREF0_bm;
113 DFLLRC32M.CTRL = DFLL_ENABLE_bm;
130 PORTB.DIRCLR = PIN2_bm;
131 PORTB.DIRSET = TAMPER_CURRENT_REVERSAL | TAMPER_EARTH_FAULT | TAMPER_NEUTRAL_CUT;
132 PORTB.PIN2CTRL = PORT_OPC_PULLUP_gc;
133 PORTB.PIN2CTRL = PORT_ISC_FALLING_gc ;
134 PORTB.OUTCLR = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm;
135 PORTB.INT0MASK = PIN2_bm;
136 PORTB.INTCTRL = PORT_INT0LVL_LO_gc;
148 PORTC.DIRCLR = PIN0_bm | PIN1_bm |PIN2_bm |PIN3_bm |PIN4_bm | PIN5_bm;
149 PORTC.PIN0CTRL = PORT_OPC_PULLUP_gc;
150 PORTC.PIN1CTRL = PORT_OPC_PULLUP_gc;
151 PORTC.PIN2CTRL = PORT_OPC_PULLUP_gc;
152 PORTC.PIN2CTRL |= PORT_ISC_FALLING_gc;
153 PORTC.PIN3CTRL = PORT_OPC_PULLUP_gc;
154 PORTC.PIN4CTRL = PORT_OPC_PULLUP_gc;
155 PORTC.PIN4CTRL |= PORT_ISC_RISING_gc;
156 PORTC.PIN5CTRL = PORT_OPC_PULLUP_gc;
157 PORTC.PIN5CTRL |= PORT_ISC_FALLING_gc;
158 PORTC.OUTCLR = PIN2_bm |PIN3_bm |PIN4_bm | PIN5_bm;
159 PORTC.INT0MASK = PIN2_bm |PIN4_bm |PIN5_bm;
160 PORTC.INTCTRL = PORT_INT0LVL_LO_gc;
172 PORTD.DIRSET = PIN0_bm | PIN1_bm | PIN3_bm;
173 PORTD.DIRCLR = PIN2_bm | PIN4_bm | PIN5_bm | PIN6_bm | PIN7_bm;
174 PORTD.PIN0CTRL = PORT_OPC_PULLUP_gc;
175 PORTD.PIN1CTRL = PORT_OPC_WIREDANDPULL_gc;
176 PORTD.PIN2CTRL = PORT_ISC_BOTHEDGES_gc;
177 PORTD.PIN2CTRL |= PORT_OPC_PULLDOWN_gc;
178 PORTD.PIN2CTRL |= PORT_SRLEN_bm;
179 PORTD.PIN3CTRL = PORT_OPC_PULLUP_gc;
180 PORTD.PIN4CTRL = PORT_OPC_WIREDANDPULL_gc;
181 PORTD.PIN5CTRL = PORT_OPC_PULLUP_gc;
182 PORTD.PIN6CTRL = PORT_OPC_PULLUP_gc;
183 PORTD.PIN7CTRL = PORT_OPC_PULLUP_gc;
184 PORTD.INT0MASK = PIN2_bm;
185 PORTD.INTCTRL = PORT_INT0LVL_HI_gc;
186 PORTD.OUTCLR = PIN0_bm | PIN1_bm | PIN3_bm | PIN4_bm;
206 USART.CTRLB |= USART_RXEN_bm;
207 USART.CTRLB |= USART_TXEN_bm;
209 USART.CTRLA = USART_RXCINTLVL0_bm;
220 for(uint8_t j = 0; j < 7; j++)
222 meter.watt_const[j] = eeprom.watt_const[j];
223 meter.shunt_const[j] = eeprom.shunt_const[j];
224 meter.shunt_offset[j] = eeprom.shunt_offset[j];
225 meter.watt_offset[j] = eeprom.watt_offset[j];
226 meter.A1[j] = eeprom.A1[j];
227 meter.B1[j] = eeprom.B1[j];
229 meter.volt_const = eeprom.volt_const;
230 meter.kwh = eeprom.kwh;
239 PR.PRGEN = PR_USB_bm | PR_AES_bm | PR_EBI_bm | PR_EVSYS_bm | PR_DMA_bm;
240 PR.PRPA = PR_DAC_bm | PR_AC_bm;
241 PR.PRPB = PR_DAC_bm | PR_AC_bm | PR_ADC_bm;
242 PR.PRPC = PR_TWI_bm | PR_USART0_bm | PR_SPI_bm | PR_HIRES_bm | PR_TC0_bm;
243 PR.PRPD = PR_TWI_bm | PR_USART0_bm | PR_USART1_bm | PR_SPI_bm | PR_HIRES_bm | PR_TC1_bm;
244 PR.PRPE = PR_TWI_bm | PR_USART0_bm | PR_USART1_bm | PR_SPI_bm | PR_HIRES_bm | PR_TC1_bm;
245 PR.PRPF = PR_TWI_bm | PR_USART0_bm | PR_USART1_bm | PR_SPI_bm | PR_HIRES_bm | PR_TC1_bm;
255 TCC1.PER = F_SAMPLING;
256 TCC1.CTRLA = ( TCC1.CTRLA & ~TC1_CLKSEL_gm ) | TC_CLKSEL_DIV64_gc;
257 TCC1.CTRLB = (TCC1.CTRLB & ~TC1_WGMODE_gm);
258 TCC1.INTCTRLA = (TCC1.INTCTRLA & ~(TC1_OVFINTLVL_gm | TC1_ERRINTLVL_gm))|TC1_OVFINTLVL0_bm;
259 SLEEP.CTRL = (SLEEP.CTRL & ~SLEEP_SMODE_gm)| SLEEP_SMODE_IDLE_gc;
263 TCE0.CTRLA = ( TCE0.CTRLA & ~TC0_CLKSEL_gm ) | TC_CLKSEL_DIV64_gc;
264 TCE0.CTRLB = (TCE0.CTRLB & ~TC0_WGMODE_gm);
282 ADC_Low_Impedance_Mode(&ADCA);
288 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
306 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
321 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
337 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
350 PMIC.CTRL |= (PMIC_LOLVLEX_bm | PMIC_MEDLVLEX_bm |PMIC_RREN_bm);
366 PORTA.DIRCLR = PIN3_bm | PIN7_bm;
367 PORTA.PIN3CTRL = PORT_OPC_PULLUP_gc;
368 PORTA.PIN7CTRL = PORT_OPC_PULLUP_gc;
390 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
403 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
411 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
419 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
427 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
435 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
442 ADC_CH_INPUTMODE_DIFFWGAIN_gc,
458 PORTCFG.MPCMASK = 0xFF;
459 PORTA.PIN0CTRL = PORT_OPC_PULLUP_gc;
462 PORTCFG.MPCMASK = 0x0F;
463 PORTB.PIN0CTRL = PORT_OPC_PULLUP_gc;
466 PORTCFG.MPCMASK = ~PIN2_bm;
467 PORTC.PIN0CTRL = PORT_OPC_PULLUP_gc;
470 PORTCFG.MPCMASK = ~(PIN2_bm | PIN4_bm);
471 PORTD.PIN0CTRL = PORT_OPC_PULLUP_gc;
474 PORTCFG.MPCMASK = 0x0F;
475 PORTE.PIN0CTRL = PORT_OPC_PULLUP_gc;