// Todo [CRITICAL]: External pull-down resistors 10kOhm
// Outputs
// Outputs
DDRD|=(1<<PORTD4);
DDRD|=(1<<PORTD4);
@ -69,50 +67,59 @@ int main()
/*
/*
*HighVoltageboosting
*HighVoltageboosting
*/
*/
if(boost_highVoltage_nextTick>0&&(uint16_t)TCNT1>=boost_highVoltage_nextTick)// If we are on or after the tick it should be executed
if(boost_highVoltage_nextTick>0)// If there is a nextTick
{
{
// Flip pin state
if((uint16_t)TCNT1>=boost_highVoltage_nextTick&&((uint16_t)TCNT1-boost_highVoltage_nextTick)<(timer1_overflow_value/2))// If we are on or after the tick it should be executed
PORTD^=(1<<PORTD4);
{
// Flip pin state
// Calculate when next high/low should be set
PORTD^=(1<<PORTD4);
boost_highVoltage_nextTick=(uint16_t)TCNT1+F_CPU/timer1_prescaler*1/(boost_frequency/2);// Half of time it should be high/low
if(boost_highVoltage_nextTick==0)boost_highVoltage_nextTick++;// If its 0, it stops, we dont want that
// Calculate when next high/low should be set
boost_highVoltage_nextTick=(uint16_t)TCNT1+F_CPU/timer1_prescaler*1/(boost_frequency/2);// Half of time it should be high/low
if(boost_highVoltage_nextTick==0)boost_highVoltage_nextTick++;// If its 0, it stops, we dont want that
}
}
}
/*
/*
*Signaloutput
*Signaloutput
*/
*/
// Piezo
// Piezo
if(signalOutput_piezo_nextTick>0&&(uint16_t)TCNT1>=signalOutput_piezo_nextTick)// If we are on or after the tick it should be executed
if(signalOutput_piezo_nextTick>0)// If there is a nextTick
{
{
// Flip pin state
if((uint16_t)TCNT1>=signalOutput_piezo_nextTick&&((uint16_t)TCNT1-signalOutput_piezo_nextTick)<(timer1_overflow_value/2))// If we are on or after the tick it should be executed
PORTD^=(1<<PORTD5);
if(!(PIND&(1<<PORTD5)))
{
{
// We are on low (again), disable further execution
// Flip pin state
signalOutput_piezo_nextTick=0;
PORTD^=(1<<PORTD5);
if(!(PIND&(1<<PORTD5)))
{
// We are on low (again), disable further execution
signalOutput_piezo_nextTick=0;
}
// When the signal should next flip
signalOutput_piezo_nextTick=(uint16_t)TCNT1+F_CPU/timer1_prescaler*signalOutput_piezo_time/1000;// Calculate nextTick based on time in ms
if(signalOutput_piezo_nextTick==0)signalOutput_piezo_nextTick++;// If its 0, it stops, we dont want that
}
}
// When the signal should next flip
signalOutput_piezo_nextTick=(uint16_t)TCNT1+F_CPU/timer1_prescaler*signalOutput_piezo_time/1000;// Calculate nextTick based on time in ms
if(signalOutput_piezo_nextTick==0)signalOutput_piezo_nextTick++;// If its 0, it stops, we dont want that
}
}
// LED
// LED
if(signalOutput_led_nextTick>0&&(uint16_t)TCNT1>=signalOutput_led_nextTick)// If we are on or after the tick it should be executed
if(signalOutput_led_nextTick>0)// If there is a nextTick
{
{
// Flip pin state
if((uint16_t)TCNT1>=signalOutput_led_nextTick&&((uint16_t)TCNT1-signalOutput_led_nextTick)<(timer1_overflow_value/2))// If we are on or after the tick it should be executed
PORTD^=(1<<PORTD6);
if(!(PIND&(1<<PORTD6)))
{
{
// We are on low (again), disable further execution
// Flip pin state
signalOutput_led_nextTick=0;
PORTD^=(1<<PORTD6);
}
if(!(PIND&(1<<PORTD6)))
{
// We are on low (again), disable further execution
signalOutput_led_nextTick=0;
}
// When the signal should next flip
// When the signal should next flip
signalOutput_led_nextTick=(uint16_t)TCNT1+F_CPU/timer1_prescaler*signalOutput_led_time/1000;// Calculate nextTick based on time in ms
signalOutput_led_nextTick=(uint16_t)TCNT1+F_CPU/timer1_prescaler*signalOutput_led_time/1000;// Calculate nextTick based on time in ms
if(signalOutput_led_nextTick==0)signalOutput_led_nextTick++;// If its 0, it stops, we dont want that
if(signalOutput_led_nextTick==0)signalOutput_led_nextTick++;// If its 0, it stops, we dont want that