Questions tagged «interrupts»

一种控制计算机中程序流的机制。中断后,计算机将保存其当前的操作状态,并根据生成的中断更改代码的执行。中断可以是硬件来源的,也可以是软件来源的。来自软件的中断称为陷阱。它是轮询的另一种机制,是实现大多数I / O,多任务和控制的基础。

2
AVR中断服务例程的执行速度未达到预期的速度(指令开销?)
我正在开发一个具有7个输入的小型逻辑分析仪。我的目标设备是ATmega168时钟频率为20MHz的设备。为了检测逻辑更改,我使用了引脚更改中断。现在,我试图找出可以检测到这些引脚变化的最低采样率。我确定的最小值为5.6 µs(178.5 kHz)。低于此速率的每个信号我都无法正确捕获。 我的代码是用C(avr-gcc)编写的。我的例程如下所示: ISR() { pinc = PINC; // char timestamp_ll = TCNT1L; // char timestamp_lh = TCNT1H; // char timestamp_h = timerh; // 2 byte integer stack_counter++; } 我捕获的信号变化位于pinc。为了对其进行本地化,我有一个4字节长的时间戳值。 在数据表中,我读到了中断服务程序需要5个时钟周期才能进入,而5个时钟周期则可以返回主程序。我假设我的每个命令ISR()要花1个时钟来执行;因此总而言之,应该有5 + 5 + 5 = 15时钟的开销。一个时钟的持续时间应根据20MHz的时钟速率而定1/20000000 = 0.00000005 = 50 ns。那么,以秒为单位的总开销应为:15 * 50 ns = 750 ns = …

3
测量中断程序的cpu负载
我有一个isr,它以固定的频率更新显示。我想调整例程以最小化开销,并为其他处理保留尽可能多的cpu时间,但是我没有任何好的方法来收集指标以确定我的cpu负载。 我可以查看程序集并分析例程,但是我没有足够的耐心或能力来做到这一点。我也不觉得我需要非常精细的结果,仅是ISR占用的CPU时间的简单百分比。 我只能在isr处于活动状态时将其设置为高电平并从外部进行测量。这在代码中具有最小的开销,但是我不知道用什么来衡量它。我没有示波器或类似的东西。是否有简单的集成电路或简便的方法可以使用另一个微计来测量占空比?我听说过专用的频率计数器芯片,但是占空比有什么用吗?

1
带有中断处理程序和C ++的Keil ARM编译器中的错误?
我在Keil ARM编译器中为LPC1114编写中断处理程序时遇到问题。当我用C ++编写程序并指定--cpp编译器选项时,中断处理程序中的所有代码都会消失,它将被无限循环替换。我编写了说明我的麻烦的简单程序。 #include "LPC11xx.h" // LPC11xx definitions #define SYSTICK_DELAY 120000 // for 10 ms systick @ 12MHz osc void SysTick_Handler(void) { __NOP(); } int main (void) { SystemInit(); // from system_LPC11xx.c SysTick_Config(SYSTICK_DELAY); // from core_cm0.h // Loop forever while (1) __NOP(); } 当尝试使用--cpp编译器选项编译此代码时,我在disasm中遇到无限循环: SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B …
8 c++  interrupts  keil 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.