Hallo Raid,
da schlummert wohl noch ein Bug in der Asuro Lib. RN-User Thowil hatte mich schon vor einiger Zeit darauf aufmerksam gemacht. Leider konnte ich den Bugfix bisher weder testen noch einspielen. Deshalb weis ich auch niocht, ob dein Problem damit gelöst ist.Der Fix bezieht sich noch auf die V2.70rc2 oder älter (ohne Benutzung der my_asuro.h).
Hier der geänderte Code zum Selbertesten (ohne Gewähr):
Code:
SIGNAL (SIG_ADC)
{
static unsigned char tmp [2], flag [2], toggle = FALSE;
if (autoencode)
{
// Übernehme nur Werte, die von den Odometriesensoren stammen...
if ( (ADMUX & 0x0F) == WHEEL_LEFT || (ADMUX & 0x0F) == WHEEL_RIGHT ){
tmp [toggle] = ADCH;
if ((tmp [toggle] < 140) && (flag[toggle] == TRUE))
{
encoder [toggle] ++;
flag [toggle] = FALSE;
}
if ((tmp [toggle] > 160) && (flag [toggle] == FALSE))
{
encoder [toggle] ++;
flag [toggle] = TRUE;
}
} else {
//War ein anderer Channel eingestellt, dann reinitialisiere den Wandler (zusammen mit Zeile #)
ADCSRA &= ~(1<<ADEN);
}
if (toggle)
ADMUX = (1 << ADLAR) | (1 << REFS0) | WHEEL_RIGHT;
else
ADMUX = (1 << ADLAR) | (1 << REFS0) | WHEEL_LEFT;
ADCSRA |= (1<<ADEN)|(1<<ADSC); // #
toggle ^= 1;
}
}
Lesezeichen