/** * @file main.c * @author Jake G * @date 15 June 2024 * @brief File contains the main function. * * This file contains the main logic loop and exists to setup the values * specific to the micro-controller. All other functions and configuration are * extracted into separate source files and headers for configuration. */ //#define F_CPU 2000000UL #define F_CPU 3333333UL //These defines are mostly useful for when you want you editors LSP server to //function correctly. //#ifndef __AVR_ATtiny404__ //#define __AVR_ATtiny404__ //#endif //This can prevent issues with util/delay.h library with the gcc toolchain #define __DELAY_BACKWARD_COMPATIBLE__ #include "config.h" #include "RegEdit.h" #include "zero_cross_detection.h" #include "ADC.h" #include "TriacOut.h" #include "load.h" #include /* Required header file */ #include #include //Set the function pointer for the delay func void (*Delay_MicroSeconds)(double us) = _delay_us; //void (*Delay_MicroSeconds)(double us) = _delay_ms; static void CLK_DisablePrescaler(void) { //CCP = CCP_IOREG_gc; /* Write the needed signature to CCP*/ ccp_write_io((void *) & (CLKCTRL.MCLKCTRLA), 0x00); //select internal 20MHz clock. ccp_write_io((void *) & (CLKCTRL.MCLKCTRLB), 0x00); //Disable the pre-scaler. } int main(int argc, char **argv) { //CLK_DisablePrescaler(); while(true){ for(int i = 0; i < GatePulsesQty; i++){ ZCD_Poll(); _delay_us(Tau); TriacOut_SetupPins(); TriacOut_SetAllHigh(); TriacOut_PulsePins(GatePulses[i]); } //The G1-G3 pins are low at this point. _delay_ms(2500); ZCD_Poll(); TriacOut_SetupPins(); TriacOut_SetAllHigh(); Load_HandleLoadPortA(ADC_LOAD1, 1); Load_HandleLoadPortB(ADC_LOAD2, 3); Load_HandleLoadPortB(ADC_LOAD3, 2); while(true){ ; //Do nothing until new Power cycle/reset occurs } } }