找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2397|回复: 1
打印 上一主题 下一主题
收起左侧

stm32f103驱动pca9685 舵机不动 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:593646 发表于 2019-8-19 14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么我的这个程序无法让舵机动起来,请大佬指教
#include "./EEPROM/EEPROMH.H"
#include "./I2C/I2CH.H"
#include <stdio.h>
#include <math.h>

void delayms(u32 z)
{
  u32 x,y;
  for(x=z;x>0;x--)
      for(y=148;y>0;y--);
}

void PCA9685_write(u8 address,u8 date)
{
   I2C_START();            
   I2C_WRITE_BYTE(PCA9685_adrr);        //PCA9685的片选地址
   I2C_ACK();                          
   I2C_WRITE_BYTE(address);  //写地址控制字节
   I2C_ACK();
   I2C_WRITE_BYTE(date);          //写数据
   I2C_ACK();
   I2C_STOP();
}

u8 PCA9685_read(u8 address)
{
    u8 date;
    I2C_START();
    I2C_WRITE_BYTE(PCA9685_adrr); //PCA9685的片选地址
    I2C_ACK();
    I2C_WRITE_BYTE(address);
    I2C_ACK();
    I2C_START();
    I2C_WRITE_BYTE(PCA9685_adrr|0x01);   //地址的第八位控制数据流方向,就是写或读
    I2C_ACK();
    date=I2C_READ_BYTE();
    I2C_STOP();
    return date;
}

void reset(void)
{
   PCA9685_write(PCA9685_MODE1,0x0);
}


void begin(void)
{
  reset();
}

void setPWMFreq(float freq)
{
   u16 prescale,oldmode,newmode;
   float prescaleval;
   freq *= 0.92;  
   prescaleval = 25000000;
   prescaleval /= 4096;
   prescaleval /= freq;
   prescaleval -= 1;
   prescale = floor(prescaleval + 0.5f);

   oldmode = PCA9685_read(PCA9685_MODE1);
   newmode = (oldmode&0x7F) | 0x10;
   PCA9685_write(PCA9685_MODE1, newmode);
   PCA9685_write(PCA9685_PRESCALE, prescale);
   PCA9685_write(PCA9685_MODE1, oldmode);
   delayms(2);            
   PCA9685_write(PCA9685_MODE1, oldmode | 0xa1);
}


void setPWM(u16 num, u16 on, u16 off)
{
  PCA9685_write(LED0_ON_L+4*num,on);
  PCA9685_write(LED0_ON_H+4*num,on>>8);
  PCA9685_write(LED0_OFF_L+4*num,off);
  PCA9685_write(LED0_OFF_H+4*num,off>>8);
}


int main(void)
{
    begin();
    setPWMFreq(50);  

   while(1)
    {
      setPWM(12, 0, SERVO000);//第12路舵机转到0角度
      delayms(1500);
    }   
}        

舵机.7z

176.29 KB, 下载次数: 12

这是我的工程

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:593646 发表于 2019-11-14 10:11 | 只看该作者
大哥解决了吗?我也碰到了同样的问题,有时程序烧进去可以动有时又不能动
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表