[PIC®/AVR®/dsPIC®产品] PIC16F13145—CLB实现SG90舵机驱动波形

[复制链接]
3590|14
 楼主| JackTang1994 发表于 2024-12-1 19:40 | 显示全部楼层 |阅读模式
本帖最后由 JackTang1994 于 2024-12-1 19:42 编辑

#每日话题# #技术资源#
我们可以利用PIC16F13145—CLB模块产生特定的波形,比如:SG90舵机的20ms周期的脉冲波形。

CLB-SG90舵机波形生成Verilog代码
  1. module SG90_Driver(CLK,in2,in1,in0,out_pin);
  2.   input CLK;
  3.   input in2,in1,in0;
  4.   output reg out_pin;
  5.   reg[5:0] counter;
  6.   
  7.   initial //初始化相关引脚及变量
  8.     begin
  9.       counter <= 1; // 从1开始计数脉冲数
  10.       out_pin <= 0; // 初始化状态输出引脚为低电平
  11.     end
  12.    //循环执行的代码块
  13.   always @(posedge CLK)
  14.     begin
  15.       if(counter == 39) // 39个0.5ms脉冲即20ms
  16.         begin
  17.           counter <= 1; // 重新从1开始计数
  18.           out_pin <= 0;
  19.         end
  20.         // 小于或者达到设定的脉冲数量
  21.         else if(counter <= {in2,in1,in0})
  22.         begin
  23.           out_pin <= 1;
  24.           counter <= counter + 1;
  25.         end
  26.       else // 20ms剩余的时间
  27.         begin
  28.           out_pin <= 0;
  29.           counter <= counter + 1;
  30.         end
  31.     end
  32. endmodule

逻辑分析仪抓取到的CLB产生的波形


详细的操作过程,请查看原文链接:https://mp.weixin.qq.com/s/SLNTV5P1x3ZTfDVZkgnQ8g?token=1567580201&lang=zh_CN


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
lcczg 发表于 2024-12-2 14:11 | 显示全部楼层
厉害,学习了。   
guijial511 发表于 2024-12-2 19:04 来自手机 | 显示全部楼层
PIC单片机现在用的人还多吗?
gejigeji521 发表于 2024-12-29 14:25 来自手机 | 显示全部楼层
这使用的什么原理啊,是什么个思路?

评论

MCU中的可编程逻辑模块CLB(类似小型的FPGA),用verilog编写硬件逻辑实现此波形  发表于 2025-3-17 15:14
纠结的那些年 发表于 2025-3-24 19:07 | 显示全部楼层
counter <= 1; 这样初始化计数器可能会导致第一次不产生 0.5ms 的脉冲,您可以考虑初始化为 counter <= 0;,这样从 0 开始计数会更符合预期。
4c1l 发表于 2025-3-25 12:54 | 显示全部楼层
如果您的输入值需要动态控制脉冲宽度,可以采用一个更灵活的计数逻辑,使其能够适应更广泛的脉冲宽度控制。
g36xcv 发表于 2025-3-27 16:43 | 显示全部楼层
你提供的Verilog代码用于使用PIC16F13145的CLB模块生成适用于SG90舵机的20ms周期脉冲波形。
而服务器人 发表于 2025-3-31 15:52 | 显示全部楼层
这段 Verilog 代码能够通过 CLB 模块生成 20ms 周期的脉冲信号,控制 SG90 舵机的角度。输入信号 in2, in1, in0 用于设置脉冲宽度,从而调整舵机的旋转角度。
kepe 发表于 2025-4-24 15:45 | 显示全部楼层
可以利用PIC16F13145—CLB模块产生特定的波形
绒兔星球 发表于 2025-8-29 12:51 | 显示全部楼层
PIC16F13145 的 CLB 可配置为 PWM 发生器,生成 SG90 所需的 20ms 周期、1-2ms 脉宽波形。需配置 CLB 为定时器模式,设置周期寄存器为 20ms 基准,比较寄存器控制脉宽,通过更新比较值实现角度控制,注意时钟分频与输出引脚映射。
花开了相爱吧 发表于 2025-9-19 14:36 | 显示全部楼层
PIC16F13145 的 CLB 可配置生成 SG90 舵机驱动波形。通过配置 CLB 为 PWM 模式,设置 20ms 周期(50Hz),占空比 0.5ms-2.5ms 对应 0°-180°。利用 CLB 的定时器和比较器模块,无需 CPU 干预,实现稳定的 PWM 输出,降低主控制器负担,适合低功耗场景。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

64

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部