ソーラプログラム うごかね

#include
#include"kernel_id.h"

#include "dream.h"
#include"dream_def.h"

#include"dream_main.h"

#include "tinet_id.h"
#include
#include


void
wait(long Loop)
{
while(Loop--);
}

int/*駆動*/
driv(int drv_time)
{
int d;
for(d=2;d<256;d=d+2){
DADR0 = d;
DADR1 = d/2;
wait(20000);
}
/*駆動時dly*/
dly_tsk(drv_time);
for(d=254;d>0;d=d-2){
DADR0 = d;
DADR1 = d/2;
wait(20000);
if(d == 2)PBDR = 0x01;
}
return(drv_time);
}

int/*AD変換*/
adconverte(int adval,int a)
{
int i;
unsigned int d;
volatile int w;

ADCSR = 0x1d;
for(i=1;i<=5;i++){
w = ADCSR;
ADCSR = 0x3d;
while(!(ADCSR & 0x9d));
if( a == 0 ){
d = ADDRA >> 6;
}else if( a == 1){
d = ADDRB >> 6;
}

ADCSR = 0x0c;
if( adval < d) adval = d;
syslog( LOG_NOTICE,"%d",d);
}
syslog( LOG_NOTICE,"%d",adval);
return(adval);
}

void
solar_task(VP_INT exinf )
{
/*ループ用*/
int i,j;
/*格納用*/
int ii,adval,ad_maxval,ad_Kmaxval,drv_time,s_format;
/*カウント用*/
int i_flg,a;
int Eflag=0;
UB data,data1;
adval = 0;
ad_Kmaxval = 0;
s_format = 0;
ii = 0; i_flg = 0;
drv_time = 2000;

DACR = 0x40;

while(1){
slp_tsk();

/*ソーラー開*/
/*
data=P6DR&0x02;
while*1{
Eflag=1;
P4DR=0x00;
}else if*2{
P4DR = 0x40;
}else if*3{
P4DR = 0x20;
}else if*4{
P4DR = 0x60;
}
P4DR=0x00;
dly_tsk(100);
}
Eflag=0;
*/
for(i=1;i<=50;i++){
ii++;
adval = adconverte(adval,a = 0);
if( ad_Kmaxval < adval ){
ad_Kmaxval = adval;
ii = 0;
}else{
i_flg++;
}
if( i_flg == 0 || i_flg == 1 || i_flg == 2 ){
DACR = 0x40;
P4DR = 0x0f;
driv(drv_time);
}else if( i_flg == 3 ){
if( P4DR == 0x0f ){
P4DR = 0x05;
ii++;
}else if( P4DR == 0x05 ){
P4DR = 0x0f;
i = 100;
}
driv(drv_time * ii);
ii = 0;
i_flg++;
}else if( i_flg == 4 || i_flg == 5 || i_flg == 6 ){
P4DR = 0x05;
driv(drv_time);
}else{
i_flg = 2;
}

syslog(LOG_NOTICE,"測定数:%d",i);
syslog(LOG_NOTICE,"最高電圧 = %d",ad_maxval);
}
ad_maxval = ad_Kmaxval;
ii = 0;

/*ステッピング+照度*/
for(i=1;i<=7;i++){
for(j=1;j<=400;j++){
INCRE11 = 0x0c;
wait(750);
INCRE11 = 0x08;
wait(750);
}
adval = adconverte(adval,a = 1);
if( ad_maxval < adval ){
ad_maxval = adval;
ii = 7 - i;
s_format = i;
}

syslog(LOG_NOTICE,"測定数:%d",i);
syslog(LOG_NOTICE,"最高電圧 = %d",ad_maxval);
}
dly_tsk(1000);
for(j=1;j<=400*ii;j++){
INCRE11 = 0x0a;
wait(750);
INCRE11 = 0x08;
wait(750);
}
ad_maxval = 0;
ii = 0;

/*充電用電圧切替え
while( P6DR = 0x01 );
INCRE11 = 0x01;
while( P6DR = 0x02 );
INCRE11 = 0x02;
while( P6DR = 0x04 );
INCRE11 = 0x04;
*/

for(j=1;j<=400*s_format;j++){
INCRE11 = 0x0a;
wait(750);
INCRE11 = 0x08;
wait(750);
}
break;
}
}

*1:data==0x00)!=1){ INCRE10=0x80; dly_tsk(100); INCRE10=0x00; data=P6DR&0x02; } */ //そーらー傾き for(j=1;j<=400;j++){ INCRE11 = 0x0c; wait(750); INCRE11 = 0x08; wait(750); } INCRE11 = 0x00; /*駆動用+照度*/ /*旋回*/ /* while(Eflag==0){ data1=INCRE00&0x0f; if((data1==0x00

*2:data1==0x01) || (data1==0x08) || (data1==0x09

*3:data1==0x02) || (data1==0x04) || (data1==0x06

*4:data1==0x03) || (data1==0x05) || (data1==0x07)|| (data1>=0x0a