Hallo habe ein Roboter mit dem ATmega8535 gebaut und möchte nun DC Motoren anteuern. Habe schon ein fertiges Programm mit den dazu gehörigen Unterprogrammen. Eins davon ist dies
Code:
/*
	Titel:		Schrittmotor-Routinen für AATiS-Roboter
	Autor:		Gunther May, DL3ABQ
	Datum:		7/2002
	Prozessor:	AT90S8535/ATMega8535
	Lizenz:		GNU Public License (gpl.txt)
*/

#include <io.h>
#include "stepper.h"

/*
** Schrittmuster in Abhängigkeit vom Motortyp festlegen
*/

#ifdef BIPOLAR

	#define STEPPARTS 4

	const
		unsigned char step_pat[4][STEPPARTS] =	{{255-(5+5*16), 255-(9+6*16), 255-(10+10*16), 255-(6+9*16)},
												{255-(6+9*16), 255-(10+10*16), 255-(9+6*16), 255-(5+5*16)},
												{255-(5+5*16), 255-(6+6*16), 255-(10+10*16), 255-(9+9*16)},
												{255-(5+5*16), 255-(9+9*16), 255-(10+10*16), 255-(6+6*16)}};
#endif

#ifdef UNIPOLAR

	#define STEPPARTS 8

	const
		unsigned char step_pat[4][STEPPARTS] =	{{255-(1+(1+8)*16), 255-(1+2+8*16), 255-(2+(4+8)*16), 255-(2+4+4*16),
												255-(4+(2+4)*16), 255-(4+8+2*16), 255-(8+(1+2)*16), 255-(8+1+1*16)},
												{255-(1+8+1*16), 255-(8+(1+2)*16), 255-(4+8+2*16), 255-(4+(2+4)*16),
												255-(2+4+4*16), 255-(2+(4+8)*16), 255-(1+2+8*16), 255-(1+(8+1)*16)},
												{255-(1+8+(1+8)*16), 255-(8+8*16), 255-(4+8+(4+8)*16), 255-(4+4*16),
												255-(2+4+(2+4)*16), 255-(2+2*16), 255-(1+2+(1+2)*16), 255-(1+1*16)},
												{255-(1+1*16), 255-(1+2+(1+2)*16), 255-(2+2*16), 255-(2+4+(2+4)*16),
												255-(4+4*16), 255-(4+8+(4+8)*16), 255-(8+8*16), 255-(8+1+(8+1)*16)}};
#endif

/*
** Funktions-Deklarationen
*/

volatile unsigned char dummy;  //für Delay-Funktion

void stepdelay(unsigned char del)
{
  unsigned char i,k,l;

	dummy=17;
	for(i=0; i<del; i++) {
		for(k=0; k<2; k++) {
			for(l=0; l<255; l++) {
				dummy++;      
			}
		}
	}
}

void stepper_on()
{
	outp(0xFF, STEPPER_DDR);       /* all port bits as output */
	outp(0x11, STEPPER_PORT);
}/*stepper_on*/

void stepper_off()
{
	outp(0xFF, STEPPER_DDR);       /* all port bits as output */
	outp(0xFF, STEPPER_PORT);
}/*stepper_off*/


void stepper_go(unsigned char dir, unsigned short steps, unsigned char del)
{
	unsigned short i;
	unsigned char k;

	outp(0xFF, STEPPER_DDR);       /* all port bits as output */
	for(i=0; i<steps; i++) {
		for(k=0; k<STEPPARTS; k++) {
			outp(step_pat[dir][k], STEPPER_PORT);
			stepdelay(del);
		}
	}
}/*stepper_go*/
Wenn ich hier in der 5 letzten Zeile das [k] durch ein [i] ersetze dann läuft der Roboter schon mal gerade aus und springt nicht von einer Drehung zur anderen. So nun muss er sich nur noch drehen können.

Habe mal den Link wo alle Programme zusammen sind. Das Programm das ich benötige wäre Demo2.
Hier der Link http://dl3abq.jufu.org/dl.html

kann sich das bitte jamand mal anschauen. Muss das unbedingt hin bekommen.



Lame