【RISC-V MCU CH32V103测评】+ ADC模拟看门狗
<p><span style="font-size:20px;"> 我们在用ADC的时候有时候会需要监视ADC的值在某范围内,传统轮询处理起来往往不够及时,外围添加两个电压比较器又增加电路成本还要再占2个GPIO,这些,厂商也想到了,就在ADC中集成了一个模拟看门狗,</span></p><p><img bgsrc="/data/attachment/forum/202103/07/214126bn2do28hdhf9h9vr.png.thumb.jpg" cwidth="300" id="image_527065" onclick="insertAttachimgTag2('527065');doane(event);" src="https://bbs.eeworld.com.cn/forum.php?mod=image&aid=527065&size=300x300&key=01f3ec5ebf3512ec&nocache=yes&type=fixnone" width="110" /></p>
<p><span style="font-size:20px;">只要设定上限和下限即可工作,当低于下限或超过上限就会触发中断.添加红框内代码</span></p>
<p></p>
<p><span style="font-size:20px;">it.c中添加</span></p>
<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="hljs">void ADC1_2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));</code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>
<p>中断服务函数</p>
<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="hljs">/*******************************************************************************
* Function Name: ADC1_2_IRQHandler
* Description : This function handles analog wathdog exception.
* Input : None
* Return : None
*******************************************************************************/
void ADC1_2_IRQHandler(void)
{
if(ADC_GetITStatus( ADC1, ADC_IT_AWD)){
printf( "%d\r\n",ADC_Value );
}
ADC_ClearITPendingBit( ADC1, ADC_IT_AWD);
}
</code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>
<p><span style="font-size:20px;">编译烧录之后调整ADC通道1电压,我设定的电压大概在0v到1.047v.当超过上限1.047v之后便产生中断,中断频率和ADC转换速度有关.</span></p>
<p></p>
<p><span style="font-size:20px;">直到重新回落到设定电压区域,便不再产生中断.</span></p>
<p>谢谢分享~~期待更多内容呀</p>
<p>1.047v是如何设定的?这个数值看起来不太寻常啊。</p>
freebsder 发表于 2021-3-8 22:35
1.047v是如何设定的?这个数值看起来不太寻常啊。
<p>需要监控的电压阀值除以最小刻度,就是要设定的值。</p>
页:
[1]