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

你好汤姆,

如果您使用的是睡眠模式,这种类型的interrupt will not wake up the DA14580. Waking up requires the use of the wake-up timer block. Please see UM-B-51 for details on the wake-up timer. If timing is really critical, I would remind you that the wake-up timer requires the GPIO to remain in the triggering level for more than 2 sleep clock cycles in order to wake up the device (with an external crystal that adds up to about 61us and waking up from sleep also requires about 1ms of housekeeping on the chip side - such as changing the clock source, powering up the RAM power rail etc.)

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

/ mhv.

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

嗨对话框,

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

最好的祝愿,

汤姆

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

这是一个很棒的消息!

/ mhv.