Hi! I have developed code for controlling servo motor which worked fine. Then, I tried to make it as header file and c file separately.
The error is in the part:
The error is: Error#12 Undefined identifier servo1
What is my problem I don't know. I have checked tutorials but no clue. Thank you very much
C:
//this is main.c
#include <config.h>
#include "servo_control.h"
void main()
{
struct Servo servo1;
servo1.servo_attach('D', 0);
while(TRUE)
{
servo1.servo_write(45);
}
}
//this is servo_control.h
#ifndef SERVO_CONTROL_H
#define SERVO_CONTROL_H
struct Servo
{
int servo_pin;
unsigned long CCPR;
unsigned long current_period;
unsigned long total_period;
};
void servo_attach(char, int);
void servo_write(int);
#endif
//this is servo_control.c
#include "servo_control.h"
#INT_CCP1
void compare_CCP1_interrupt()
{
if((current_period > 0) && (current_period < total_period))
{
if(input(servo_pin))
{
output_low(servo_pin);
CCPR = total_period - current_period;
}
else
{
output_high(servo_pin);
CCPR = current_period;
}
}
else
{
if(current_period == total_period) output_high(servo_pin);
if(current_period == 0) output_low(servo_pin);
}
CCP_1_HIGH = CCPR >> 8;
CCP_1_LOW = CCPR;
}
void servo_attach(char servo_port_inp, int servo_pin_inp)
{
if(servo_port_inp == 'B')
{
if(servo_pin_inp == 0) servo_pin = PIN_B0;
else if(servo_pin_inp == 1) servo_pin = PIN_B1;
else if(servo_pin_inp == 2) servo_pin = PIN_B2;
else if(servo_pin_inp == 3) servo_pin = PIN_B3;
else if(servo_pin_inp == 4) servo_pin = PIN_B4;
else if(servo_pin_inp == 5) servo_pin = PIN_B5;
else if(servo_pin_inp == 6) servo_pin = PIN_B6;
else if(servo_pin_inp == 7) servo_pin = PIN_B7;
}
else if(servo_port_inp == 'C')
{
if(servo_pin_inp == 0) servo_pin = PIN_C0;
else if(servo_pin_inp == 1) servo_pin = PIN_C1;
else if(servo_pin_inp == 2) servo_pin = PIN_C2;
else if(servo_pin_inp == 3) servo_pin = PIN_C3;
else if(servo_pin_inp == 4) servo_pin = PIN_C4;
else if(servo_pin_inp == 5) servo_pin = PIN_C5;
else if(servo_pin_inp == 6) servo_pin = PIN_C6;
else if(servo_pin_inp == 7) servo_pin = PIN_C7;
}
else if(servo_port_inp == 'D')
{
if(servo_pin_inp == 0) servo_pin = PIN_D0;
else if(servo_pin_inp == 1) servo_pin = PIN_D1;
else if(servo_pin_inp == 2) servo_pin = PIN_D2;
else if(servo_pin_inp == 3) servo_pin = PIN_D3;
else if(servo_pin_inp == 4) servo_pin = PIN_D4;
else if(servo_pin_inp == 5) servo_pin = PIN_D5;
else if(servo_pin_inp == 6) servo_pin = PIN_D6;
else if(servo_pin_inp == 7) servo_pin = PIN_D7;
}
output_drive(servo_pin);
output_low(servo_pin);
}
void servo_write(int angle)
{
CCPR = 0;
setup_ccp1(CCP_COMPARE_RESET_TIMER);
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 );
set_timer1(0);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
}
C:
struct Servo servo1;
servo1.servo_attach('D', 0);
What is my problem I don't know. I have checked tutorials but no clue. Thank you very much