so, jetzt habe ich ein paar daten zusammen. mit diesem programm aus dem asuro band II habe ich die daten aufgenommen:
Code:
//* -------- Programm zum Loggen der Odometriedaten ----*/

#include "asuro.h"
#include "inka.h"
#include <string.h>
#include<stdio.h>

int main(void) {
unsigned int data[200][2];
char c[12];
int i;

Init();
WaitforStart();

//motoren vorwärts
MotorDir(FWD,FWD);
MotorSpeed(160,160);
//warten bis motoren drehzahl erreicht haben
Msleep (1000);
//odo-werte einlesen
for (i=0; i<200;i++) {
	OdometrieData(data[i]);
}
	//motoren stop
	MotorSpeed(0,0);
	//formatiert ausgabe odo-werte
	for (i=0;i<200;i++){
	sprintf(c,"%4d\t%4d\n\r",data[i][0],data[i][1]);
	SerWrite(c,12);
}
while(1);
return 0;
}
so sehen die daten der 22er scheiben aus:
Code:
  35	  22
  25	  21
  31	  26
  20	  24
  19	  31
  20	  32
  21	  71
  28	 407
  29	 617
  43	 643
 313	 624
 599	 501
 646	 273
 644	  43
 485	  28
 125	  37
  33	  22
  24	  23
  27	  21
  20	  22
  31	  27
  21	  25
  27	  31
  28	  32
  32	  86
 111	 438
 478	 628
 626	 649
 635	 626
 637	 490
 475	 237
 135	  39
  32	  28
  26	  33
  27	  22
  21	  23
  25	  22
  21	  22
  35	  29
  28	  28
  39	  39
 224	 222
 546	 586
 631	 673
 632	 648
 530	 500
 194	 252
  41	  38
  26	  27
  30	  28
  22	  21
  21	  31
  26	  21
  26	  30
  35	  25
  58	  27
 428	  35
 600	  62
 632	 409
 626	 637
 518	 659
 198	 549
  32	 351
  31	  66
  24	  30
  27	  29
  24	  22
  31	  26
  28	  21
  34	  33
 172	  22
 500	  31
 634	  26
 647	  29
 588	  39
 311	 164
  39	 501
  28	 641
  24	 655
  26	 596
  21	 470
  27	 230
  24	  36
  35	  32
  36	  25
 244	  27
 536	  21
 652	  30
 653	  22
 633	  29
 427	  25
  48	  28
  39	  38
  24	 174
  23	 536
  20	 643
  20	 658
  25	 639
  24	 564
  31	 366
  38	  86
 301	  34
 575	  25
 669	  27
 656	  21
 492	  34
  82	  23
  29	  31
  29	  28
  22	  33
  30	 102
  20	 476
  28	 628
  24	 623
  26	 493
  36	 227
 128	  39
 496	  28
 642	  24
 647	  26
 518	  21
 167	  26
  32	  23
  25	  33
  25	  26
  20	  38
  24	  48
  20	 401
  35	 625
  28	 634
  46	 507
 314	 280
 586	  50
 638	  29
 601	  31
 330	  23
  34	  21
  31	  24
  24	  21
  23	  27
  21	  24
  20	  36
  25	  32
  24	  71
  34	 386
  48	 630
 437	 685
 634	 696
 597	 645
 303	 503
  34	 289
  30	  38
  22	  31
  24	  25
  18	  22
  24	  24
  20	  20
  23	  26
  26	  22
  36	  30
 250	  28
 571	  39
 625	  76
 417	 452
  44	 641
  28	 655
  31	 578
  20	 400
  20	 161
  22	  32
  20	  31
  27	  24
  26	  22
  38	  24
 165	  22
 547	  27
 653	  24
 649	  32
 455	  34
  57	 212
  33	 535
  24	 648
  27	 646
  20	 587
  27	 423
  22	 160
  24	  42
  30	  27
  34	  29
 217	  21
 561	  20
 648	  24
 495	  22
 93	  29
  28	  27
  24	  37
  24	  70
  19	 447
  23	 597
das ist der letzter code des versuches mit go und turn. Mit der 3fachen ausführung des turn erreiche ich fast 90°, wie ihr sehen könnt, experimentiere ich weiter
Code:
#include "asuro.h"
#include "inka.h"
int i;

int main (void)

{

Init();
WaitforStart();

EncoderInit ();

for (i = 0; i < 4; i++)
{
StatusLED(YELLOW);
Go(100,150);
StatusLED(GREEN);
Msleep(500);

Turn(75,150);

Turn(75,150);

Turn(75,150);

StatusLED(RED);
Msleep(500);
}
return 0;
}
Kannst du mal von deinem letzten Programm (von hier) mal die Datei *.lss posten.
Darin ist dann das komplette Programm in Assembler zu finden. Ich will mal sehen, was für eine Mathematik (char, int, float) in der Funktion Turn() und auch Go() vom Compiler eingesetzt werden. Hier scheint es ja irgendwie Unterschiede zu geben.
*.lss habe ich leider nicht gefunden, arbeite mit avr-studio: eep, elf, hex, o, o.d, zumindest i projektverzeichnis...

ansonsten, rote zahnräder habe ich genug, wer möchte ein paar? ein problem wird die lichtschranke...