avr相关内容
我的项目的一部分一些源文件是 button_key.h, button_key.h, lcd.h, mani.c等 在BUTTON_Key.H中使用了结构,并声明为 struct menu { uint8_t Hour; uint8_t Minute; uint8_t Second;
..
..
..
是否有一种聪明/有效的算法来确定角度的斜边(即 sqrt(a² + b²)),在嵌入式处理器上使用定点数学,无需硬件乘法? 解决方案 除非您以 >1kHz 的频率执行此操作,否则即使在没有硬件 MUL 的 MCU 上进行乘法也并不可怕.更糟糕的是 sqrt.我会尝试修改我的应用程序,使其根本不需要计算. 如果您确实需要标准库,它可能是最好的,但您可以考虑使用牛顿法作为一种可能的替代方
..
我在 AVR 微控制器 (ATMega328P) 上运行的 C 程序中遇到了问题.我相信这是由于堆栈/堆冲突,但我希望能够确认这一点. 有什么方法可以可视化堆栈和堆的 SRAM 使用情况? 注意:程序用avr-gcc编译,使用avr-libc. 更新: 我遇到的实际问题是 malloc 实现失败(返回 NULL).所有 mallocing 都发生在启动时,所有 freeing 都
..
我想知道在移动 2 的幂时执行逻辑右移是否更快 例如是 myUnsigned >>4 比 更快 myUnsigned >>3 我很欣赏每个人的第一反应是告诉我不要担心这样的小事,它使用正确的算法和集合来减少重要的数量级.我完全同意你的看法,但我真的想尽我所能从嵌入式芯片(ATMega328)中挤出一切——我刚刚得到了一个值得“哇哦!"的性能转变.通过用位移替换除法,所以我向你保证这
..
我使用 SIM900 GSM 模块连接到我的 AVR 微控制器.我用 FT232 测试它以查看传输数据.首先Micro发送AT它会响应OK AT OKAT+CMGF=1 正常AT+CMGS="+9893XXXXXX" 返回 ERROR 并且不显示 ">" 有人能告诉我该怎么做吗? 解决方案 Command AT+CSCS? will answer you what type of sm
..
我想学习嵌入式编程(主要是用 C 语言,但我也希望复习我的 ASM),我想知道最好的平台是什么.我在使用 Atmel AVR 并使用 stk500 对其进行编程方面有一些经验,发现这相对容易.我特别喜欢 AVR Studio 和可以让您查看寄存器状态的调试器. 但是,如果我要花时间学习,我宁愿学习行业中流行的东西.我在想 ARM,除非有人有更好的建议. 我还会寻找一些参考资料,我在 A
..
你好朋友,我是微控制器领域的新手,想知道在不使用计数器的情况下是否无法对事件进行计数,我的意思是通过监视连接到事件生成器的引脚.我问这个问题是因为目前我想计算传感器的频率我已经使用 DSO(数字存储示波器)检查了它的频率,它(DSO)说它的频率是 98khz 但是我们现在都知道 8 位计数器的最大值是 255 那么它是如何可能的......传感器连接到PB0(TCNT0/Atmega16的计数器0
..
我在 Arduino 中使用自定义枚举类型时遇到了一些问题. 我读过 其他地方 使用头文件对于自定义类型声明是必要的,因为到 Arduino IDE 预处理.所以,我已经这样做了,但我仍然无法使用我的自定义类型.这是我的主要 arduino 文件 (beacon.ino) 中代码的相关部分 #include 状态状态; 在信标.h中: typedef enum {菜单,输出开,val_
..
我在 avr 汇编中使用 CBI 或 SBI 时遇到问题,当使用端口 H 到 L 时.来自文档 [http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_SBI.html] SBI 仅采用 5 位参数,如果我使用端口 H 或更高,来自 _SFR_IO_ADDR(PORTH) 的地址将超出允许范围.有没有其他选择来实现这一目标?谢谢.
..
在 ArduinoUnit 单元测试库中,我提供了一种为 TestSuite 命名的机制.库的用户可以编写以下内容: TestSuite 套件(“我的测试套件");//...套件运行();//此处使用套件名称 这是预期的用法 - TestSuite 的名称是字符串文字.然而,为了防止难以发现的错误,我觉得有必要迎合不同的用法,例如: char* name = (char*) malloc(1
..
我想通过 Android 通过蓝牙 SPP 远程重新编程我的 Arduino.第一步是复位 ATMEGA 微控制器.这是通过切换 DTR 线在 Arduino 上完成的.是否有任何 API 可以从 Android 环境中控制蓝牙 SPP 控制线? 解决方案 一般 SPP 也支持发送或接收控制信号 (DTR, DSR, RTS, CTS) 我不知道任何 API 或库android 知道,但因
..
我使用的是带有以太网扩展板的 Arduino Uno. 发送很多HTTP请求后,client.println(...),客户端开始连接失败.失败的时间似乎是随机的,从循环中读出的序列可以在 ~1000 到 ~7000 之间变化. 该错误与以太网传输缓冲区溢出无关(遵循此建议) 这是失败的代码: #include #include //网络常量字节 mac[] = {0x00
..
我在查看 Atmel 网站上的文档时发现了这个示例 在那里他们解释了重新排序的一些问题. 示例代码如下: #define cli() __asm volatile( "cli" ::: "memory" )#define sei() __asm volatile( "sei" ::: "memory" )无符号整数 ivar;void test2( unsigned int val ){v
..
我之前的问题,Android 无法使用 AVRDUDE 与 Arduino 通话,已解决.我现在可以将我的 Nexus 7 连接到我的 Arduino Uno.我正在运行的完整命令是: /system/xbin/su(在这里获取root权限)/data/data/jackpal.androidterm/local/bin/avrdude -F -V -c arduino -p ATMEGA328
..
最近对硬件编程很感兴趣,但还没开始. 我做了一些搜索工作,有一个模糊的想法: Arduino 是两种芯片的组合和面包板. AVR是单芯片,需要买一个面包板开始. 那句话是真是假? 解决方案 AVR 只是一个集成电路微芯片,由 Atmel 制造.它看起来像这样: 虽然可以自己使用,但是需要一些硬件经验和一些支持组件. Arduino 是一种运行特殊代码的 AV
..
是否可以让 Google Protocol_Buffers 在 Arduino 中工作? 我已经尝试了大约一个星期,但无法让它工作,我想知道它是否可能. 解决方案 这应该适合 Arduino:https://github.com/nanopb/nanopb
..
我正在开发一个 Arduino 库,它将最大限度地延长 AVR 的 EEPROM 的使用寿命.它需要您要存储的变量数量并完成其余的工作.这是我的尝试,并不适用于所有情况. 背景信息 Atmel 表示,每个存储单元的额定写入/擦除周期为 100,000 次.他们还提供了应用说明,其中描述了如何进行磨损均衡.以下是应用笔记的摘要. 通过在两个内存地址之间交替写入,我们可以将擦除/写入
..
谁能解释一下 语言 表示取消引用它是“未定义的行为",但在简单的微控制器世界中,它通常具有非常明确的效果. ATmega 引导加载程序 通常,在复位时,AVR 的程序计数器 (PC) 被初始化为 0,因此微控制器开始在地址 0 处执行代码. 但是,如果设置了引导复位熔丝(“BOOTRST"),则程序计数器将被初始化为内存上端块的地址(该地址取决于熔丝的设置方式,有关详细信息,请参
..