【发布时间】:2015-09-02 20:52:28
【问题描述】:
我想这个问题已经被问了数千次了,我根本找不到很多关于这个主题的资源。
我想使用 Atmel Studio 和 C 语言对我的 Arduino Uno (ATmega328P) 进行编程,减去 Arduino 库。我的意思是我想编写如下代码:
int main(void) {
/* set pin 5 of PORTB for output*/
DDRB |= _BV(DDB5);
while (1) {
/* set pin 5 high to turn led on */
PORTB |= _BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);
/* set pin 5 low to turn led off */
PORTB &= ~_BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);
}
}
而不是充斥着哦,太方便了 Arduino 功能的代码。我想深入了解 Arduinos!
话虽如此,我正在寻找您可以提供的任何优秀的学习资源,以便我可以扩展我的知识!
到目前为止,我设法找到的唯一有点有用的来源是这个页面: https://hekilledmywire.wordpress.com/2010/12/04/22/
但是,图像丢失了,而且看起来很简约。
【问题讨论】:
-
github.com/dwelch67/avr_samples Atmel 通常擅长文档。从电路板开始,弄清楚你有什么风格的 avr(例如 atmega328p),然后在 atmel 搜索,出现的文档比你想阅读的要多,查找数据表、参考手册、用户指南、家庭用户指南,等等。一些供应商的数据表只为硬件人员提供了一些信息,一些包含所有编程信息,一些包含一些地址,但家庭文档涵盖了详细信息,等等。atmel 可能是那些多文档供应商之一。
-
atmel.com/devices/atmega328p.aspx 然后得到 ATmega48A/PA/88A/PA/168A/PA/328/P 完成然后在 IO 端口章节,寄存器描述部分,最终你会找到 PORTB 显示位地址为 0x05 (0x25) 的端口与指令集中的两种不同的指令/寻址模式有关 0x05 我的猜测是,如果您通过 IDE 或您正在使用的工具套件的编译器头文件进行 grep,您会发现这个端口。并了解这些地址不必对所有 avrs 都是通用的,可以从一个更改为另一个
标签: arduino avr atmega avrdude atmelstudio