int main(void) {
	uint8_t rc;
	uint8_t bytes;

	cli();
	set_cpu_8mhz();

	init_trace();

	onewire0_init();
	sei();

	while (1) {
		toggle_b();

		rc = onewire0_reset();

		set_c();
		onewire0_readrom(&device_id);
		toggle_c();

		// Issue skip rom command
		onewire0_skiprom();
		toggle_c();

		// Start a temperature conversion
		onewire0_convert();
		toggle_c();

		// Setup a delay
		onewire0_convertdelay();
		toggle_c();


		// Wait until it is finished
		while (! onewire0_isidle()) { }
		toggle_c();

		onewire0_reset();
		toggle_c();

		onewire0_skiprom();
		toggle_c();

		onewire0_readscratchpad();
		toggle_c();

		for (bytes = 0; bytes < 9; ++bytes) {
			onewire0_readbyte();
		}
		toggle_c();

		while (! onewire0_isidle()) { }
		toggle_c();

	}
}
Exemple #2
0
OrbitProto *LineOrbit::serialize() {
    auto ret = new OrbitProto();
    ret->set_max_value(max_value);
    auto lop = new LineOrbitProto();
    lop->set_a(a);
    lop->set_b(b);
    lop->set_c(c);
    ret->set_allocated_lineorbit(lop);
    return ret;
}
Exemple #3
0
double rk_main(double alpha,double epsilon,double h_init){
  double x=0,y=1,y4,y5,h=h_init;
  double a[6][6],b5[6],b4[6],c[6];
  set_a(a);
  set_b4(b4);
  set_b5(b5);
  set_c(c);
  printf("#\t%s\t%s\t%s\t%s\n","x","y","h","dy/dx");
  while(x<10.0){
    rk_step(x,y,h,a,b4,c,&y4);
    rk_step(x,y,h,a,b5,c,&y5);
    if(y4-y5<epsilon){
      printf("\t%f\t%f\t%e\t%f\n",x,y,h,f(x));
      x+=h;
      y=y5;
      h=alpha*h*pow(epsilon/fabs(y4-y5),0.2);
    }else{
      h=h/2;
    }
  }
  return y;
}