最近在做一个小玩意,因为第一个DEMO是在Arduino Pro Mini上完成的,使用各种模块用漆包线连接搭起来的,决定还是继续在使用Arduino框架的基础上制作完整的PCB板。
在选购单片机芯片时,发现ATMEGA168P 比 ATMEGA328P便宜一些,在Arduino IDE上似乎可以支持,IDE芯片选型上有ATMEGA168的选项,虽然DEMO是基于ATMEGA328P的,但是Arduino上更换芯片,程序并不需要进行修改,于是就购买了ATMEGA168P,(真是给自己挖了个坑)。
芯片到了以后,因为Arduino程序一般是串口下载的,我画的PCB板上也只留了串口的接口(其实是可以使用ISP下载的,使用11、12、13引脚下载,但是PCB上我没有留出接口)。
和直接购买的ProMini最小系统板不同的是,购买的开发板商家都会先帮你烧录好BootLoader,这样才可以直接用串口下载,但是购买的芯片的话,是没有烧录任何东西的。
为了下载程序方便(使用串口下载),第一步就是给芯片刷BOOTLOADER,也就是IDE上所说的引导程序,我以为用Arduino as ISP(用另一块Arduino作为ISP下载器)下载就可以了,但是始终下载不了,原因是当我在IDE上选择的是ATMEGA168,它的特征字(signature)是1E:94:06,而我使用的是ATMEGA168P,它的特征字是1E:94:0B,所以ISP下载会失败。
在网上查了一会,要通过修改boards文件,根据实际的特征字,在IDE中添加开发板,尝试了几个小时,Arduino IDE被我改的乱七八糟,虽然不会出现特征字不符的错误提示了,等待十几秒后还是下载失败。于是放弃。
芯片型号 -> 特征字
ATMEGA328P -> 1E:95:0F
ATMEGA168 -> 1E:94:06
ATMEGA168P -> 1E:94:0B
购买了USBISP,使用AVR_FIGHTER。
ISP接口定义
先读取特征字,能读取到正确的值,确定芯片和晶振焊接没有问题。
出现提示,不用理会,因为这个软件的芯片选择里本来就没有168P这个芯片,把能读取的都读取一遍,以再次确认一下连接有没有问题,需要注意的是不要手滑点到了写入,写入错误的值可能会锁芯片。
芯片默认的熔丝位是:低位0x62,高位:DF,特殊位:F9(如上图)。
我们要设置成FF,DD,00
接着就是烧录BOOTLOADER,装FLASH->选择ATmegaBOOT_168_diecimila.hex ->芯片编程
以我装在D盘的IDE为例,文件在D:Program Files (x86)Arduinohardwarearduinoavrbootloadersatmega
等待编程和校验完成。
如果烧录成功的话,在13引脚的LED灯会每隔1s闪烁一下。
使用串口下载Blink程序,成功。
注意复位电路,单片机RESET引脚应接一个10K电阻上拉,再接一个0.1u电容到USB转串口的RTS接口上(即DTR连接到RTS),以实现下载程序时自动复位。
关键字:Arduino ATMEGA 168P
引用地址:
使Arduino支持ATMEGA 168P(烧录BOOTLOADER)
推荐阅读最新更新时间:2024-11-13 01:35
基于Atmega128单片机设计的嵌入式控制器
采用Atmega128单片机设计的嵌入式控制器,模拟量输入通道用Atmega128片内A/D转换器,输出用AD421 D/A转换器,数字量I/O通道配置高速先耦器件.用LCCavr编译器修改OSTaskStklnit()函数及其相关文件,定义数据类型等以实现MICroC/OS-Ⅱ的移植. 1 引言 嵌入式控制器是机电设备实现自动化的核心部件。故以大型机电设备为控制对象,利用高性能Atmega 128微处理器, 设计了具有现场总线(CANBUS)网络通信和一定通用性的多功能嵌入式智能控制器。 2 硬件设计 系统的硬件结构如图1。 本控制器的核心采用64管脚TQFP封装的Atmega128芯片,具有53个可编程的I/O引脚,
[单片机]
Atmega16单片机和51单片机有何区别?从软硬件两方面分析
1. Atmega16单片机简介 今天我们的主题是单片机,说道单片机你可能最先想到的是51单片机,然后通过外接的数字电路和模拟电路来控制外围的硬件,比如PWM,ADC,I2C等等。那么今天我们所说的是什么那?其实你把Atmega16单片机当成51单片机来使用即可,只不过是Atmega16单片机的外围接口更丰富,那么它都有什么外设资源那? ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器,由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz。ATmega16常用片上资源有定时器、PWM、外部中断、SPI总线、两线串行接口TWI、EEPROM、USART
[单片机]
ATmega16 通用中断控制寄存器GICR
· Bit 1 – IVSEL: 中断向量选择 当IVSEL 为 0“ 时,中断向量位于Flash 存储器的起始地址;当IVSEL 为 1“ 时,中断向量转移到Boot 区的起始地址。实际的Boot 区起始地址由熔丝位BOOTSZ 确定。具体请参考P234“ 支持引导装入程序 – 在写的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。 为了防止无意识地改变中断向量表,修改IVSEL 时需要遵照如下过程: 1. 置位中断向量修改使能位IVCE 2. 在紧接的4 个时钟周期里将需要的数据写入IVSEL,同时对IVCE 写”0” 执行上述序列时中断自动被禁止。其实,在置位IVCE 时中断就被禁止了,并一直
[单片机]
Silicon Labs与Arduino携手,推动智能家居标准Matter的普及与发展
智能家居领域正迎来一项革命性的标准——Matter。为了加速这一标准的推广和应用,知名半导体公司Silicon Labs与开源硬件平台Arduino宣布合作,共同助力开发者更高效地开发基于Matter的设备,从而缩短产品上市时间。 此次合作不仅标志着Silicon Labs在开源标准和开发方面的坚定投入,也为Arduino庞大的开发者社区(超过3300万成员)带来了福音。双方联手推出的首款Matter软件库,已针对Silicon Labs的xG24 Explorer套件和基于xG24的SparkFun Thing Plus Matter – MGM240P开发板进行了优化。开发者现在可以在Silicon Labs Device
[嵌入式]
ATmega64 指令执行时序
这一节介绍指令执行过程中的访问时序。AVR CPU 由系统时钟clkCPU 驱动。此时钟直接 来自选定的时钟源。芯片内部不对此时钟进行分频。 Figure 6 说明了由Harvard 结构决定的并行取指和指令执行,以及可以进行快速访问的寄 存器文件的概念。这是一个基本的流水线概念,性能高达1 MIPS/MHz,具有优良的性价 比、功能/ 时钟比、功能/ 功耗比。 Figure 7 演示的是寄存器文件内部访问时序。在一个时钟周期里,ALU 可以同时对两个寄 存器操作数进行操作,同时将结果保存到目的寄存器中去。
[单片机]
ATmega8 通用寄存器
寄存器文件针对AVR 增强型 RISC 指令集做了优化。为了获得需要的性能和灵活性,寄存器文件支持以下的输入/ 输出方案: • 输出一个 8 位操作数,输入一个 8 位结果。 • 输出两个 8 位位操作数,输入一个 8 位结果。 • 输出两个 8 位位操作数,输入一个 16 位结果。 • 输出一个 16 位位操作数,输入一个 16 位结果。 Figure 3 为CPU 32 个通用工作寄存器的结构。 大多数操作寄存器文件的指令都可以直接访问所有的寄存器,而且多数这样的指令的执行时间为单个时钟周期。 如Figure 3 所示,每个寄存器都有一个数据内存地址,将他们直接映射到用户数据空间的 头32 个地址。虽然寄存器文件的物理
[单片机]
Atmega162串行外设接口SPI
一、Atmega162的SPI接口基本概念与工作原理 SPI接口的全称是 Serial Peripheral Interface ,意为串行外围接口。SPI主要使用4个信号:MOSI(master in slave out)、MISO(master out slave in)、SCK(串行时钟)、CS(片选)。其中SCK由主机产生,作为传输的同步时钟,控制所有的数据传输。主机和外设都包含一个串行移位寄存器。主机通过向自己的SPI串行寄存器写入一个字节来发起一次传输,然后通过MOSI信号线将数据传给外围设备,同时外设将自己移位寄存器中的内容通过MISO信号线返给主机。这样两个移位寄存器中的内容完成交换。也就是说,外设的写操作
[单片机]
介绍基于ATmega8单片机控制的正弦波逆变电源设计
0引言 在风电行业中,经常需要在野外对风机进行维修,这时必须为各类维修工具和仪器进行供电。因此,设计一种便携式。低功耗。智能化的正弦逆变电源来为这些设备供电是十分必要的,可大大提高维修风机的效率。 本文正是基于这种情况下而设计的一种基于单片机的智能化正弦逆变电源。 1 正弦逆变电源的设计方案 本文所设计的逆变器是一种能够将DC 12V直流电转换成220V正弦交流电压,并可以提供给一般电器使用的便携式电源转换器。目前,低压小功率逆变电源已经被广泛应用于工业和民用领域。特别是在交通运输。野外测控作业。机电工程修理等无法直接使用市电之处,低压小功率逆变电源便成为必备的工具之一,它只需要具有一块功率足够的电池与它连接,
[电源管理]