This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

driving a stepper motor

Hi guys,

I wrote a function that generates a set of constants to be used in assigning a delay value for each pulse for driving a stepper motor. My code just stop at the first iteration of the code, please have a look below and tell me what you think the cause is. I am thinking it is because of the complexity of the math operation, am I right? Thank you all in advance.

#include"constants.h"
#include<math.h>

const unsigned long C0_constant;

unsigned long calc();

void stepper_loop()
{ unsigned long constants_array[1772]; unsigned long Cn_vals; unsigned int j;

unsigned long *Px; // decalre the pointer first Px= constants_array; //make the pointer points to the address of first element in the array

for(j=0; j<1772; j++) {

Cn_vals=calc();

constants_array[j]=Cn_vals; Px++; // increment the pointer to point to the next element in the array }
}

unsigned long calc()
{ static unsigned long K_val; static unsigned int step; unsigned long Delta_T; unsigned long value_sqrd; unsigned long C0_constant;

if(step==0) { value_sqrd=2*Alpha/angular_accel;

C0_constant=sqrt(value_sqrd/period); // program stop at this line. K_val=C0_constant; }

step=step+1;

K_val=K_val-(2*K_val/(4*step+1)); Delta_T=K_val; return(Delta_T);
}

#include<math.h>

#ifndef constants_H
#define constants_H

#define PI 3.14159
//#define PI 3
#define Alpha 0.000625*PI
//#define Alpha 5*PI
#define period 0.00000004
//#define period 4
#define angular_accel 8.6955

#endif

0