求助!avr mega128 不能 读 pcf8563
现在读不了字节 ,也不知写没写进去
网上查说: 晶振没起振也读不了。
我量OSCI 管脚电压才0.12V ;OSCO管脚 0.44V
这样应该不正常吧?
大侠们请帮小弟看看! 谢谢!
原理图
下图是我用示波器打出来的图像

大侠们帮小弟看看!
代码:
void T_I2C_Start()//定义I2C起始条件产生
{
T_OUT_SDA;//设置SDA为输出口
T_S_SDA; //SDA管脚输出高电平
T_I2C_Delay(5);//延迟一点时间
T_S_SCL; //SCL管脚输出高电平
T_I2C_Delay(5);//延迟一点时间
T_C_SDA; //SDA管脚输出低电平
T_I2C_Delay(5);//延迟一点时间
T_C_SCL; //SCL管脚输出低电平
T_I2C_Delay(5);//延迟一点时间
}
void T_I2C_Stop() //定义I2C终止条件产生
{
T_OUT_SDA;//设置SDA为输出口
T_C_SDA; //SDA管脚输出低电平
T_I2C_Delay(5);//延迟一点时间
T_S_SCL; //SCL管脚输出高电平
T_I2C_Delay(5);//延迟一点时间
T_S_SDA; //SDA管脚输出高电平
T_I2C_Delay(5);//延迟一点时间
T_C_SCL; //SCL管脚输出低电平
}
void T_I2C_TxByte(char ch)//定义写字节函数
{//数据发送顺序是从高到低位发送的
int i;
T_OUT_SDA;//设置SDA为输出口
T_C_SCL;
T_I2C_Delay(1);////延迟一点时间
for(i=8; i>0; i--)
{
if((ch & 0x80) == 0x80)//依次取最高位,并输出到数据输出管脚
{
T_S_SDA; //SDA管脚输出高电平
}
else
{
T_C_SDA; //SDA管脚输出低电平
}
ch <<=1; //左移发送下一位
T_S_SCL; //置高电平,确认数据
T_I2C_Delay(5);//延迟一点时间
T_C_SCL;
T_I2C_Delay(5);
}
T_I2C_Delay(5);//延迟一点时间
T_I2C_GetACK();
}
char T_I2C_RxByte()//定义读字节函数
{//从低位到高位的顺序接收
char ch=0;
int i;
T_IN_SDA;//定义SDA为输入口
//T_I2C_Delay(5);//延迟一点时间
for(i=8; i>0; i--)
{
T_C_SCL;
T_I2C_Delay(5);//延迟一点时间
T_S_SCL;
T_I2C_Delay(5);//延迟一点时间
ch = ch<<1;
if(T_R_SDA)
{
ch++;
}
}
T_C_SCL;
T_I2C_Delay(5);//延迟一点时间
return(ch);
}
char T_I2C_GetACK() //定义确认函数
{
char ch;
//T_OUT_SDA;//设置SDA为输出口
//T_I2C_Delay(8);//延迟一点时间
T_C_SCL; //SCL管脚输出低电平
T_S_SDA; //SDA管脚输出高电平
T_I2C_Delay(5);//延迟一点时间
T_S_SCL; //SCL管脚输出高电平
T_IN_SDA;//定义SDA为输入口
T_I2C_Delay(5);//延迟一点时间
ch = (T_R_SDA);//读SDA
int i=0;
while(ch!=0)
{
ch = (T_R_SDA);
if((i++) > 250) break;
}
T_C_SCL; //SCL管脚输出低电平
T_I2C_Delay(5);//延迟一点时间
return(ch);
}
void T_I2C_Write(char nAddr,char ch)//定义写字节操作
{
T_I2C_Start();
T_I2C_TxByte(0x0A2);//发写命令
T_I2C_TxByte(nAddr);// 发送地址
T_I2C_TxByte(ch);// 发送字节
T_I2C_Stop();
}
char T_I2C_Read(char nAddr)//定义读字节操作
{
char ch;
T_I2C_Start();
T_I2C_TxByte(0x0A2);//发写命令
T_I2C_TxByte(nAddr);// 发送地址
T_I2C_Start();
T_I2C_TxByte(0x0A3);//发读命令
ch = T_I2C_RxByte();
T_I2C_Stop();
return(ch);
} 相关推荐
PCF8563源程序与2402
这是一个AVRMEGA128操作PCF8563的源程序
AVR-atmega128开发板原理图
AVR-atmega128开发板原理图 以ATmega128单片机为主线,详细介绍AVR高档MEGA系列单片机的硬件结构、各种外围接口电路的特点和性能,并在此基础上介绍各种应用单元模块电路,如电动机模块、传感器模块、显示模块和音频输出模块等。
通信行业基于MongoDB的安全合规与性能优化:5G时序数据处理、可查询加密及窗口函数应用
内容概要:本文围绕MongoDB在通信行业的深度应用,系统讲解了可查询加密、时间序列集合、窗口函数与性能诊断四大核心技术。通过详实的代码案例,展示了如何利用可查询加密实现敏感数据合规存储与查询,使用时序集合高效处理5G网络KPI等高频写入场景,借助窗口函数进行经营指标的趋势分析,并结合explain()与查询分析器完成性能调优。文章还涵盖分片一致性检查、索引优化等运维实践,全面覆盖通信系统对安全、性能与扩展性的严苛要求。; 适合人群:具备一定数据库基础,从事通信行业研发、架构或运维工作1-3年的技术人员,尤其是参与5G网络监控、客户数据管理或大数据平台建设的相关人员。; 使用场景及目标:① 实现用户手机号、身份证等敏感信息的加密存储与等值查询,满足安全合规要求;② 构建高吞吐、低延迟的5G基站KPI时序数据存储与分析系统;③ 在数据库层直接完成滑动平均、累计求和等经营分析,减少应用层计算负担;④ 诊断慢查询、验证索引有效性,保障系统高性能运行。; 阅读建议:此资源强调理论与实战结合,建议读者在本地或测试环境部署MongoDB 7.0+版本,动手复现文中代码,重点关注schemaMap配置、时序集合参数选择与窗口函数语法细节,并结合explain执行计划理解底层优化机制,从而真正掌握通信级数据架构的设计精髓。
国央企创新负责人如何借助平台实现技术成果的高价值转化与资源精准配置?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
产业园区运营负责人如何在平台建设中科学配置创新资源,提升园区内技术对接效率?.docx
产业园区运营负责人如何在平台建设中科学配置创新资源,提升园区内技术对接效率?


单片机/工控
