绅仕 发表于 2025-5-11 14:10:44

如何在 Ai8H1K08 P1.6 输出 12M 时钟


碰到问题需要请教 {:baoquan:}

用以下代码能在 8H8K64U 的 P1.6 脚成功输出 12M 时钟, 但挪到 8H1K08 後, 却只能输出 4M 时钟



void Set_System_Clock()
{
    // Enable the Extended SFR for setting system clock config
    P_SW2 |= bmBIT7;   
   

    // Set CLKSEL for :
    // Source of MCLK   Bit   00 : HIRC will be used
    CLKSEL = 0x00;

    // Set CLKDIV for SYSCLK
    //CLKDIV = 4;       // SYSCLK = 24M / 4 = 6MHz
    //CLKDIV = 2;       // SYSCLK = 24M / 2 = 12MHz
    CLKDIV = 1;         // MAIN_Fosc = 24000000L, SYSCLK = 24M

    // V0105_B
    //enable 12MHz clock output from P1.6
    MCLKOCR = 0x82;   // Bit_7 = 1 , using P1.6 as MCLK output
                        // Bit = 2 , SYSCLK / 2
    //MCLKOCR = 0x81;   // DEBUG
   
    // Disable the access of Extended SFR
    //P_SW2 = 0x00;
}


1.都是在 ISP 烧录时选择 IRC 频率 24M
2.烧录成功後亦显示经 ISP 调节後的频率为 23.995MHz
3.曾尝试修改 MCLKOCR 数值为 0x81 , 看能否提高输出的频率, 结果是 P1.6 没有时钟输出 !

请问该怎样修改才能从 P1.6 脚输出 12MHz 时钟 ?

神农鼎 发表于 2025-5-11 15:13:25

ISP烧录时选择 24MHz 主频,
用户程序区2分频输出






绅仕 发表于 2025-5-11 18:22:05

神农鼎 发表于 2025-5-11 15:13
ISP烧录时选择 24MHz 主频,
用户程序区2分频输出

问题解决了 !有劳协助 {:baoquan:}

但对 AI 的回覆感到迷惘, 好像给出来错的资讯, 如 :
8H1K08 的 MCLKOCR 分频系数为 N+1,而非直接赋值
0x82 对应分频系数 3(2+1),导致输出 24M/3=8MHz

芯片 datasheet 也没有这样说 {:yiwen:}

_奶咖君_ 发表于 2025-5-12 09:47:37

绅仕 发表于 2025-5-11 18:22
问题解决了 !有劳协助

但对 AI 的回覆感到迷惘, 好像给出来错的资讯, 如 :


对于自己不清楚的知识,,千万别看AI的,,很容易被里面看起来头头是道实际上可能是胡说八道的东西迷惑了记忆,所有的依据一定要以手册为准,手册很重要。
页: [1]
查看完整版本: 如何在 Ai8H1K08 P1.6 输出 12M 时钟