本帖最后由 纪国圣 于 2020-12-20 14:03 编辑
AVR-BLE开发板板载一颗IIC通讯总线、±1℃精度的温度传感器MCP9844。本帖主要实现ATmega3208的IIC使用和MCP9844温度的读取。
首先新建工程
点击MCC图标,选择保存路径
设置时钟为最大值
选择TWI0外设(应该直接称为IIC比较合理)
根据手册配置IIC
同时配置UART2,这里就不展开描述了。
点击Generate,生成代码。
打开MCP9844的数据手册,翻到P22有关TA描述
P24-25有关ID的描述
P26有关分辨率的读写
于是仿此编写代码
运行后发现读不出数据。。。。。。
结果检查发现IIC配置的时钟和实际时钟差别过大,估计就是这里的配置有问题。于是降低系统的整体的时钟。
可以看到IIC时钟设置值和实际值相符。
编译下载,运行正常。
顺便吐槽一下Printf函数,输出浮点数居然是乱码,调了半天也没找到原因,只能输一个整点数凑合着看数据。
源程序和MCP9844数据手册如下:
MCP9844.zip
(243.18 KB)
MCP9844.pdf
(600.92 KB)
|
不错不错,详细。。。