Arduino 串行中断

2023-11-29

我正在开发 Arduino Mega 2560 项目。在 Windows 7 PC 上,我使用 Arduino1.0 IDE。我需要建立波特率为 115200 的串行蓝牙通信。当 RX 上有数据可用时,我需要接收中断。我见过的每一段代码都使用“轮询”,即在 Arduino 循环中放置 Serial.available 条件。如何在 Arduino 的中断循环及其服务例程中替换这种方法?看来attachInterrupt() 没有提供此目的。我依靠中断将 Arduino 从睡眠模式中唤醒。

我开发了这个简单的代码,用于打开连接到引脚 13 的 LED。

    #include <avr/interrupt.h> 
    #include <avr/io.h> 
    void setup()
    {
       pinMode(13, OUTPUT);     //Set pin 13 as output

       UBRR0H = 0;//(BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register 
       UBRR0L = 8; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register 
       UCSR0C |= (1 << UCSZ00) | (1 << UCSZ10); // Use 8-bit character sizes 
       UCSR0B |= (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);   // Turn on the transmission, reception, and Receive interrupt      
    }

    void loop()
    {
      //Do nothing
    }

    ISR(USART0_RXC_vect)
    {    
      digitalWrite(13, HIGH);   // Turn the LED on          
    }

问题是子例程永远不会被服务。


终于我找到了我的问题。我更改了中断向量“USART0_RXC_vect”USART0_RX_vect。我还添加了interrupts();启用全局中断并且工作得很好。

代码是:

#include <avr/interrupt.h> 
#include <avr/io.h> 
void setup()
{
   pinMode(13, OUTPUT); 

   UBRR0H = 0; // Load upper 8-bits of the baud rate value into the high byte of the UBRR register 
   UBRR0L = 8; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register 
   UCSR0C |= (1 << UCSZ00) | (1 << UCSZ10); // Use 8-bit character sizes 
   UCSR0B |= (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);   // Turn on the transmission, reception, and Receive interrupt      
   interrupts();
}

void loop()
{

}

ISR(USART0_RX_vect)
{  
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
}

谢谢各位的回复!!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino 串行中断 的相关文章

  • BLE 堆栈的开源实现

    除了 BlueZ 和 Bluedroid 之外 还有其他 BLE 堆栈的开源实现吗 有几个开源 BLE 堆栈 NimBLE http mynewt apache org network ble ble intro Apache mynewt
  • React Native 模块中的 EADemo 永远不会收到委托方法handleEvent NSStreamEventOpenCompleted?

    我希望我有一个反应本机桥接模块 https facebook github io react native docs native modules ios html 线程 委托或生命周期问题 我不明白这些问题正在阻止接收委托方法调用 我需要
  • 如何在 Android 中检查与配对设备的蓝牙连接状态

    我开发了一个蓝牙应用程序 它将连接到配对的设备并发送消息 但我必须先测试连接 我尝试了很多选择 但没有一个效果很好 那么您能给我发送任何可以做到这一点的代码示例吗 我创建了一个线程 但无法获得良好的连接状态来构建 if 函数 这是代码 pa
  • Android蓝牙权限问题

    首先 抱歉我的英语不好 我是西班牙人 并且是 Android 开发的新手 我正在开发一个简单的蓝牙文件发送器 我基于BluetoothChat android示例一步一步 现在我向用户发出蓝牙激活请求 并选择是或否选项应用程序崩溃 我拥有清
  • 通过蓝牙将字符串从作为客户端的 PC 发送到作为服务器的移动设备

    我需要通过蓝牙将字符串从 PC 传输到 Android 移动设备的帮助 Android 移动设备应充当服务器并在设备屏幕上显示字符串消息 作为客户端的 PC 应该将字符串发送到移动设备 我希望服务器对提取的字符串 通过蓝牙传输 做出反应 这
  • 我安排一个计时器使用 readRSSI 函数读取 RSSI,但是当我的应用程序进入后台时计时器停止

    我安排一个计时器使用 readRSSI 函数读取 RSSI 但是当我的应用程序进入后台时计时器停止 也许有一个好方法可以在应用程序进入后台时从外围设备的通知中获取 RSSI 值 但我不知道该怎么办 有人可以帮助我吗 有人有更好的方法吗 我也
  • AVAudioSessionPortBluetoothHFP、A2DP 和 LE 有什么区别?

    Apple 中记录了三种不同的蓝牙相关音频端口类型AVAudioSessionPort 描述 https developer apple com library ios documentation AVFoundation Referenc
  • 外设 writeValue: forCharacteristic: 类型: 返回 null 错误和值

    我正在使用苹果编写的以下代码 https developer apple com library mac samplecode HeartRateMonitor Listings HeartRateMonitor HeartRateMoni
  • 苹果的外部配件(蓝牙)仅适用于 MFI 设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的学士论文的目标是通过蓝牙适配器将光串行设备连接到 iPad 目前我正在努力应对苹果的限制 我经常在网上看到我可以使用支持的配置文件 h
  • 在没有 BluetoothManagerCallback 的情况下调用 getBluetoothService

    我正进入 状态getBluetoothService called with no BluetoothManagerCallback在我的 Android 应用程序中经常出现错误 我不知道是什么原因导致这个或任何有关蓝牙管理器回调的事情 谁
  • Arduino 串行输出丢弃字符

    当我尝试为我的 Arduino Uno 编写一些代码时 我遇到了一个奇怪的串行输出 我有这个原始代码 MyClass myclass void setup Serial Begin 9600 Serial println Starting
  • 类中的易失性变量:“‘易失性’之前预期有非限定 ID”?

    我有两个static volatile我的类中定义的变量ADC 该类写为 裁剪以节省空间 pragma once include PeriodicProcess PeriodicProcess h include
  • 如何使用通用Windows应用程序将串行数据写入COM端口?

    通常 C 应用程序使用System IO Ports像这样 SerialPort port new SerialPort COM1 port Open port WriteLine test 但通用 Windows 应用程序不支持Syste
  • delphi定时器比定时器服务中断例程更快

    大家好 我被要求为某人维护一个基于 Delphi 5 的程序 该程序使用一个计时器对象每 50 毫秒计时一次 并且在每次计时结束时运行单线程代码块 我只是想知道 如果执行这段代码所花费的时间比计时器滴答间隔长 会发生什么 这会很糟糕吗 例如
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 如何知道特定蓝牙设备何时连接?

    我有一个在后台运行的应用程序 需要知道何时连接特定的蓝牙设备 假设我希望我的应用程序在后台运行 并在您的设备连接到汽车蓝牙时执行某些操作 谢谢 下面的代码给出了它所连接的设备 BluetoothDevice device intent ge
  • 执行 hciconfig hci0 重置时出现无效参数问题

    我在 5 0 以上的内核中观察到这个问题 并且控制器已启用扩展广告 我目前已经使用 bluez 5 50 进行了测试 这个问题与我可以从代码中得到的 MGMT ADV FLAG SEC MASK 标志有关 但是这个标志何时以及如何修改是我不
  • Android 蓝牙后台监听器

    我正在开发一个带有蓝牙聊天功能的Android应用程序 我已经成功地用两部手机实现了蓝牙聊天 但我的问题是 如果我从聊天活动更改到下一个活动 连接就会丢失 然后我无法从第二个活动发送消息 我怎样才能保持我的连接 也就是说 我想通过我的应用程
  • 如何在Android中使用蓝牙访问另一部手机的文件系统?

    通过蓝牙与手机配对后 是否可以访问 SD 卡内容 如音乐或图像 有这方面的教程或示例代码吗 我看到一个名为 蓝牙文件传输 的应用程序 想要制作另一个类似的应用程序 我读过有关蓝牙 蓝牙套接字的信息 但没有找到任何有用的信息如何执行该操作我正
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A

随机推荐