问题标签 [atmelstudio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1356 浏览

c++ - 使用 Atmel Studio 作为通用 C 编译器

我正在尝试深入学习 C。我的最终目标是更倾向于 AVR 编程和硬件,所以我下载了 AtmelStudio。

我正在阅读一本 C 入门书,想知道如何在 AtmelStudio 中编写控制台程序?所有项目类型似乎都以 AVR/ARM 为重点(有道理),并要求我选择一个设备。

我可以使用 AtmelStudio 来编译简单的程序并在 cmd 窗口中运行它们吗?

0 投票
1 回答
835 浏览

windows - AVR ATMega 2560 USB 驱动程序错误

我在为 ATMega 2560 安装驱动程序时遇到问题。我从 ATMEL 网站下载了驱动程序,在安装过程中没有问题,但是一旦弹出小窗口,它就会给我一个错误,即驱动程序与 x64 操作系统不兼容,虽然我的很多同事都在使用 x64。如果您需要,我可以截取错误消息。

PS 忘了提我正在使用 x64 Windows 8.1,安装了最新的更新和 Atmel Studio 6.2.1153

0 投票
0 回答
48 浏览

c - 我的状态机中的并发滴答功能出现故障

我写代码的目的是,当我的 PINA 的第 0 位为 1 时,PORTB 上显示的数字会递增。同样,如果 PINA 的第 1 位为 1,则数字递减。如果按住按钮,它将以每秒一次的速度递增/递减。如果按钮已按住至少 3 秒,则速率将增加到每 400 毫秒一次。如果同时按下两个按钮,则 PORTB 上显示的数字将重置为 0。定时器周期设置为 100 ms。

我将状态机拆分为 2 个“同时”运行的状态机。一个 SM 调整我正在递增/递减的周期,而另一个 SM 则在等待/添加/减去/重置状态之间进行转换。

我遇到的问题是我修改周期的状态机根本没有做任何事情。我有一个全局变量来跟踪在递增/递减之前必须等待多少滴答声(初始化为 10),并且当保持在我的 Incr/Decr 状态的滴答声数量超过 30 个滴答声(3秒)。但是这台机器根本没有做任何事情。我进行了修改,以便在我的并发 SM 启动时立即永久更改为 4 个滴答声,但这仍然没有任何作用;递增/递减仍然每 1 秒而不是每 400 毫秒发生一次。

我的代码有什么问题?有问题的代码:

0 投票
2 回答
2633 浏览

microcontroller - Switch-case not works for AVR Atmega32 Microcontroller?

Hello Friends i dont know what happen neither switch-case nor if,else statement works for me i want to give some data to both PORTB & PORTD when some specific data are come to the PORTA register in my "switch block" previously i used PINA instead of PORTA but it still not works but when i start debugging and giving some data by giving PORTA=0b00001110 it easily gives values PORTB=0b00000010.... please help..

0 投票
6 回答
5264 浏览

c++ - C++ FatFs 未定义的函数引用

我有一个用 Atmel Studio 编写的代码,用于从 SD 卡读取/写入数据。我在这里使用 FatFs。我的问题是当我在 FatFs 中使用某些函数(f_chdir、f_getcwd ...)时,代码无法编译。某些功能可以正常工作(f_puts、f_open、f_mount、f_mkdir...)。所有这些函数都位于同一个头文件 (ff.h, ff.c)

错误说“对 -function- 的未定义引用,ld 返回 1 个退出状态”。当我转到错误时,它会显示代码的结尾,而它应该显示错误的位置。

我无法理解我的代码的问题。任何帮助表示赞赏。

0 投票
2 回答
360 浏览

c - C:无法在 Atmel Studios 中用 1D 阵列初始化 2D 阵列

所以我试图通过执行以下操作来创建一个二维数组:

而且我尝试这样做时遇到了大量错误:

我究竟做错了什么?

0 投票
0 回答
419 浏览

c - 带有 USART(UDRE0 位)的 Atmel Studio 6.2 模拟器

这是我第一次在这个论坛发帖,希望你能帮助我。

对于我的研究项目,我需要用 C 语言实现一个 Petri 网络执行器,以使用微控制器的所有子系统。我一直在使用 Atmel Studio 6.2 来模拟我的网络的结果。

尤其是 UART 系统,我遇到了很多问题。

这是我发送UART系统的功能。但是当我尝试将数据分配给 UDR0 时,它不会分配,因为 UDRE0 位仍然设置在 UCSR0A 寄存器中,并且模拟器不会让我关闭该位。

有什么解决办法吗?如果这是一个相当基本的问题,我深表歉意,但我尝试了所有不同类型的解决方案和模拟教程,但我似乎无法弄清楚为什么它不起作用。

0 投票
0 回答
139 浏览

c++ - 类静态指针初始化为另一个类的成员数组中设置的值

我有一个带有 uint8_t 数组作为成员变量的类。当我写入成员数组时,其他类的静态成员将被数组中的值覆盖。我通过以下方式使用这些对象:

在我的示例中,我有一个定义如下的类:

其clear功能实现如下:

我有另一个作为单例实现的类。这是按如下方式实现的:

SSD1305.h:

SSD1305.cpp:

每当我在 SSD1305Params 中调用“清除”时,写入缓冲区的值会覆盖 SSD1305 中的静态成员“实例”。因此,每当我在调用“clear”后尝试获取 SSD1305 的实例时,我都会得到一个值为 0x00000000 或 0xFFFFFFFF 的指针。因此,在我的 SSD1305 对象上调用后续函数会导致 SEGFAULT。这适用于我作为单例实现的所有对象(包括我的报告机制)。

为什么会发生这种情况?我认为当我实例化 SSD1305Params 时,缓冲区会定义自己的空间,但它似乎与其他对象的静态成员占用相同的空间。谢谢!

编辑:如果我注释掉 ssdp 的创建并检索我的 SSD1305 实例所在的位置,我发现它位于地址 0x20000030,通过查看内存映射位于名为 data.impure_data 的部分内:

到底他妈发生了什么?我以为它会在堆中?呸呸呸

编辑2:

当我通过我的报告机制(不调用 clear)检索我的对象的地址时,这些是它们的值:

所以我们可以看到缓冲区已经分配了超过 512 个字节。它实际上是 520,我猜这是因为 malloc 所做的一些填充

0 投票
1 回答
524 浏览

c++ - 如何在 AVR 中定义或创建自定义的 PORT 和 PIN?

如何定义或创建自定义PORTPIN在 AVR 中?

例如,让我们定义一个名为PORTX( PA0MSB)、PA1PB0PB1PC0PC1PD0PD1(LSB) 的新 8 位端口。因此,每当我执行以下代码时:

它将分配1PC1&PD1和其余部分0

同样,下面的代码(假设PC1&PD1上拉到5V)

将分配5myValue

0 投票
1 回答
538 浏览

c++ - 无法将 120 的值分配给 static const unsigned char 或将 200 的值分配给 const static unsigned int

我对 Arduino 之外的嵌入式 c++ 相当陌生,但到目前为止,我已经能够解决我遇到的所有问题,除了这个问题。我在 Atmega 1284P 上使用 Atmel Studio,用 C++ 编码。我正在使用以下变量与 TTL 串行输入进行比较(串行输入在 0 到 255 之间以单个无符号字符字节传输):

当我尝试使用 STEER_DEADZONE_MIN 或任何列出的无符号字符时,它们显示为 12。我已确认我的程序使用 Atmel Studio 模拟器监视工具并将其打印到嵌入式设备上的 LCD 上将其视为 12。实际上,我已经为 unsigned char 提出了一个修复方法,即删除 const,但我有 const 是有原因的,因为我不希望更改值。将其声明为:

这会导致该值正确地为 120 或 136,但随后可能会意外更改该值。似乎如果我在主循环中进行分配:

这也修复了该值,但引入了其他问题,因为我的任何函数都无法访问它。

当涉及到 const unsigned int 时,我也遇到了一个看似相关的问题。当我在主循环之外声明它时:

该值显示为 37900,但是,我尝试在主循环中将其声明为:

这更正了该值,但如上所述,没有帮助,因为我的函数不再可以访问它。在这种情况下,在主循环之外删除 const 并不能修复该值。在这一点上,我真的很茫然。在这一点上,我唯一能想到的尝试的另一件事是创建一个包含所有这些 const 变量的设置类,看看是否可以更正这些值。我将在接下来尝试并更新结果。