完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
喜
谢谢你的快速反应!我现在已经复制了STM8参考手册中描述的程序 - 仍然没有成功。我猜我得联系技术支持.. 此致,格奥尔格 以上来自于谷歌翻译 以下为原文 hi, thanks for the fast response! I have now copied the very procedure described in the STM8 reference manual - still without success. Guess I have to contact technical support.. Regards, Georg |
|
|
|
嗨,
我记得我使用过这个配置并且工作正常。也许你错过了这一步 ''选择有效的触发输入:在TIM1_SMCR寄存器(选择TI1FP1)中将TS位写入“_101”。 它在参考手册中有说明! 问候, mcu粉丝 以上来自于谷歌翻译 以下为原文 Hi, I remember that I used this config and it worked fine. Perhaps you missed this step ''Select the valid trigger input: write the TS bits to ‘101’ in the TIM1_SMCR register (TI1FP1 selected).'' It is indicated in the reference manual ! regards, mcu fan |
|
|
|
嗨乔治,
你可以把你的代码发给我,也许我可以帮助你。 MitbestenGrüßen, 低功率风扇 以上来自于谷歌翻译 以下为原文 Hi georg, you can send me your code perhaps I can help you. Mit besten Grüßen, low power fan |
|
|
|
喜
非常感谢提前!当然,我可以为Discovery Board提供一个演示项目(参见本文的附件)。感谢您的帮助和努力! 问候, 乔治· 以上来自于谷歌翻译 以下为原文 hi, thanks a lot in advance! Of course I can provide you with a demo project for the Discovery Board (see attachments to this post). For your help and effort thanks a lot in advance! Regards, Georg |
|
|
|
嗨乔治,
先看一下。我建议改变 while(!TIM1_SR1_UIF); 通过 while(!TIM1_SR1_CC1IF); 因为它处于捕获事件,计数器值将被加载到捕获寄存器中。 希望这可以帮助。 告诉它是否正常 Mitbestengrüssen, MCULüfter 以上来自于谷歌翻译 以下为原文 Hi georg, After a first look. I suggest to change while (!TIM1_SR1_UIF); by while (!TIM1_SR1_CC1IF); because it is at capture event the counter value will be loaded in capture register. Hope this helps. Tell if it is OK Mit besten grüssen, MCU Lüfter |
|
|
|
嗨Lüfter,
当我们的母语最有可能是德语时,用英语讨论有趣吗?无论如何,我已经尝试过你的建议,但我仍然得到一个有趣的结果(见附件)。列(从左到右):输入频率和占空比(均使用示波器断言),TIM1_CC1和TIM1_CC2捕获值,以及计算出的频率(24MHz / 2 / CC11)和占空比(CC2 / CC1)。 对我来说,这似乎是CC1& CC2确实捕获边缘,但由于某种原因定时器无法正确启动......?观察到第一次测量仅稍微关闭(在PWM生成开始后立即开始),而所有其他测量更多关闭(+几毫秒延迟)也支持这一点。任何想法???再次感谢您的帮助! 此致,格奥尔格 以上来自于谷歌翻译 以下为原文 hi Lüfter, funny discussing in english when both our native language most likely is german...? Anyway, I've tried your proposal but I still get a funny result (see attachment). The columns are (from left to right): input frequency and duty cycle (both asserted using an oscilloscope), TIM1_CC1 and TIM1_CC2 capture values, and the calculated frequency (24MHz/2/CC11) and duty cycle (CC2/CC1). To me this seems like CC1 & CC2 do capture the edges, but for some reason the timer doesn't start correctly...? This is also supported by the observation that the 1st measurement is only slightly off (starts immediately after start of PWM generation), whereas all the other measurements are more off (+ some ms delay). Any idea??? And again, thanks in advance for any help! Regards, Georg |
|
|
|
嗨乔治,
你输入1KHz,你会发现在CCR1 12000.Das kommt nicht! 如果您的定时器的时钟频率为16 MHz,那么CCR1寄存器中应该有16000 +/-错误。什么是你的时钟分频器,定时器时钟16 MHz,8 MHz或......? 我鼓励在定时器的每个配置之后进行更新事件,以便立即考虑新的(预分频器,ARR ...)(您可以从参考手册中得出结论,定时器需要更新事件以考虑新的配置) 更新完成如下:TIM1-> EGR | = 0x01; Mitbestengrüssen, MCULüfter 以上来自于谷歌翻译 以下为原文 Hi georg, You put 1KHz and you find in CCR1 12000. Das kommt nicht ! If your timer is clocked by 16 MHz so you should have 16000 in CCR1 register +/- error. What is your clock divider, timer clock 16 MHz, 8MHz or ...? I suuggest to make an update event after each config of timer so the new one (prescaler, ARR...) are taken into account immediately (you can conclude from the reference manual that the timer needs update event to take into consideration the new config) the update is done as following: TIM1->EGR |= 0x01; Mit besten grüssen, MCU Lüfter |
|
|
|
你好Lüfter,
在德意志的einfachheit halber antworte ich mal(alternativkönntestDumir mal Deine发送电子邮件给'georg - at - cream-tea.de''schicken,dann machen wir per PM weiter)。 AberhierzunächstderVersuch bzw.我的问题: ich benutze das STM8 Discovery-Board。 FürdirektenZugriff auf PC1 habeichLötbrückeSB3umgelötet(wie im Board Manual beschrieben)derSTM8läuftmit16MHz externem Takt die PWM wird a TIM2_CC2(= PD3 = CN4,P8)generiert und a TIM1_CC1(= PC1 = CN2,P2)zurückgelesen。 die PWMistüberdiegesamte Dauer konstant(1kHz,30%)undwirdüberinkurzes Kabel von PD3 - > PC1 gegeben die Korrektheit der erzeugten PWM habe ich mit einem Oszi kontrolliert(s.angehängtesBild)。 Sie stimmt geradezu unheimlich gut ... bei 1kHz und 16MHz(PRE = 0)erwarte ich einen Capture-Wert von 16000(= 16e6 / 1e3)fürdie volle Periode bzw. 4800(= 0,3 * 16000)für死高Dauer die erste Messung(direkt nach Start der PWM Generierung)liefert einen Wert''inderNähe'',konkret CC1 = 15945 und CC2 = 4744 alle weiteren Messungen( finden nur alle 5ms statt,siehe main loop)liefern hingegen Werte um die CC1 = 13900 und CC2 = 2690 wenn ich im Main-Loop das sleep_ms(5)VOR die erste Messung der PWM setze,erhalte ich auch in der ersten Messung Werte um die CC1 = 13900 und CC2 = 2690 wenn ich von aussen ein konstantes aber unkorreliertes(!)PWM Signal anlege,(zB von einem anderen Discovery Board)bekomme ich ganz andere Werte Speziell die letzten 4 Punkte liesen sicheinfacherklären,wenn TIM1 noch vor der ersten steigendenFlankelosläuft,obwohl ich dachte,ich habe ihn so konfiguriert,dass er genau das macht(TIM1_SMCR)。 Aber offenbar mache ich da是falsch,aber ich komme einfach nicht dahinter ... |
|
|
|
嗨georg,Entschuldigung,aber ich verstehe ein bisschen Deutsch
deshalb schlage ich vor,嗯Ihre Nachricht aufEnglischübersetzen 。 Dankeshön,MCULüfter 以上来自于谷歌翻译 以下为原文 Hi georg, Entshuldigung, aber ich verstehe ein bischen Deutsch deshalb schlage ich vor, um Ihre Nachricht auf Englisch übersetzen . Danke shön, MCU Lüfter |
|
|
|
嗨Lüfter,
对不起,我以为你是母语人士。但没问题,这是我的测试设置的描述。我的问题: 我使用STM8 Discovery-board。为了访问引脚PC1 I,如电路板手册中所述修改了焊桥SB3,STM8在外部谐振时以16MHz运行,在TIM2_CC2(= PD3 = CN4,P8)处产生PWM信号,并通过TIM1_CC1(= PC1 = CN2,P2)测量)测试期间PWM信号为(1kHz,30%)恒定,引脚PD3和PC1用短电缆连接。我已使用示波器断言产生的PWM(见附件)。它几乎非常适合...对于1kHz PWM信号和16MHz定时器时钟(PRE = 0)我期望在整个周期内捕获值为16000(如您所述)。对于高持续时间4800(= 0.3 * 16000)第一次测量(在PWM生成开始后立即产生)''接近'',特别是CC1 = 15945和CC2 = 4744所有进一步的测量(每5ms发生一次) CC1~13900和CC2~2690的屈服值我在测量PWM信号之前输入'sleep_ms(5)'',第一次测量产生CC1~13900和CC2~2690我应用恒定但不相关(!)到TIM1_CC1的PWM信号(来自第二个发现板)我得到完全不同的捕获值特别是最后4个点让我相信TIM1在PWM信号的第一个上升沿之前开始。我以为我已将其配置为通过TIM1_SMCR的上升沿触发。但显然我做错了什么...... |
|
|
|
嗨乔治,
尝试在while(!TIM1_SR1_CC1IF)之后添加此行; while(!TIM1_SR1_CC2IF); //等到捕获事件 我认为你应该等待两个事件:首先是CC2事件读取占空比,第二个事件是读取周期。 我希望这可以帮助你,否则我应该运行你的代码来找出问题。 告诉我通知。 Mitbestengrüssen, MCULüfter 以上来自于谷歌翻译 以下为原文 Hi georg, Try adding this line after while (!TIM1_SR1_CC1IF); while (!TIM1_SR1_CC2IF); // wait until capture event I think that you should wait for two events: first the CC2 event to read the duty cycle and the second one is to read the period. I hope this helps you otherwise I should run your code to find out the issue. Kep me informed. Mit besten grüssen, MCU Lüfter |
|
|
|
嗨乔治,
添加TIM1_SR2 = 0x00;在TIM1_SR1 = 0x00之后;这可能有所帮助! Lüfter 以上来自于谷歌翻译 以下为原文 Hi georg, Add TIM1_SR2 = 0x00; after TIM1_SR1 = 0x00; that could help ! Lüfter |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2634 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3609 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:57 , Processed in 1.399647 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号