- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个代码,需要在定时器中断中读取 AD channel (具有精确时间)。
只要我读完广告就一切都好。但我需要使用数字滤波器,如果我只在中断中放入乘法,则会出现警告:
这样就可以了:
#int_RTCC
void RTCC_isr(void)
{
set_adc_channel(0);
delay_us(40);
unsigned int16 aD = read_adc();
}
但这会收到警告:
#int_RTCC
void RTCC_isr(void)
{
set_adc_channel(0);
delay_us(40);
unsigned int16 aD = read_adc();
aDfilter = aDfilter * 8 + aD * 2;
}
在调用期间禁用中断以防止重入 (@MUL3232)
我不想禁用计时器,因为我需要精度。我该如何解决这个问题?
最佳答案
问题1:PIC通常指的是8位CPU。 8 位 CPU 无法自动读取 16 位值 (aDfilter
)。如果您的 RTC 中断在主程序仅读取一半值时触发,您的程序将崩溃并烧毁。您需要某种重新进入的方法,这是编译器告诉您的。
问题 2:PIC 通常意味着 CPU 速度非常慢,并且中断延迟很大。因此,ISR 中不应该有算术。这肯定涉及到浮点计算。整数相乘甚至可能已经够糟糕的了。
问题 3:PIC 通常意味着没有 FPU 的 CPU 速度非常慢,这意味着您不应该从一开始就使用 float 。您最终将调用支持 float 的软件库,这非常慢。显示的代码中没有任何内容表明需要在此程序中使用浮点。
解决方案:使用整数。通过同步手段实现重入。这在单核微 Controller 上相当容易做到,其中中断总是阻止进一步的中断,simple example 。然后将数字滤波器计算外包给调用者应用程序。只需添加一个标志来告诉它有新数据可用。
关于c - 中断 PIC CCS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46427314/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
让我们快速回顾一下以下案例: 不将动态链接与位置无关代码相结合。我可能敢说这是一个不可能的案例,但当我深入探讨这个主题时,我不太确定。 将静态链接与位置无关代码相结合。我相信这作为一个有效的组合是完全
我正在将一个线程局部变量添加到几个始终直接链接到可执行文件的目标文件中。这些对象永远不会包含在共享库中(并且可以安全地假设这在可预见的 future 会成立)。这意味着这些对象不需要 -fPIcfla
这个问题与this one有关以及它的答案。 我刚刚在我正在处理的构建中发现了一些丑陋之处。情况看起来有点像下面(用gmake格式写的);请注意,这特别适用于 sparc 和 x86 硬件上的 32
我在 PIC 的 mikroC 中实现基于定时器的中断时遇到问题。 如果 PORTC.F0 处有按键,我想切换端口引脚 8 次,并且切换之间应该有 100 毫秒的延迟。 通常使用延迟函数这会很容易 f
我试图通过 SPI 通信让 PIC1 成为主机,PIC2 成为从机。我想从 PIC1(master)发送命令到 PIC2(slave),然后让它做一些事情。但是,我也想通过 SPI 通信建立从 PIC
我正在使用 cvSplit() 来分离 RGB channel 并将它们打印在 3 个不同的图像中,显示颜色 r、g 和 b。但我只有黑白照片的 BW 图像。这是使用 cvSplit() 时的正确输出
初始化以下变量时: 01 BATCH-REC. 03 BATCH-VERSION PIC X(2). 03 BATCH-FIELDS
当我在学习 javafx 教程并尝试为 ImageView 创建一个新的 Image 实例以将其用于 TreeView 时,我注意到导师曾经创建一个 ImageView:new ImageView(n
我正在研究 PIC16F887,我的任务主要基于 adc 读数(8 位)。有 10 个不同的模拟输入,因此逐个读取它们需要相当长的时间。时钟为 20Mhz,adc 唯一允许的设备频率为 Fosc/32
我有一 block 带有特殊 UEXT connector 的 Olimex A20 板它可以连接 SPI、I2C 和 RS 232。我喜欢使用 Olimex 的 MOD Zigbee 模块直接通过
有没有办法在不使用pickit型编程器的情况下编程(闪存)裸(尚未使用引导加载程序闪存)pic32芯片? 例如,是否有任何正在进行的 JTAG 项目? 最佳答案 建议您引用Microchip PIC3
阅读时this blogpost , 当作者试图证明共享库需要 PIC 时,我遇到了以下情况。 If your shared library is built to only work when lo
我是 PIC mcu 的新手。我使用 pic12f675 MPLAB 和 XC8 来制作 LED 多次闪烁模式。 我有按钮问题(经过审查,它调用了 Bounce 和 Debounce)。 有时当我按下
是否有用于不可屏蔽中断的独立通信总线绕过可编程中断 Controller ? 或者 PIC 是否管理所有中断,但按照约定传递所有不可屏蔽中断? 这是否取决于架构,或者是否有特定的理由选择其中一种而不是
我想问一下如何在PIC C编译器中为PIC18f4620编写代码,以便在模拟输入之一为1时传输日期 最佳答案 对于这个网站来说,这个问题实在是太宽泛了。如何编写代码取决于您使用的 PIC C 编译
我是 PIC 编程新手,正在使用 MPLAb。我有一个关于中断的问题..所以我想做的是,当我按下按钮时,我想打开 LED 0,如果我松开按钮,则打开 LED 1。我认为我编写的代码有意义,但它不起作用
我想用我的PIC18F4550、蓝牙模块HC-06和电脑做一个简单的测试。我的意思是,我想使用蓝牙模块将一个简单的字符从 PIC 发送到 PC。 它应该在终端中出现一个“A”,但出现的是十六进制的 F
所以我使用的微型芯片是 PIC 18F。 如果设置了Alarm_Status.bits.b3(本质上只是一个开关),则会创建警报。第一个代码片段按其应有的方式工作 BS(TRISB,7);
经过大量的试错和堆砌,我(我们)设法让两张图片以一种非常特殊的方式重叠: 这是这样实现的: .container { width: 900px; margin: auto; } .center
我是一名优秀的程序员,十分优秀!