i_zw 发表于 2024-8-18 23:31:53

8H8K64U生成方波输出的问题| 已解决

本帖最后由 i_zw 于 2024-9-1 20:19 编辑

各位大家好,使用8H8K64U能生成多高评率的方波输出呢,在ISP工具里面,只有 33M频率 1us的定时器,计算下来最快能生成500KHz的波形,如果要生成1MHz或1.2MHz的波形应该怎么做
试过提高评率,选择到40M系统频率的时候,输出信号的评率搞了一些,但是选择到 48MHz,系统频率的时候,输出信号频率又降下来了。

如果要产生 500K,600K,700K,800K,900K这样到1500KHz的方波,用这个芯片可以吗,或者需要选用其他什么型号的芯片才能实现

使用代码

void Timer1_Init(void)                //1微秒@33.1776MHz
{
      AUXR |= 0x40;                        //定时器时钟1T模式
      TMOD &= 0x0F;                        //设置定时器模式
      TMOD |= 0x20;                        //设置定时器模式
      TL1 = 0xDF;                              //设置定时初始值
      TH1 = 0xDF;                              //设置定时重载值
      TF1 = 0;                              //清除TF1标志
      TR1 = 1;                              //定时器1开始计时
}


DebugLab 发表于 2024-8-19 00:13:38


主时钟分频后输出

zhang32568 发表于 2024-8-19 07:01:42

为啥不适用PWM

jmg 发表于 2024-8-20 09:39:43

本帖最后由 jmg 于 2024-8-20 09:42 编辑

using just the timers, this is possible


You pick /1 on SYSCLK and each overflow toggles via T0CLKO, possible are all of   Fo = SysCLK/(2*N)


You ask for

33M/500k = 66 = OKSysCLK/33/2
33M/600k = 55 Not 2Nnearest is Possible is 33M/27/2 = 611111Hz
33M/700k= 47.14285714 nearest is 687500Hz
33M/800k = 41.25nearest is 785714Hz
33M/900k = 36.66666667 nearest is 916667Hz
33M/1500k = 22 = OK SysCLK/11/2
You have all the choices of 33 to 11 clocks per toggle, for 500kHz to 1.5MHz


Or, if you enable the PLL and use the PWM as mentioned above, the CLOCK used can be higher and finer resolution is possible.




i_zw 发表于 2024-8-22 20:16:16

jmg 发表于 2024-8-20 09:39
using just the timers, this is possible




谢谢你的提示和建议{:handshake:}

i_zw 发表于 2024-8-22 20:19:07

DebugLab 发表于 2024-8-19 00:13
主时钟分频后输出

谢谢你的提示和建议{:handshake:}

i_zw 发表于 2024-8-22 20:19:23

zhang32568 发表于 2024-8-19 07:01
为啥不适用PWM

学习文档研究下PWM

i_zw 发表于 2024-9-1 20:13:03

jmg 发表于 2024-8-20 09:39
using just the timers, this is possible




用timer产生方波,需要执行io口的0,1赋值,当评率达到 860K的时候,就上不去了,估计是timerisr 服务占用了时间。通过pwm 产生了需要的频率可以达到1M。

void PWM_init()
{
          P_SW2 |= 0x80;
          PWMA_PS=0x10;                               //select PWMA3Pin P:P24,N:P25 -useP24
    PWMA_CCER2 = 0x00;                        // before update CCMRx ,reset CCERx to close PWMA/B channel, clear
    PWMA_CCMR3 = 0x60;                        //set PWMA channel,mode 1
    PWMA_CCER2 = 0x01;                        //config PWMA channel enable OUT,PWMA3P ,
    PWMA_CCR3 = 14;//PWM_DUTY;                     // occupation count
    PWMA_ARR = 28;//PWM_PERIOD;                      // period count
    PWMA_ENO = 0x10;                            //ennabe OUT.PWMA3P
    PWMA_BKR = 0x80;                            //enable main OUT
    PWMA_CR1 = 0x01;                            //start counter       
}
只是又遇到一个问题,用PWM产生的方波频率,在定时timer中通过PWMA_CR1 =0x00和0x01 启动和停止后,不确定是停止在高电平还是低电平,请问这个有方法控制吗



页: [1]
查看完整版本: 8H8K64U生成方波输出的问题| 已解决