head	1.4;
access;
symbols
	bg2_23:1.4
	bg2_22:1.4
	bg2_21:1.4
	bg2_20:1.4
	bg2_16:1.4
	bg2_15:1.4
	bg2_12:1.4
	bg2_07:1.4
	isorc2008_submission:1.3
	handbook_alpha_edition:1.3
	jtres2007_submission:1.3;
locks; strict;
comment	@# @;


1.4
date	2008.02.25.14.05.24;	author martin;	state Exp;
branches;
next	1.3;
commitid	701c47c2cb224567;

1.3
date	2007.06.05.15.36.36;	author alexander.dejaco;	state Exp;
branches;
next	1.2;
commitid	40fb466582584567;

1.2
date	2007.06.05.10.15.00;	author alexander.dejaco;	state dead;
branches;
next	1.1;
commitid	289d4665379e4567;

1.1
date	2007.05.21.19.51.55;	author martin;	state Exp;
branches;
next	;
commitid	7c1a4651f8584567;


desc
@@


1.4
log
@JOP goes GPL
@
text
@/*
  This file is part of JOP, the Java Optimized Processor
    see <http://www.jopdesign.com/>

  Copyright (C) 2007, Peter Hilber and Alexander Dejaco

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package lego;

import lego.lib.*;

import java.io.*;

import joprt.RtThread;

/*
 * Typical deviations @@ full speed
 * 450 450 450 452 450 553 ~450
 * 300 440 360 405 339 290 160-467
 * 
 * Deviations | Avg @@ 0 speed
 * 3500			
 * 3500
 * 
 * Deviations | Avg @@ full speed
 * 4500
 * 3600-4250
 * 
 * Longer buffer:
 * 
 * Deviations | Avg @@ 1 speed (bug w/ 0)
 * 0			-16
 * 4801			
 * 
 * Deviations | Avg @@ full speed
 * 0			-6 
 * 0			-6
 */
public class BackEMFAvgDeviation
{

	/**
	 * @@param args
	 */
	public static void main(String[] args) throws IOException
	{
		while (true)
		{
			System.out.println("Starting...");

			Motor m0 = new Motor(0);
			m0.setMotorPercentage(Motor.STATE_FORWARD, true, 1);

			RtThread.busyWait(10000 * 1000);

			final int VALUE_COUNT = 1000;
			int[][] values = new int[VALUE_COUNT][2];

			for (int i = 0; i < VALUE_COUNT; i++)
			{			
				RtThread.busyWait(10000);
				values[i] = m0.readNormalizedBackEMF();
			}

			int avg[] = new int[] {0,0};
			for (int i = 0; i < VALUE_COUNT; i++)
				for (int j = 0; j < 2; j++)
					avg[j] += values[i][j];

			for (int j = 0; j < 2; j++)
				avg[j] /= VALUE_COUNT;

			int dev[] = new int[] {0,0};		
			for (int i = 0; i < VALUE_COUNT; i++) 
				for (int j = 0; j < 2; j++)
					dev[j] += Math.abs(values[i][j] - avg[j]);

			for (int j = 0; j < 2; j++)
				System.out.println("Sum of deviations: " + dev[j] + " Avg: " + avg[j]);		

			m0.setState(Motor.STATE_OFF);
		}
	}
}
@


1.3
log
@Adding the Lego Java Programs
@
text
@d1 20
@


1.2
log
@cleaning up the java programs of the lego project
@
text
@@


1.1
log
@LEGO roboter first release
@
text
@@

