修订历史 | ||
---|---|---|
修订 44 | 2009-04-20 17:13:07 | 修订者:jdd |
应作者要求,混淆电子邮件地址 | ||
修订 43 | 2009-03-29 20:49:12 | 修订者:ranjeeth |
修订 42 | 2009-03-29 20:45:09 | 修订者:jdd |
出版后还原 | ||
修订 41 | 2009-03-29 20:41:59 | 修订者:jdd |
编辑以导出 docbook | ||
修订 40 | 2009-03-28 21:07:57 | 修订者:RickMoen |
根据作者的原始偏好调整 mailto 链接的样式。 | ||
修订 39 | 2009-03-28 21:05:45 | 修订者:RickMoen |
还原电子邮件混淆,补充一些缺失的标点符号,[重新]修复大小写,修复并澄清新的冗长句子。 | ||
修订 38 | 2009-03-23 18:21:24 | 修订者:ranjeeth |
修订 37 | 2009-03-23 18:19:51 | 修订者:ranjeeth |
修订 36 | 2009-03-23 17:20:32 | 修订者:ranjeeth |
修订 35 | 2009-03-23 17:19:47 | 修订者:ranjeeth |
修订 34 | 2009-03-23 10:26:00 | 修订者:jdd |
发布测试 | ||
修订 33 | 2009-03-23 10:25:06 | 修订者:jdd |
修订 32 | 2009-03-23 10:24:24 | 修订者:jdd |
使用宏来混淆电子邮件 | ||
修订 31 | 2009-03-23 10:11:47 | 修订者:jdd |
更改仅是为了导出不带警告的 docbook | ||
修订 30 | 2009-03-23 10:09:15 | 修订者:jdd |
修订 29 | 2009-03-23 10:05:07 | 修订者:jdd |
修订 28 | 2009-03-23 09:58:40 | 修订者:jdd |
添加 wiki 作为链接 | ||
修订 27 | 2009-03-23 09:53:28 | 修订者:RickMoen |
在 “pin9”、“pin10”、“pin25” 结构中插入所需的空格字符 | ||
修订 26 | 2009-03-23 09:49:05 | 修订者:RickMoen |
使提及的所有软件项目的标记保持一致 | ||
修订 25 | 2009-03-23 09:43:40 | 修订者:RickMoen |
删除几个多余的逗号。 | ||
修订 24 | 2009-03-23 09:41:30 | 修订者:RickMoen |
润色一些最后的标点符号 | ||
修订 23 | 2009-03-23 04:11:31 | 修订者:ranjeeth |
修订 22 | 2009-03-23 04:10:34 | 修订者:ranjeeth |
修订 21 | 2009-03-23 04:09:07 | 修订者:ranjeeth |
修订 20 | 2009-03-17 16:20:27 | 修订者:ranjeeth |
修订 19 | 2009-03-17 16:18:33 | 修订者:ranjeeth |
修订 18 | 2009-03-16 19:10:30 | 修订者:RickMoen |
修复超链接,修复新句子的英语措辞。 | ||
修订 17 | 2009-03-16 18:50:19 | 修订者:ranjeeth |
修订 16 | 2009-03-16 11:36:49 | 修订者:RickMoen |
一些标点符号的小问题 | ||
修订 15 | 2009-03-16 11:21:14 | 修订者:RickMoen |
修正了许多冗长的句子、标点符号和语法错误,以及有问题的习语。 | ||
修订 14 | 2009-03-15 10:27:24 | 修订者:BordenRhodes |
清理了基本语法和拼写 | ||
修订 13 | 2009-03-15 09:52:41 | 修订者:jdd |
修订 12 | 2009-03-15 09:51:37 | 修订者:jdd |
添加 avr-libc 手册的链接 | ||
修订 11 | 2009-03-14 21:47:18 | 修订者:jdd |
基本转换结束 | ||
修订 10 | 2009-03-14 21:40:18 | 修订者:jdd |
修订 9 | 2009-03-14 21:39:26 | 修订者:jdd |
修订 8 | 2009-03-14 21:33:04 | 修订者:jdd |
添加图像 | ||
修订 7 | 2009-03-14 21:27:59 | 修订者:jdd |
修订 6 | 2009-03-14 21:26:48 | 修订者:jdd |
修订 5 | 2009-03-14 21:25:13 | 修订者:jdd |
第一步 - 由 jdd 进行 html 转换和基本格式编辑 | ||
修订 4 | 2009-03-14 21:22:37 | 修订者:jdd |
修订 3 | 2009-03-14 21:18:25 | 修订者:jdd |
修订 2 | 2009-03-14 21:13:09 | 修订者:jdd |
修订 1 | 2009-03-14 21:10:33 | 修订者:jdd |
Linux 下的 AVR 微控制器 HOWTO,版权 (C) 2009 Ranjeeth p t (ranjeeth_gecmail[at]yahoo[dot]com)
本 HOWTO 适用于希望使用 GNU/Linux 机器编程 AVR 微控制器的读者。 为了烧录您的代码,我们将使用并行端口。 您可能需要其他电子元件(如一些电阻器、电容器、并行端口连接器等),这些元件可以从任何电子商店购买。
Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2, or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". |
微控制器是单芯片计算机。 它具有内部 RAM、ROM、定时器、计数器、中断电路、I/O 端口、模拟比较器、串行 USART、模数转换器、看门狗定时器和 RISC 架构。 当您使用微处理器时,不能单独对其进行编程。 您需要其他组件,如 RAM、ROM、定时器等。 对于编程,您应该彻底了解其架构:您必须阅读微控制器的数据手册。
binutils: 汇编器、链接器等工具。
gcc-avr: GNU C 编译器(avr 的交叉编译器)。
avr-libc: AVR C 库的软件包,包含许多实用程序函数。
uisp: 用于 Atmel AVR MCU 的微型系统内编程器(用于将代码烧录到 MCU 的内存中)。
以下 Atmel 微控制器在 Linux 中受 avr-gcc 支持
at90s 类型设备
at90s2313, at90s2323, at90s2333, at90s2343, at90s4414, at90s4433, at90s4434, at90s8515, at90s8515, at90s8515, at90s8535, at90s1200。
atmega 类型设备
atmega103, atmega603, atmega8, atmega48, atmega88, atmega8515, atmega8535, atmega16, atmega161, atmega162, atmega163, atmega165, atmega168, atmega169, atmega32, atmega323, atmega325, atmega3250, atmega64, atmega645, atmega6450, atmega128。
attiny 类型设备
attiny22, attiny26, attiny26, attiny13, attiny13, attiny13, attiny13, attiny2313, attiny11, attiny12, attiny15, attiny28。
其他 AVR 设备
avr2, at90c8534, at86rf401, avr3, at43usb320, at43usb355, at76c711, avr4, avr5, at90can128, at94k, avr1。
binutils: 用于操作可能为 Atmel AVR 架构创建的二进制文件和目标文件的程序。 此软件包主要面向 AVR 开发人员和交叉编译器。
gcc-avr: GNU C 编译器,一种相当便携的优化编译器,支持多种语言。 此软件包包含 C 语言支持。
avr-libc: 用于为 Atmel AVR 微控制器开发 C 程序的标准库。 此软件包包含静态库以及所需的头文件。
uisp: 用于使用 gcc-avr 创建的目标代码对 AVR 芯片进行编程的实用程序。 它支持系统内编程。
您可以下载上述软件包,解压、配置和安装它。 如果您使用的是 Debian 或 Ubuntu,这些软件包在您的发行版中可用:使用 apt 或 synaptic 包管理器安装它们。
我们正在为 atmega8 微控制器编写 hello world,它具有 28 引脚、8 位 RISC 架构。
在继续之前,请查看关于 __avr-libc__ 的本手册,这将帮助您更好地编程和理解。 此外,请参阅各种 AVR 微控制器的数据手册。
这是我们的第一个程序
/* ledblink.c, an LED blinking program */ #include<avr/io.h> #include<util/delay.h> void sleep(uint8_t millisec) { while(millisec) { _delay_ms(1);/* 1 ms delay */ millisec--; } } main() { DDRC |=1<<PC2; /* PC2 will now be the output pin */ while(1) { PORTC &= ~(1<<PC2);/* PC2 LOW */ sleep(100);/* 100 ms delay */ PORTC |=(1<<PC2); /* PC2 HIGH */ sleep(100);/* 100 ms delay */ } } |
用于 Atmel 系列的 GNU C 编译器使用有意义的名称标识微控制器内的所有功能单元。 因此,编写“PORTC=0xff”将导致编译器生成机器代码,将 0xff 写入 I/O 端口 C,这将将所有端口 C 引脚设置为逻辑高电平。 由于端口是双向的,我们必须决定每个引脚应充当输入还是输出。 如果名为 DDRC(数据方向寄存器 C)的寄存器的第 i 位为 1,则 PORTC 的第 i 个引脚的第 i 个引脚将为输出。 否则,它将充当输入引脚。 (请注意,引脚和位编号从零开始。)要使 LED 闪烁,您必须先使引脚为高电平,然后再为低电平。 (在这里,我们使用 PORTC 的第 2 个端口。也就是说,PC2 将是第 25 个引脚。)两者之间应该有延迟。 这就是代码其余部分的作用。 对于延迟,我们使用内置函数 _delay_ms(1),它会导致 1 毫秒的延迟。
avr-gcc -mmcu=atmega8 Os ledblink.c o ledblink.o |
这将生成目标文件 ledblink.o。 现在,我们将把它转换为 hex 文件,适合烧录到微控制器的内存中。
avr-objcopy -j .text -j .data -O ihex ledblink.o ledblink.hex |
我们将其转换为 hex 文件是因为,为了将代码烧录到 atmega8,我们将使用 uisp,其输入文件必须是 .hex 文件。
请注意,您可以使用 less 命令查看 ledblink.hex 文件。
:1000000012C02BC02AC029C028C027C026C025C0C6 :1000100024C023C022C021C020C01FC01EC01DC0DC :100020001CC01BC01AC011241FBECFE5D4E0DEBF28 :10003000CDBF10E0A0E6B0E0EAE8F0E002C0059035 :100040000D92A036B107D9F710E0A0E6B0E001C0EC :100050001D92A036B107E1F70CC0D2CF282FE4ECF7 :10006000F9E004C0CF010197F1F721502223D1F725 :100070000895CFE5D4E0DEBFCDBFA29AAA9884E66A :0A008000EDDFAA9A84E6EADFF9CF6B :00000001FF |
我们将使用并行端口进行烧录。 首先,我们必须为其开发一个烧录电路。
这是 atmega8 微控制器的电路。 引脚 9 和引脚 10 通过 4 MHz 晶体振荡器连接,这是外部时钟。 右下角的连接器用于并行端口。
如果您使用上述任何其他微控制器,您应该进行相应的更改。 }}}
您应该注意 RESET,XTAL1,XTAL2,SCK,MISO,MOSI 引脚, 并连接。
现在,我们将 ledblink.hex 烧录到微控制器。
uisp -dprog=dapa -dlpt=0x378 |
您应该收到消息 找到 Atmega8。
dprog 是编程方法说明符,在本例中是 dapa,即直接 AVR 并行访问。 dlpt 用于并行设备设置,即 0x378,并行端口的设备地址。
uisp -dprog=dapa -dlpt=0x378 --erase |
将擦除微控制器的代码。
uisp -dprog=dapa -dlpt=0x378 --upload if=ledblink.hex |
将上传输入文件 ledblink.hex
请注意,您可以看到引脚 25 处的 LED 闪烁。
评论请发送至:mailto:ranjeeth_gecmail[at]yahoo[dot]com
Govt Engg College Sreekrishnapuram,
Palakkad,Kerala India.