Rikka0w0

个性签名:DCDC DCAC ACDC
STM32 STM8 51
C C# Java
Minecraft Mod开发

  • 2018-04-17
  • 回复了主题帖: CH554的电压比较器能不能产生中断

    已经从最新的例子里面看到辣w 感谢~ 看了例程发现ADC的中断应该是不停进入的,然后在里面Poll比较器结果改变的flag(CMP_IF),这样会大量的CPU时间浪费在中断上,并不是>真<比较器中断喵 嘛 作为一款主打USB的单片机CH55x还是非常成功哒~

  • 回复了主题帖: 发现CH554单片机在GPIO下降沿中断下的一个严重问题

    窝错惹QAQ 咱不会编辑帖子肿么破QAQ 还是超时之后就不能修改惹

  • 2018-04-15
  • 回复了主题帖: 今天去招聘会了,发现要51的人很少了

    现在STM32F030 042 051价格已经很便宜了,GD32系列更是,有模拟比较器 USB DMA DAC等51单片机普遍缺乏的功能 更大的RAM ROM可以让设计更放松,同时也允许上RTOS进行更复杂的任务,所以窝感觉以后8位机的使用空间会被大大压缩 话又说回来了,精通51的上手Arm m0还是要点时间,毕竟新的概念还是挺多的,不过掌握之后就是如鱼得水23333333333333333333333333

  • 回复了主题帖: 年轻的童靴们:来见识一下:二战军用万用表拆解

    这太情怀了

  • 回复了主题帖: STM32F042 HID键盘兼容性问题

    建议用wireshark进行抓包看看是什么情况 stm32上 是USB包的Set_Address处理的地方加一个点LED的操作 看看有没有到这一步 如果有说明可能是后面程序的问题,没有就说明主机没收到前半段的设备描述符,就比较纠结了

  • 2018-04-14
  • 回复了主题帖: 【新版CH554评测】使用开源编译器SDCC开发CH554

    https://github.com/rikka0w0/CH55x_USB_CDC 窝这个USB_CDC的例子里面有一套Blinkinlabs的sdcc头文件 窝自己加了ch554_platform.h,可以让代码做到SDCC和Keil C51都能编译 注意SDCC和USB包是小端而Keil和SCSI包是大端 ch554_conf.c和ch554_conf.h是初始化和配置时钟之类的,代替了官方库

  • 回复了主题帖: 【新版CH554】- ADC+PWM +Touch+HID ---Part 1

    1. 不需要.A51文件 2. 可以去pdf看一下时钟连接 没记错应该是cpu速度默认4分配 改一个寄存器可以做到全速24MHz工作

  • 回复了主题帖: 【CH554新评估板】开箱照,清晰大图

    https://github.com/rikka0w0/CH55x_USB_CDC 窝这个USB_CDC的例子里面有一套Blinkinlabs的sdcc头文件 窝自己加了ch554_platform.h,可以让代码做到SDCC和Keil C51都能编译 注意SDCC和USB包是小端而Keil和SCSI包是大端 ch554_conf.c和ch554_conf.h是初始化和配置时钟之类的,代替了官方库

  • 回复了主题帖: 【新版CH554评测】使用开源编译器SDCC开发CH554

    这个里面 https://github.com/Blinkinlabs/ch554_sdcc 是SDCC的头文件,已经处理好了 注意xdata idata _at_ sbit sfr等关键字用法不一样 我这里有ch554_platform.h,包含一些宏,可以做到SDCC和Keil C51编译器都兼容 https://github.com/rikka0w0/CH55x_USB_CDC 使用的时候每个文件都引用ch554_platform.h就好了,ch554_conf.c是初始化单片机用的代码 可以修改 上面链接是个USB_CDC的例子

  • 发表了主题帖: CH554的电压比较器能不能产生中断

    CH554的电压比较器能不能产生中断呢?在PDF里似乎没有明确的描述。CMP0是比较器的输出, CMP_IF这一位能在输出结果改变的时候置1。实验代码如下: void main() {         EA = 0;                 P1_DIR_PU &=~ 0x30;        // P1.4, P1.5 to open-drain                 ADC_CFG |= bCMP_EN | bADC_EN | bADC_CLK;        // Enable Comparator         ADC_CHAN1 = 1;        // P1.5 AIN2  +        (0V or 5V)         ADC_CHAN0 = 0;         CMP_CHAN = 0;                // P1.4 AIN1        - (0.55V)         CMP_IF = 0;         IP_EX |= bIP_ADC;         IE_ADC = 1;                 EA = 1; while(1); } void ADCInterruptEntry(void) interrupt INT_NO_ADC {         CMP_IF=0;         qaq=0; }复制代码 P1.4外部接一个RC分压分得0.55V,P1.5外接一个10k电阻到地,外接一个按钮到Vcc(5V)。当按下按钮时P1.5电压大于P1.4,CMPO和CMP_IF都被置1了,这个验证过,但是并没有触发中断。是硬件根本不支持比较器产生中断还是有其他原因呢? 还有一个问题,CH554的比较器参数如何,比如速度失调电压之类的x

  • 2018-04-13
  • 回复了主题帖: 发现CH554单片机在GPIO下降沿中断下的一个严重问题

    本帖最后由 Rikka0w0 于 2018-4-13 21:32 编辑 根据楼上的说法 在中断刚开始的地方加入         GPIO_IE &= ~bIE_IO_EDGE;复制代码 后问题解决,但是有个疑问就是,数据手册原文是 bIE_IO_EDGE 该位为1 选择边沿中断模式,GPIO引脚输入有效边沿时产生 中断标志bIO_INT_ACT 并请求中断,该中断标志无法软件清 零,只能在复位时或电平中断模式下或进入相应的中断服务 程序时被自动清零复制代码 注意是 或!进入相应的中断服务程序时被自动清零 现在更新下我的理解 1. GPIO_IE = bIE_IO_EDGE | bIE_P1_5_LO; IE_GPIO = 1;配置P1.5中断为下降沿模式 2. 当P1.5跳变为低电平时触发中断 3. 在中断里GPIO_IE &= ~bIE_IO_EDGE;将中断改为低电平模式,此时如果IO脚是低电平则bIO_INT_ACT=1,高电平会让bIO_INT_ACT变成0,相当于硬件自动清零了 4. 然后在中断里程序IE_GPIO=0;关闭GPIO下降沿检测 5. 下次需要捕获下降沿的时候再用1的方法开启下降沿捕获

  • 2018-04-12
  • 发表了主题帖: 发现CH554单片机在GPIO下降沿中断下的一个严重问题

    最近在做一个应用需要用到CH554E的GPIO中断,我把GPIO中断配置成了P1.5的下降沿触发,然后进入中断做一些事,结果发现进了中断出不来了!根据CH554的PDF的第20页底部对GPIO中断使能寄存器(GPIO_IE)的描述和第23页底部对PIN_FUN的bIO_INT_ACT的描述,bIO_INT_ACT本应该在进入GPIO中断服务程序时会自动清零。然而实际情况是bIO_INT_ACT保持1。为了显示问题我专门写了一个简单的程序,排除其他东西的影响: #include "ch554.h" sbit qaq = P1^6; void main() {         EA = 0;                 GPIO_IE = bIE_IO_EDGE | bIE_P1_5_LO;        // Enable GPIO interrupt on P1.5, falling edge         IE_GPIO = 1;        // Enable GPIO interrupt                 EA = 1; } void GPIOInterruptEntry(void) interrupt INT_NO_GPIO {         qaq = ~qaq; }复制代码 程序期待效果是每一次P1.5下降沿进入中断之后把P1.6给取反,P1.5低电平时啥都不做。 烧入程序效果是,上电之后P1.5 P1.6持续高输出,这个是正确的。然后导线短路P1.5到地然后松开,P1.5恢复高电平。此时测量P1.6会发现P1.6上有个高频振荡,几百KHz。 大伙儿有木有遇到过这个问题呢2333333还是我的使用姿势不对x 此内容由EEWORLD论坛网友Rikka0w0原创,如需转载或用于商业用途需征得作者同意并注明出处 补充内容 (2018-4-17 15:19): 注: 不是单片姬的问题是楼主使用姿势的问题233333

    1. 【讨论】 CH554的电压比较器能不能产生中断 2/373 【51单片机】 2018-04-14
    2. 【讨论】 发现CH554单片机在GPIO下降沿中断下的一个严重问题 6/541 【51单片机】 2018-04-12
    3. 【原创】 适用于CH55x系列的USB复合设备演示 0/606 【微控制器 MCU】 2018-01-09
    1. CH554的电压比较器能不能产生中断 2/373 【51单片机】 2018-04-17
      已经从最新的例子里面看到辣w 感谢~ 看了例程发现ADC的中断应该是不停进入的,然后在里面Poll比较器结果改变的flag(CMP_IF),这样会大量的CPU时间浪费在中断上,并不是>真<比较器中断喵 嘛 作为一款主打USB的单片机CH55x还是非常成功哒~
    2. 窝错惹QAQ 咱不会编辑帖子肿么破QAQ 还是超时之后就不能修改惹
    3. 今天去招聘会了,发现要51的人很少了 129/63750 【51单片机】 2018-04-15
      现在STM32F030 042 051价格已经很便宜了,GD32系列更是,有模拟比较器 USB DMA DAC等51单片机普遍缺乏的功能 更大的RAM ROM可以让设计更放松,同时也允许上RTOS进行更复杂的任务,所以窝感觉以后8位机的使用空间会被大大压缩 话又说回来了,精通51的上手Arm m0还是要点时间,毕竟新的概念还是挺多的,不过掌握之后就是如鱼得水23333333333333333333333333
    4. 年轻的童靴们:来见识一下:二战军用万用表拆解 16/3002 【模拟与混合信号】 2018-04-15
      这太情怀了
    5. STM32F042 HID键盘兼容性问题 2/448 【stm32/stm8】 2018-04-15
      建议用wireshark进行抓包看看是什么情况 stm32上 是USB包的Set_Address处理的地方加一个点LED的操作 看看有没有到这一步 如果有说明可能是后面程序的问题,没有就说明主机没收到前半段的设备描述符,就比较纠结了
    6. https://github.com/rikka0w0/CH55x_USB_CDC 窝这个USB_CDC的例子里面有一套Blinkinlabs的sdcc头文件 窝自己加了ch554_platform.h,可以让代码做到SDCC和Keil C51都能编译 注意SDCC和USB包是小端而Keil和SCSI包是大端 ch554_conf.c和ch554_conf.h是初始化和配置时钟之类的,代替了官方库
    7. 1. 不需要.A51文件 2. 可以去pdf看一下时钟连接 没记错应该是cpu速度默认4分配 改一个寄存器可以做到全速24MHz工作
    8. https://github.com/rikka0w0/CH55x_USB_CDC 窝这个USB_CDC的例子里面有一套Blinkinlabs的sdcc头文件 窝自己加了ch554_platform.h,可以让代码做到SDCC和Keil C51都能编译 注意SDCC和USB包是小端而Keil和SCSI包是大端 ch554_conf.c和ch554_conf.h是初始化和配置时钟之类的,代替了官方库
    9. 这个里面 https://github.com/Blinkinlabs/ch554_sdcc 是SDCC的头文件,已经处理好了 注意xdata idata _at_ sbit sfr等关键字用法不一样 我这里有ch554_platform.h,包含一些宏,可以做到SDCC和Keil C51编译器都兼容 https://github.com/rikka0w0/CH55x_USB_CDC 使用的时候每个文件都引用ch554_platform.h就好了,ch554_conf.c是初始化单片机用的代码 可以修改 上面链接是个USB_CDC的例子
    10. 本帖最后由 Rikka0w0 于 2018-4-13 21:32 编辑 根据楼上的说法 在中断刚开始的地方加入         GPIO_IE &= ~bIE_IO_EDGE;复制代码 后问题解决,但是有个疑问就是,数据手册原文是 bIE_IO_EDGE 该位为1 选择边沿中断模式,GPIO引脚输入有效边沿时产生 中断标志bIO_INT_ACT 并请求中断,该中断标志无法软件清 零,只能在复位时或电平中断模式下或进入相应的中断服务 程序时被自动清零复制代码 注意是 或!进入相应的中断服务程序时被自动清零 现在更新下我的理解 1. GPIO_IE = bIE_IO_EDGE | bIE_P1_5_LO; IE_GPIO = 1;配置P1.5中断为下降沿模式 2. 当P1.5跳变为低电平时触发中断 3. 在中断里GPIO_IE &= ~bIE_IO_EDGE;将中断改为低电平模式,此时如果IO脚是低电平则bIO_INT_ACT=1,高电平会让bIO_INT_ACT变成0,相当于硬件自动清零了 4. 然后在中断里程序IE_GPIO=0;关闭GPIO下降沿检测 5. 下次需要捕获下降沿的时候再用1的方法开启下降沿捕获
    11. USB单片机CH554/559实用例程代码 75/4297 【51单片机】 2018-01-11
      这边也来贡献一个Demo吧,是一个USB U盘+键盘+自定义HID设备的 U盘用EEPROM做储存介质,大小这里是64kB,可以自行更换材质 而且U盘部分修复了很多U盘demo无法弹出的bug 代码比较结构化 也有注释 对低级的寄存器操作有一些包装的哦 github.com/rikka0w0/CH55x_USB_CompositeDevice 求点赞
  • TA暂时无记录哦~
  • TA暂时无记录哦~
  • TA暂时无记录哦~
TA暂时无记录哦~

最近访客

< 1/1 >

统计信息

已有1人来访过

  • 芯币:56
  • 好友:--
  • 主题:3
  • 回复:11
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言