Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
Archivo: clock.c Proyecto: ETHZ-TEC/LWB
/*---------------------------------------------------------------------------*/
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);
		}
	}
}
Ejemplo n.º 5
0
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();
	}
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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;
}