Ich habe nach einiger Suche einen Unterschied in der "asuro.h" gefunden. In der alten Version befand sich der Befehl "#include <avr/signal.h>". Dieser include Befehl fehlte in der "asuro.h" Ver 2.61.

Mutig und experimentierfreudig hatte ich die Zeile in die Ver 2.61 asuro.h eingefuegt und voila - die Compiler Fehlercodes sind weg.

Erstes Problem gelöst!!!

Naechstes Problem gefunden:

Ein Test der Go() Funktion zeigt ein Problem mit dem Encoder counter. Der Encoder counter läuft nicht los. Ich kann keine Funktion finden, die den counter anstösst!!!

Anbei in der Code section ein Auszug aus der Original-Asuro.c Lib Ver 2.61 mit der Go() Function und drei Debug SerWrite Statements plus der Auszug aus dem Programm, dass die Go() Function aufruft.

Der Output im Hyperterminal zeigt immer nur den Wert 0 für encoder[LEFT] und encoder[RIGHT].

Hat jemand Rat?
Code:
/***************************************************************************
*	void Go(int distance, int speed = 150)                                                                         
*	
*   input
*	distance: postiv->go forward ; negativ-> go backward
*   speed: sets motorspeed
*
*	last modification:
* 	Ver.     Date         Author           Comments
* 	-------  ----------   --------------   ---------------------------------
* 	sto1     29.07.2005   stochri	       motorfunction
*	And1	 31.07.2005   Andun            added speed and Odometrie
* 	-------  ----------   --------------   ---------------------------------
*
***************************************************************************/
void Go(int distance, int speed)
{
	int enc_count = 0;
	int tot_count = 0;
	int diff = 0;
	int l_speed = speed, r_speed = speed;
	enc_count=abs(distance);
	
//	enc_count=distance*10000;
//	enc_count/=12823;
	
	Encoder_Set(0,0);		// reset encoder

	MotorSpeed(l_speed,r_speed);
	if(distance<0) MotorDir(RWD,RWD);
	else MotorDir(FWD,FWD);

	while(tot_count<enc_count) {
		tot_count += encoder[LEFT];
		diff = encoder[LEFT] - encoder[RIGHT];
		SerWrite("\n\rEncoder Left | Right - ",25);     //---> added Debug Statement
		PrintInt(encoder[LEFT]);			//---> added Debug Statement
		SerWrite(" | ",3);				//---> added Debug Statement
		PrintInt(encoder[RIGHT]);			//---> added Debug Statement
		if (diff > 0) { //Left faster than right
			if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
			else r_speed += 10;
		}
		if (diff < 0) { //Right faster than left
			if ((r_speed > speed) || (l_speed > 244)) r_speed -= 10;
			else l_speed += 10;
		}
	Encoder_Set(0,0);		// reset encoder
	MotorSpeed(l_speed,r_speed);
	Msleep(1);
	}
	MotorDir(BREAK,BREAK);
	Msleep(100);
}

**************************************************************************************
*                  Programm Auszug
**************************************************************************************
#include "c:/azuro/ASURO_src/Edge/asuro.h" 
#include "stdlib.h"
#include "string.h"

int main(void)
{
	int data[2], array[5], i, j, speed, avg, pointer;
	
	Init();

	StatusLED(GREEN);
	FrontLED(ON);
	BackLED(OFF,OFF);
	avg=0;
	pointer=0;
	speed=120;
	for (i=0;i<5;i++){
		Go(20,speed);
		LineData(data);
		avg=avg+data[0]+data[1];
		array[pointer]=data[0]+data[1];
		pointer++;
		Msleep(900);
		Go(-20,speed);
		Msleep(900);
	}