Professional Documents
Culture Documents
Servo C
Servo C
#include
#include
#include
#include
#include
#include
#include
#include
#include
<stdint.h>
<stdbool.h>
<stdio.h>
"inc/hw_types.h"
"inc/hw_memmap.h"
"driverlib/sysctl.h"
"driverlib/gpio.h"
"driverlib/interrupt.h"
"utils/uartstdio.h"
#include
#include
#include
#include
"ES_Configure.h"
"ES_Framework.h"
"ES_Port.h"
"termio.h"
#include "inc/hw_gpio.h"
#include "inc/hw_sysctl.h"
#include "ShiftRegister.h"
#include "Servo.h"
#include "PWM10Tiva.h"
#define BASE_POSITION 550
#define ANGLE_MULT 2200
static uint8_t LastServo;
static void ServoPosition(uint8_t position);
static void ServoSelect(uint8_t servo);
// ServoInit: initialize hardware and timers for servo functions
// Takes: nothing
// Returns: nothing
void ServoInit(void) {
uint16_t reqPeriod=25000;
uint8_t group=2;
// initialize the last servo selected to 0
LastServo=0;
// initialize servo freq
PWM_TIVA_SetPeriod(reqPeriod, group);
// initialize shift register
SR_Init();
}
// ServoWrite: writes a desired position to the desired servos
// Takes:
uint8_t servo: 8 bit number with each bit referring to a servo, ON
is 1 and OFF is 0
//
uint8_t position: desired servo angular position from 0 to 180
degrees
// Returns: nothing
void ServoWrite(uint8_t servo, uint8_t position) {
// if the selected servos have changed
if (servo!=LastServo) {
// deselect all servos
ServoSelect((uint8_t)0);
// write desired position
ServoPosition(position);
// select desired servos
ServoSelect(servo);
}
// else
else {