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(); } }
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; }
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; }