diff --git a/firmware/adc/hello_adc.c b/firmware/adc/hello_adc.c index 9823332e6f9135a73dad02b444822ddb35ff3ced..d14ed6d70c3f2f428591e5bd66ea9510a46d21a5 100644 --- a/firmware/adc/hello_adc.c +++ b/firmware/adc/hello_adc.c @@ -122,18 +122,17 @@ int main(void) { USART_Rx_Enable(USART_data.usart); USART_Tx_Enable(USART_data.usart); - // // setup pwm - // TCC0.PER = 0x0400; //set up 4096 resolution - // TCC0.CTRLB |= TC_WGMODE_SS_gc;//( TCC0.CTRLB & ~TC0_WGMODE_gm ) | TC_WGMODE_SS_gc; //single slope - // TCC0.CTRLB |= TC0_CCDEN_bm; //& ( TC0_CCAEN_bm | TC0_CCBEN_bm | TC0_CCCEN_bm | TC0_CCDEN_bm ); //enable compare channel - // TCC0.CTRLA |= TC_CLKSEL_DIV2_gc; //set clock divider - // set_pwm(900); - - // // setup AWEX - // AWEXC.CTRL |= AWEX_DTICCDEN_bm; // enable on D channel (PC6 and PC7) and get CC from A - // AWEXC.STATUS &= ~AWEX_FDF_bm; // clear fault detection flag - // AWEXC.OUTOVEN |= chPin | dchPin; // enable output overide on charge and discharge pins - // AWEXC.DTBOTH = 32; // set deadtime (measured in clock cyles) + // setup pwm + TCC0.PER = 0x0400; //set up 1024 resolution + TCC0.CTRLB |= TC_WGMODE_SS_gc;//( TCC0.CTRLB & ~TC0_WGMODE_gm ) | TC_WGMODE_SS_gc; //single slope + TCC0.CTRLA |= TC_CLKSEL_DIV256_gc; //TC_CLKSEL_DIV64_gc; //set clock divider + set_pwm(900); + + // setup AWEX + AWEXC.CTRL |= AWEX_DTICCDEN_bm | AWEX_DTICCCEN_bm;; // enable DTI override on C and D channel (PC6 and PC7) + AWEXC.STATUS &= ~AWEX_FDF_bm; // clear fault detection flag + AWEXC.OUTOVEN |= chPin | dchPin; // enable output overide on charge and discharge pins + AWEXC.DTBOTH = 32; // set deadtime (measured in clock cyles) // setup ADC @@ -145,7 +144,7 @@ int main(void) { ADC_Reference_Config(&ADCA, ADC_REFSEL_INTVCC_gc); //_delay_ms(200); // ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV32_gc); - ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV1_gc); //speed test + ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV16_gc); //speed test // ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH0, // ADC_CH_INPUTMODE_DIFFWGAINL_gc, // ADC_CH_GAIN_16X_gc); @@ -167,7 +166,7 @@ int main(void) { sei(); while (1) { - if (RTC.CNT - last_tx_rtc > 10){ + if (RTC.CNT - last_tx_rtc > 2){ ADC_Ch_Conversion_Start(&ADCA.CH0); while(!ADC_Ch_Conversion_Complete(&ADCA.CH0)){}; ADC_result = ADC_ResultCh_GetWord_Signed(&ADCA.CH0,offset); diff --git a/firmware/pulseGen/pulseGen_AWEX.c b/firmware/pulseGen/pulseGen_AWEX.c index 37f9c4c6befc5da9be38165f2ee5ae6bfe8e4316..e52186d9c574f340f21823b0d5995cf07fd71bd2 100644 --- a/firmware/pulseGen/pulseGen_AWEX.c +++ b/firmware/pulseGen/pulseGen_AWEX.c @@ -65,6 +65,7 @@ void writeToBuffer(char *buff, char *fmt, ...) { void set_pwm(uint16_t duty){ TCC0.CCDBUF = duty; //set compare value + TCC0.CCCBUF = duty; //set compare value do {} while(TCC0.INTFLAGS && TC0_OVFIF_bm == 0 ); //wait TCC0.INTFLAGS = TC0_OVFIF_bm; } @@ -96,7 +97,7 @@ int main(void) { cli(); //setup real time counter - CLK.RTCCTRL = CLK_RTCSRC_RCOSC_gc|CLK_RTCEN_bm; + CLK.RTCCTRL = CLK_RTCSRC_RCOSC_gc | CLK_RTCEN_bm; RTC.CTRL |= RTC_PRESCALER_DIV1_gc; // configure pins @@ -107,7 +108,7 @@ int main(void) { chargePort.DIRSET = chPin | dchPin; // charge and discharge // chargePort.PIN6CTRL |= PORT_OPC_PULLDOWN_gc; //turn on pull-down resistors (when in input mode) // chargePort.PIN7CTRL |= PORT_OPC_PULLDOWN_gc; //turn on pull-down resistors (when in input mode) - // chargePort.REMAP |= PORT_TC0D_bm | PORT_TC0C_bm;//0b00001100; // remap OCOC and OCOD to our charge and discharge pins + chargePort.REMAP = PORT_TC0D_bm | PORT_TC0C_bm;//0b00001100; // remap OCOC and OCOD to our charge and discharge pins // setup USART USART_InterruptDriver_Initialize(&USART_data, &USARTC0, USART_DREINTLVL_LO_gc); @@ -123,12 +124,11 @@ int main(void) { // setup pwm TCC0.PER = 0x0400; //set up 1024 resolution TCC0.CTRLB |= TC_WGMODE_SS_gc;//( TCC0.CTRLB & ~TC0_WGMODE_gm ) | TC_WGMODE_SS_gc; //single slope - TCC0.CTRLB |= TC0_CCDEN_bm; //& ( TC0_CCAEN_bm | TC0_CCBEN_bm | TC0_CCCEN_bm | TC0_CCDEN_bm ); //enable compare channel TCC0.CTRLA |= TC_CLKSEL_DIV64_gc; //set clock divider set_pwm(900); // setup AWEX - AWEXC.CTRL |= AWEX_DTICCDEN_bm; // enable on D channel (PC6 and PC7) + AWEXC.CTRL |= AWEX_DTICCDEN_bm | AWEX_DTICCCEN_bm;; // enable DTI override on C and D channel (PC6 and PC7) AWEXC.STATUS &= ~AWEX_FDF_bm; // clear fault detection flag AWEXC.OUTOVEN |= chPin | dchPin; // enable output overide on charge and discharge pins AWEXC.DTBOTH = 32; // set deadtime (measured in clock cyles) @@ -159,7 +159,13 @@ int main(void) { // _delay_ms(5); // chargePort.OUTCLR = dchPin; // _delay_ms(1); - // if (RTC.CNT - last_tx_rtc > 25){ + if (RTC.CNT - last_tx_rtc > 25){ + last_tx_rtc = RTC.CNT; + writeToBuffer(&output_buffer[0],"count=%d\n", counter++); + send_packet(output_buffer,maxBufferSize); + ledPort.OUTTGL = ledPin; + } + // chargePort.OUTSET = chPin; // chargePort.OUTCLR = dchPin; // ledPort.OUTSET = ledPin;