EHaskins
03-01-2008, 21:37
I've been trying to write the drive code for my current prototype drive, but I'm having issues.
This is the setup:
Hardware:
BaneBots gearbox connected to pwm01
Banebots encoder kit and encoder divider board installed on the gearbox.
Divider direction connected to rc_dig_in07
Divider speed connected to rc_dig_in03
Software:
Kevin's new code
In "interrupts.h"
#define ENABLE_INT_3_6 un-commented
In "teleop.c"
"Initialize_Int_3_6();" added to Initialization() where comments indicate.
void Teleop(void)
{
static int i, j;
i ++;
j ++;
if (i > 20)
{
printf("Encoder 1 Direction = %d\r\n", (int)ENCODER_ONE_DIRECTION);
printf("Encoder 1 = %d\r\n\r\n", (int)Encoder_One_Count());
i = 0;
}
//Run motor to demomstrate proper functioning
if (j < 100)
{
Motor(1, 50);//in drive.c
}
else if (j < 150)
{
Motor(1, 0);
}
else if (j < 250)
{
Motor(1, -50);
}
else if (j < 300)
{
Motor(1, 0);
}
else
{
j = 0;
}
//Update_OI_LEDs(); // located in ifi_code.c
}
In "interrupts.c"
Call to "Encoder_One_Tick()"(in Drive.c) added in Int_3_Handler
EDIT: I attached the drive.c/.h files
The Direction displays correctly, but the count is always 0.
I'm sure I forgot something really simple, but I can't figure it out.
I'll send the complete project to anyone who wants to look at it.
This is the setup:
Hardware:
BaneBots gearbox connected to pwm01
Banebots encoder kit and encoder divider board installed on the gearbox.
Divider direction connected to rc_dig_in07
Divider speed connected to rc_dig_in03
Software:
Kevin's new code
In "interrupts.h"
#define ENABLE_INT_3_6 un-commented
In "teleop.c"
"Initialize_Int_3_6();" added to Initialization() where comments indicate.
void Teleop(void)
{
static int i, j;
i ++;
j ++;
if (i > 20)
{
printf("Encoder 1 Direction = %d\r\n", (int)ENCODER_ONE_DIRECTION);
printf("Encoder 1 = %d\r\n\r\n", (int)Encoder_One_Count());
i = 0;
}
//Run motor to demomstrate proper functioning
if (j < 100)
{
Motor(1, 50);//in drive.c
}
else if (j < 150)
{
Motor(1, 0);
}
else if (j < 250)
{
Motor(1, -50);
}
else if (j < 300)
{
Motor(1, 0);
}
else
{
j = 0;
}
//Update_OI_LEDs(); // located in ifi_code.c
}
In "interrupts.c"
Call to "Encoder_One_Tick()"(in Drive.c) added in Int_3_Handler
EDIT: I attached the drive.c/.h files
The Direction displays correctly, but the count is always 0.
I'm sure I forgot something really simple, but I can't figure it out.
I'll send the complete project to anyone who wants to look at it.