多足机器人,是我大二暑假和大三开始玩的东西,刚好大四暑假留校又接触了MSP430,就想着把原来写的的代码也放到这里
控制多组舵机驱动机器人动作,用MSP430F5438A当主控器,PCA9685当驱动输出PWM方波的发生器,那下子驱动方式弄的我脑壳疼的哟,想想也是好笑。、
emmmm….PCA9685的手册好像没有中文,那下子也是看的脑袋大,好像这里有以前写的驱动原理,写完的就忘更新了….暑假就拿来看怎么驱动了。只记得个大概,IIC通讯协议方式通讯,先发送驱动器的物理地址确认是这个驱动器,得到应答后再开始发送数据,数据用数值形式发送到每个PWM方波输出口,一共可发送16路PWM方波。附上驱动代码。
IIC协议头文件
#ifndef _IIC_H_
#define _IIC_H_
#include "msp430.h"
typedef unsigned int uint;
typedef unsigned char uchar;
//引脚
#define IIC_SDA_PIN (BIT0)
#define IIC_SCL_PIN (BIT1)
//位宏
#define READ_SDA() P2IN&BIT0
#define IIC_SDA_LO P2OUT&=~BIT1
#define IIC_SDA_HI P2OUT|=BIT1
#define IIC_SCL_LO P2OUT&=~BIT3
#define IIC_SCL_HI P2OUT|=BIT3
//SDA设置为输出输入
#define SDA_OUT() P2DIR|=BIT1
#define SDA_IN() P2DIR&=~BIT1
//SCL设置为输出输入
#define SCL_OUT() P2DIR|=BIT3
#define SCL_IN() P2DIR&=~BIT3
//本构件所实现的函数列表
void IIC_Init(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_NAck(void);
void IIC_Ack(void);
void IIC_SendByte(uint dat);
uchar IIC_ReadByte(uchar ack);
uchar I2C_ReadByte(uchar DiviceID ,uchar address);
void I2C_WriteByte(uchar ,uchar address,uchar );
void I2C_ReadNByte(uchar