⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
托马堡
离线
最后一次露面:3年9个月前
加入:2016-01-13 14:46
DA14580中断

嗨对话框,

使用SDK 5.0.3和BLE外围示例作为基础,我对DA14580上的中断存在问题。我正在尝试将DA14580从外部设备上中断引脚的上升沿。

但是,无论设备释放引脚,无论我尝试了什么,中断都只发生在下降沿。这是一个时间关键应用,因此我需要尽快打火。

您的任何建议都将受到欣赏,附加的代码和逻辑分析仪图像。

最好的祝愿,

汤姆

setword16(p29_mode_reg,0x20);//设置为下拉
setword16(gpio_irq2_in_sel_reg,24);// p2.9被选中,第2个参数是PIN - 检查数据表
setword16(gpio_reset_irq_reg,4);//重置Irq_2reg
setBits16(GPIO_INT_LEVEL_CTRL_REG,EDGE_LEVELN2,0);// 0:用于GPIO IRQ2的中断重置后不要等待密钥释放
setBits16(GPIO_INT_LEVEL_CTRL_REG,INPUT_LEVEL2,0);//选择上升沿
setbits16(gpio_debounce_reg,deb_enable2,0);//删除启用
setBits16(GPIO_DEBOUCE_REG,DEB_VALUE,0);//去抖时间n * 0.63毫秒
nvic_setpriority(gpio2_irqn,0);
nvic_enableirq(gpio2_irqn);
setword16(gpio_reset_irq_reg,4);//重置Irq_2reg

关键词:
设备:
mhv_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2013-12-06 15:10
你好汤姆,

你好汤姆,

有没有理由在SDK中使用GPIO_ENABLEQ函数?

下面的代码片段正在工作。中断在app_on_set_dev_config_complete回调(user_cfg_complete)中配置以触发高级GPIO。当IRQ触发器时,打开LED并启动1秒计时器。超时功能关闭LED并再次启用中断。

void my_timer_timeout()
{
gpio_resetirq(gpio0_irqn);
nvic_clearpendingirq(gpio0_irqn);
gpio_setinactive(gpio_alert_lex_port,gpio_alert_lex_pin);
nvic_enableirq(gpio0_irqn);
}
void my_btn_handler()
{
nvic_disableirq(gpio0_irqn);
ARCH_SET_PXACT_GPIO();
gpio_setactive(gpio_alert_lex_port,gpio_alert_lex_pin);
app_easy_timer(100,my_timer_timeout);
}
void user_cfg_complete(void)
{
default_app_on_set_dev_config_complete();
gpio_registercallback(gpio0_irqn,my_btn_handler);
gpio_enableirq(gpio_button_port,gpio_button_pin,gpio0_irqn,false,false,2);
gpio_setinactive(gpio_alert_lex_port,gpio_alert_lex_pin);
}
/ mhv.
托马堡
离线
最后一次露面:3年9个月前
加入:2016-01-13 14:46
你好,

你好,

非常感谢您的快速回复。我尝试过GPIO_ENABLEIRQ(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN,GPIO0_IRQN,FALSE,FALSE,0);但这也没有影响 - 触发器仍然在下降沿。但是我没有在user_cfg_complete(void)中或使用default_app_on_set_dev_config_complete();但在Periph_init(void)中设置中断。

我已添加到您建议的代码中并将App_On_set_dev_config_complete设置为User_cfg_Complete,但除非我也将其添加到Periph_Init(void),它不会触发甚至使用它,因为您已将其写入它仍然触发下降沿触发。这里有什么我可能缺少的... Pin分配,从睡眠中醒来等吗?

最好的祝愿,

汤姆

mhv_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2013-12-06 15:10
你好汤姆,

你好汤姆,

如果您正在使用睡眠模式,这种类型的中断将不会唤醒DA14580。唤醒需要使用唤醒计时器块。关于唤醒定时器的详细信息请参见UM-B-51。如果时机真的很关键,我会提醒你,唤醒定时器需要的留在触发水平超过2睡眠时钟周期为了唤醒设备(与外部晶体,加起来大约61美国和从睡梦中醒来还需要约1毫秒的管家在芯片方面,如改变时钟源,启动RAM电源轨等)

我正在在我的Pro开发套件上运行上面的代码,并且中断确实触发了逻辑上高级别。我正在使用p1_1作为我的上拉的输入,因此在Pro套件上释放SW3将触发中断。

/ mhv.

托马堡
离线
最后一次露面:3年9个月前
加入:2016-01-13 14:46
嗨对话框,

嗨对话框,

非常感谢您的帮助。我设法使用唤醒定时器,它现在正常工作。

最好的祝愿,

汤姆

mhv_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2013-12-06 15:10
这是一个很棒的消息!/ mhv.

这是一个很棒的消息!

/ mhv.