问题标签 [atmel-uc3]

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 投票
0 回答
527 浏览

firmware - 用于在 Atmel UC3 平台上进行固件开发的系统设计文档模板

是否有任何机构拥有或知道任何网站,我可以在其中获得用于 Atmel UC3 平台的固件开发项目的系统设计文档模板?

0 投票
1 回答
932 浏览

atmel - Atmel UC3 - 如何获取序列号?

每个 Atmel UC3 显然都有一个唯一的序列号。有谁知道我如何在软件中检索它?

0 投票
3 回答
3905 浏览

c - C 未定义的引用

我有以下代码:

主程序

校验和.c

校验和.h

编译时出现以下错误:

我无法弄清楚问题是什么?

0 投票
1 回答
303 浏览

c# - AVR32 UC3 USB 数据丢失在 cdc 设备模式

我需要通过 USB 将数据从 AT32 UC3 微控制器 ADC 传输到 PC。我检查了填充缓冲区的 MCU 中 ADC 和 PDCA 的工作,它工作得很好,没有数据丢失。但是当我从 USB 发送数据时,一些字节会丢失。我不知道,为什么会这样。我编写简单的程序将一些数据从 MCU 发送到 PC 并检查这些数据。在 MCU 中,我用 0,1,2.. 到 255 的数字连续填充缓冲区,然后通过 USB 将缓冲区发送到 PC,并检查该缓冲区的内容。因此,有些数字与原始数据不同。一些字节丢失。我在 CDC 设备模式下使用 EVK1100。

AVR 代码:

C#代码:

我的 C# 程序的输出是:

数据丢失。n =257 我=31

数据丢失。n=385 我=31

数据丢失。n =641 我=31

数据丢失。n =257 i=31 等等。

请帮我解决问题。

0 投票
2 回答
1092 浏览

embedded - Atmel Studio: How exacly do data breakpoints trigger?

OK folks. I set a Data Breakpoint in Atmel studio (With ICEmk2-JTag Debugger) and it won't get hit although the value at the address is changed. (I checked it with following breakpoints) Why is this?

The whole purpose of Data breakpoints is to detect a change of the value at the address, or am I misunderstanding something?

To be more specific: I have a Pointer A that points to a value. But the pointer A is changed (not the value it points to!) by a bug I'm trying to hunt down. So, I created a pointer B that points to the address where pointer A is stored and set a Data Breakpoint on Pointer B. Here is the initialization:

Or another way to put it; Is a databreakpoint triggered if:

  1. the content of the address is written by a array overflow?
  2. the content of the address is interpreted as part of a larger data structure that is somehow written by a rogue pointer? (expl: a 64 bit pointer is dereferenced and written to, as a result a 32bit integer gets overwritten)

Your suspections and advice are highly appreciated :)

0 投票
1 回答
50 浏览

c - Atmelstudio UC3C AVR32 - 框架对象在内存中的错误位置?

在设置 CAN 传输期间,指针被损坏(它从有效的 0x00000bd0 变为超出我的 RAM 范围的 0x84520000)。该指针也与 CAN 活动无关。损坏的原因是,在指针的地址上写入了 union64。这个 union64 属于 CANIF 对象(来自 ASF),在源代码中损坏发生在这里:

我的问题是,为什么“数据”的内存分配在与我的指针相同的地址? 或者这是一个错误的结论?

在下面的截图中,第一个是函数执行之前,最后一个是执行之后。“msg”的内容是 0x8452000000000000。损坏的指针 A 的内容应该是 0x00000bd0,因为它是在损坏发生之前。指针 A 后面的 32Bit 整数是指针 B,指针 B 指向指针 A,因此其未损坏的内容为 0x00000004(如屏幕截图所示)。

腐败前的记忆

损坏后的内存

我不知道这是不是有用的信息:根据数据表,CANIF 寄存器位于内存地址 0xFFFD1C00。

更新:这是破坏指针的汇编级代码:

//CANIF_mob_get_ptr_data(ACTIVECHANNEL,0)->data = (Union64)msg;

0 投票
2 回答
96 浏览

c++ - 用户页面 NVRAM 使用后奇怪的 UC3 重置行为

我最近需要在AT32UC3L0256的 build NVRAM/EEPROM 中使用来存储一些配置数据。我终于设法使用 MCU 的用户页面 NVRAM(经过几天的反复试验和诅咒 GCC 忽略noinit指令以及像往常一样修复和解决 ASF 中的错误)到这样的东西:

为了能够写入完整的 512 字节,我必须进行更新flashcdw.c,flashcdw.h,因为旧 ASF 确实编程了最多 256 字节,但擦除了整个页面,弄得一团糟。ASF 3.48.0.98我还必须存储整个页面(而不是因为擦除而只存储 8 个字节),并且像往常一样由于 ASF 错误,我需要按原样进行操作,而不是只调用flashcdw_memcpy一次...

它现在可以工作,但我发现某些地址会导致奇怪的行为。当0xFF不在某个地址上时,设备将不再正常复位(但在复位运行正常之前仍然如此)。在非引导加载程序重置时,它会启动固件代码,但在几次之后[ms]它会再次重置,这会永远持续下去。要清楚 RESET 发生在这部分代码中(在我的情况下):

配置系统后 LED 会简单闪烁(PLL CPU 时钟、配置的定时器和 ISR,但仍禁用中断)。LED 应闪烁几次(PLL 以正确的速度工作)但在循环完成之前发生复位。等待很简单:

更奇怪的是,如果我启动引导加载程序然后再次正常重置,设备正在正确重置并且固件再次工作(没有任何擦除/编程)但是如果我再次正常重置,重置循环再次发生......

如果我.userpage使用 BatchISP(翻转)将 NVRAM 重新编程回原始状态,则芯片会再次正常工作。

所以最后的问题:

  1. NVRAM 的用户页中的哪些地址会导致此问题或应保留/避免更改?

    我知道最后 8 个字节是引导加载程序配置。我怀疑有问题的地址是前 16 个字节。应该用于用户数据并且.userpage不包含保险丝。

  2. 怎么了?

    它是某种看门狗还是什么?我以为那些是存放在其他地方的保险丝。我在数据表中看不到任何内容。

这里是原始的十六进制.userpage

我使用这些(翻转命令)来获取和恢复它:

有问题的引导加载程序是 USART 版本:1.0.2 并且具有此行为的固件使用PLL、TC、GPIO、PWMA、ADC模块,但是在任何 ISR 和/或 ADC、PWMA、TC 使用之前发生复位。

[Edit1] 看门狗

据此,NVRAM 中第一个字.userpage是看门狗的保险丝,它解释了在ms将数据修复为原始值并禁用 复位WDT停止后几次复位。然而,现在不是启动程序而是启动了引导加载程序,所以仍然有一些可疑的东西。Bootloader 管脚选择在最后 8 字节

我还查看了 USART Bootloader ver: 1.0.2 源代码,发现它们正在使用FLASHC而不是FLASHCDW强制启动看门狗(这可能会重置其状态并使我的程序以某种方式再次运行)。

[Edit2] 错误隔离

我终于发现问题是由写入 512 字节的最后一个 32 位字引起的.userpage

这是一个巨大的问题,因为为了正确存储数据,我必须使用擦除来擦除整个页面,无论如何,为了仍然能够正确引导到引导加载程序或我的固件,我必须恢复引导加载程序配置数据:

我需要找到一种解决方法,如何将芯片恢复到功能状态。也许从引导加载程序复制看门狗重置(但这在我的应用程序中会非常有问题,甚至有风险),因为即使没有任何闪烁,它也会恢复芯片......

所以现在映射:

[Edit3] 解决方法

我设法成功地写入/读取程序存储器闪存(用 BatchISP 和 MCU 本身检查)它也可以正常启动。

这里的代码我用以下代码进行测试:

flash_adr找到的地址与签名匹配的地址在哪里buf[]......(我在 LCD 上打印它,所以我看看它是否符合我的预期),它终于做到了:)。所以我将使用它而不是.userpage.

然而,.userpage引导问题修复仍然是悬而未决的问题