我想使用Arduino的硬件RX引脚作为中断引脚。如果RX引脚上有任何可用数据,将产生中断信号,调用回调函数来读取输入的串行数据。我不希望我的loop()函数在串行端口上持续读取。我正在使用此代码,但我的中断没有被触发。我也尝试删除digitalPintointerrupt()但没有得到任何响应。
frozenset
d serial_read`
答案 0 :(得分:0)
sei()
ENABLES中断,而cli()
禁用它们。你的意见建议你让他们倒退。也许还有其他问题,但这些说明肯定与你的意图不符。
如果你想获得更低级别,可以考虑一个纯粹的中断驱动设计,如:
ISR (USART0_UDRE_vect)
{
// Send next byte and increment pointer
UDR0 = *ub_outptr++;
// Pointer wrapping
if (ub_outptr >= UART_buffer + BUFF_SIZE)
ub_outptr = UART_buffer;
// If buffer is empty: disable interrupt
if(--ub_buffcnt == 0)
UCSR0B &= ~(1 << UDRIE0);
}
我知道这会带你离开Arduino库的东西,所以这可能不适合你。但它的工作原理(例如发送数据,因为我有一个活动项目,微控制器将数据发送到LCD显示器。这只是AVR-GCC C中的一个例子。)
答案 1 :(得分:0)
试试我的NeoHWSerial。它是Arduino核心类的修改版本HardwareSerial
,用于Serial
,Serial1
等的类。它增加了为每个接收到的字符注册回调的功能。