void analog_clock_init(void) { PIN_CONFIGURE(SR74LS164_CLK, PIN_DIR_OUT); PIN_CONFIGURE(SR74LS164_AB, PIN_DIR_OUT); PIN_CLR(SR74LS164_CLK); PIN_CLR(SR74LS164_AB); analog_clock_clr(); }
/*---------------------------------------------------------------------------*/ ISR(UNMI, unmi_interrupt) /* user non-maskable interrupts */ { ENERGEST_ON(ENERGEST_TYPE_CPU); PIN_SET(LED_ERROR); /* use PIN_SET instead of LED_ON */ switch (SYSUNIV) { case SYSUNIV_NMIIFG: /* non-maskable interrupt */ while(1); break; case SYSUNIV_OFIFG: /* oscillator fault */ WAIT_FOR_OSC(); /* try to clear the fault flag */ break; case SYSUNIV_ACCVIFG: /* Flash Memory Access Violation */ /* will be accidentially triggered after flash programming when using * a voltage between 2.4 and 2.6V (errata SYS12) */ while(1); break; case SYSUNIV_SYSBERRIV: while(1); break; default: while(1); break; } PIN_CLR(LED_ERROR); ENERGEST_OFF(ENERGEST_TYPE_CPU); }
void Stepper::setSpeed(int16_t _speed){ speed += constrain((_speed-speed), -(int16_t)maxAccel, (int16_t)maxAccel); if(speed == 0) period = 0; else period = MAX_SPEED/abs(speed); (speed>0) ? PIN_CLR(dirPin) : PIN_SET(dirPin); }
void Stepper::computeStep(){ counter++; if(counter > period){ counter = 0; if(period > 0){ PIN_SET(stepPin); delayMicroseconds(1); PIN_CLR(stepPin); } } }
static void analog_clock_gen_ticks(uint8_t ticks) { while(ticks--) { PIN_SET(SR74LS164_CLK); analog_clock_delay(); PIN_CLR(SR74LS164_CLK); analog_clock_delay(); } }
static void lcdWriteData(uint8_t x) { if(x & (1<<0)) PIN_SET(LCD_D0); else PIN_CLR(LCD_D0); if(x & (1<<1)) PIN_SET(LCD_D1); else PIN_CLR(LCD_D1); if(x & (1<<2)) PIN_SET(LCD_D2); else PIN_CLR(LCD_D2); if(x & (1<<3)) PIN_SET(LCD_D3); else PIN_CLR(LCD_D3); if(x & (1<<4)) PIN_SET(LCD_D4); else PIN_CLR(LCD_D4); if(x & (1<<5)) PIN_SET(LCD_D5); else PIN_CLR(LCD_D5); if(x & (1<<6)) PIN_SET(LCD_D6); else PIN_CLR(LCD_D6); if(x & (1<<7)) PIN_SET(LCD_D7); else PIN_CLR(LCD_D7); }
void analog_clock_set(uint8_t val) { uint8_t ticks = 0; if(val > analog_clock_val) { ticks = analog_clock_get_ticks(val) - analog_clock_get_ticks(analog_clock_val); } else { analog_clock_clr(); ticks = analog_clock_get_ticks(val); } PIN_CLR(SR74LS164_AB); analog_clock_gen_ticks(ticks); analog_clock_val = val; }