
Department of Computer Science and Electronics
36
// warm up the ADC, discard the first conversion
PORTB|=(1<<EN_TRANSISTOR);
ADCSRA |= (1 << ADSC);
do{}
while (ADCSRA & (1 << ADSC));
PORTB&=~(1<<EN_TRANSISTOR);
//Disable transmision
PORTB&=~(1<<ENABLE);
}
void calibrar(void)
{
unsigned int h,leer_c[8],xprima[8],cont_field[8]={0,0,0,
0,0,0,0,0},sum_field[8]={0,0,0,0,0,0,0,0},average_field[8];
unsigned int cont_line[8]={0,0,0,0,0,0,0,0},sum_line[8]={
0,0,0,
0,0,0,0,0},average_line[8];
unsigned int max[8]={0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000},min[8]={0x03FF,0x03FF,0x03FF,0x03FF,0x03FF
,0x03FF,0x03FF,0x03FF};
for(h=0;h<=1000;h++)
{
wdt_reset ();
for(i=0;i<=7;i++)
{
leer_c[i]=read_data(i);
if(leer_c[i]>max[i])
{
max[i]=leer_c[i];
}
if(leer_c[i]<min[i])
{
min[i]=leer_c[i];
}
xprima[i]=((max[i]+min[i])>>1);
}
_delay_ms(50);
}
for(h=0;h<=1000;h++)
{
wdt_reset ();
for(i=0;i<=7;i++)
{
leer_c[i]=read_data(i);
if(leer_c[i]>=xprima[i])
{
cont_line[i]=cont_line[i]+1;
sum_line[i]=sum_line[i]+leer_c[i];
average_line[i]=sum_line[i]/cont_line[i];
}
else
{
cont_field[i]=cont_field[i]+1;
sum_field[i]=sum_field[i]+leer_c[i];
average_field[i]=sum_field[i]/cont_field[i];
}
result_c[i]=((average_line[i]+average_field[i])>>1);
}
_delay_ms(50);
}
}
void result_calibration_eeprom(void)
{
for(i=0;i<=7;i++)
{
wdt_reset ();
Kommentare zu diesen Handbüchern