AVR通用Bootloader折腾记

DevLabs Post in 未分类
0

 

最近做一个新东西, 正好手边有ATMega128的芯片, 资源也足够用, 于是决定就用它了. 考虑到以后PCB会装到外壳中, 导致软件升级困难, 而正好在电路中会用到蓝牙串口, 于是决定使用串口更新程序. 于是乎在网上找到”AVR通用Bootloader“, 打算折腾一番.

不得不说作者很牛X, 考虑的也很周到, 特意制作了一个兼下载与图形化配置的软件, 直接生成配置头文件, 和编辑的批处理文件, 相当方便, 所以这一部分很简单, 配置了一下, 编译, 然后使用ISP下载到MCU中, 嗯,[......]

全文

枚举类型到底是什么类型?

DevLabs Post in C语言,Tags:
0

 

枚举类型做为一种可以让用户自定义有限集合常量的方法, 在程序中很常用. 比如:

typedef enum
{
red,
blue,
black,
white,
} color_t;

上面我们自定义了color_t类型, 此类型的值可为red, blue, black, white之一. 如果按照默认, 那么red的值为0, blue的值为1….依次类推.

我也亦可如此定义:

typedef enum
{
red = 10,
blue,
black,[......]

全文

4-20mA电流转换电路分析.

DevLabs Post in 电路仿真,Tags:
0

电路如下:

image

输入-输出曲线图:

image

红色的是0-2.5V输入曲线, 绿色的是电流输出曲线. 因为重新设置了标尺, 所以在图中红色的曲线被覆盖掉了, 同时也可以看出来, 电路的线性非常好.

电路其实不复杂, U1进行电压-电压转换, U2进行电压-电流转换, 这里关键是要研究一下D1和D2是如何改变电路的线性的.

这个电路可以分为两个部分, 先看第一部分, 电压-电压转换.

PartA

这一部分的核心是一个由U1和M1组成的恒流源, 其中R2是采样电阻, R3是固定负载. 其中I(R3) = I(R2) = V1 / R2.
V[......]

全文

在C语言中将布尔值TRUE定义为1是不是很危险?

DevLabs Post in C语言,Tags: ,
0

(本文转自 “你必须知道的495个C语言问题”)

因为在 C 语言中所有的非零值都被看作 “真 ”, 是不是把 TRUE 定 义为 1 很危险?如果某个内置的函数或关系操作符 “返回” 不是 1 的 其它值怎么办?

C 语言中的确任何非零值都都被看作真, 但这仅限于 “输入”, 也就是说, 仅限 于需要布尔值的地方。内建操作符生成布尔值时, 可以保证为 1 或 0。因此, 这样 的测试

if((a == b) == TRUE)

能如愿运行 (只要 TRUE 为 1), 但显然这很傻。事实上, 跟 TRUE 和 FA[......]

全文

Vim 一句话技巧

DevLabs Post in 未分类
0

在Vim中,按Ctrl + a可以将光标处的数字加1,Ctrl + x 可将光标处的数字减1.

在Windows中,Ctrl + a 被映射为全选,可以修改Vim安装目录下的mswin.vim,将相关映射去掉。

在一个字符上按 ga ,可以显示此字符的编码。

使用verbose可以显示选项值并告诉你上次是在那里设置,比如 :verbose set tw

Vim就会告诉你上最后一次设置是在那个地方.

用两个低位数的DA合成高位数的DA

DevLabs Post in 电路仿真,Tags:
0

用两个低位数的DA合成一个高位数的DA是很有意思的事情, 比如你有一个双通道12位DA, 合成之后就可以当作24位DA来用, 至少听起来还是蛮有诱惑力的, 实际做起来嘛….这个我也不知道, 反正我知道有人做过, 效果还不差. 我的万用表是3位半的, 也借不到更高级的东西, 所以玩是没得玩了, 只能研究一个怎么实现, 仿真一下过过瘾.

基础

合成的基础就是利用两个电阻做加法运算, 然后再运放缓冲输出(实际上就是加法器). 下面我们不使用有源器件, 先从两个电阻开始.

1

V1和V2是输入, Vout是输出.

V1的[......]

全文