ATMAGE16L的串口通讯的奇怪问题。

happy0755 2010-07-08 08:33:03
我用信真器+开发板+串口调试助手调试ATMAGE16L的串口通讯功能:


#include <iom16v.h>
//#include<intrinsics.h>
#define UDRE 5
#define RXC 7

//BAUD=FOSC/(16(UBRR+1)) 异步模式 FOSC=7.3728M

/***************************************/
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x02;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x02;
}
/**************************************/
void uart0_init(void)
{
UCSRB = 0x00; //清零RXEN、TXEN
UCSRA = 0x02; //倍速
UCSRC = 0x06; //8位、无校验
UBRRL = 0x5F; //
UBRRH = 0x00; //波特率9600
UCSRB = 0x18; //使能RXEN、TXEN
}

void init_devices(void)
{
// __disable_interrupt();
port_init();
uart0_init();
}
/********************************/
void uart0_send(unsigned char i)
{
while(!(UCSRA&(1<<UDRE)));
UDR=i;
}
//接收区************************************************/
unsigned char uart0_receive(void)
{
//unsigned char status;
//status=UCSRA;
while(!(UCSRA&(1<<RXC)))
return UDR;
//if(status&(1<<FE))
//return 9;
//if(status&(1<<DOR))
//return 8;
//if(status&(1<<PE))
//return 7;

}
/******************************************/
void main(void)
{
unsigned char temp,k;
init_devices();
while(1)
{
temp=uart0_receive(); //接收
//uart0_send(0X0A); //发送
k=temp;
if(k==0x03)
PORTA=0X00;
}
}

使用外部晶振7。3728,熔丝位设为外部晶振高频,COM口:8位,9600,无校验,1停止位

问题:1,单独调试发送功能时,很正常,串口调试助手能接收到所发送的字符;2,单独调试接收功能时,串口调试助手的接收区无任何反应,接收不到任何字符;3,单独调试接收功能时,仿真器监控k,temp的变量变化,发现一直为0X00,同时使用单步调试,时已确认进入 while(!(UCSRA&(1<<RXC))) return UDR;

请问:为什么会没有反应呢???
...全文
175 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluesea87 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 happy0755 的回复:]
引用 6 楼 jldream110 的回复:
将232 收发两个脚短接 判断 232 部分是否正常 如果正常 再找单片机的原因


哪两个收发脚?是MAX232到AVR这端还是PC到MAX232那端?这样会不会发生短路?
[/Quote]
短路AVR的收发引脚,然后用串口调试精灵发一个字符,看能不能收到,若不能收到,证明电平转换的电路存在问题
cbyibby 2010-07-09
  • 打赏
  • 举报
回复
串口通信如果连乱码都看不到,要么是连接问题,要么是硬件问题
galle 2010-07-09
  • 打赏
  • 举报
回复
初始化的时候,一定要先关全局中断,初始化完成后打开。
stdio.H中有专门的发送和接收的函数。

#include "io8515.h"
#include "stdio.h"
void main(void)
{
unsigned char temp;
UBRR = 12;
UCR=0x18;
puts("Hello World!\n");
putchar(0x0d);
putchar(0x0a);
printf("请使用PC机键盘输入数字、字母或汉字!");
putchar(0x0a);
putchar(0x0d);
while (1)
{
temp=getchar();
if (temp!=0)
{
putchar(temp);
if(temp==0x0d)
putchar(0x0a);
temp=0;
}
}
}
happy0755 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bluesea87 的回复:]
求硬件原理图,电平变换芯片用的是什么
[/Quote]

电平转换芯片是MAX232,硬件电路在DATASHEET里面有。
happy0755 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jldream110 的回复:]
将232 收发两个脚短接 判断 232 部分是否正常 如果正常 再找单片机的原因
[/Quote]

哪两个收发脚?是MAX232到AVR这端还是PC到MAX232那端?这样会不会发生短路?
bluesea87 2010-07-09
  • 打赏
  • 举报
回复
求硬件原理图,电平变换芯片用的是什么
jldream110 2010-07-09
  • 打赏
  • 举报
回复
将232 收发两个脚短接 判断 232 部分是否正常 如果正常 再找单片机的原因
91program 2010-07-08
  • 打赏
  • 举报
回复
用示波仪看看RX/TX的信号是否正常
贝隆 2010-07-08
  • 打赏
  • 举报
回复
关注。。。。。。。。
happy0755 2010-07-08
  • 打赏
  • 举报
回复
AVR发送数据时,用显波器检测RS232口的接收端,波形很正常;
用串口调试助手发送数据,AVR接收时,用显波器检测RS232的发送端,发现波形不对,只有3个方波,而且频率很慢,把AVR断电,再测,还是一样,调试助手的接收区也没有任何字符显示。再把波特率降到4800,效果一样。
怎么回事呢?
内容概要:本文系统研究了虚拟同步发电机(VSG)在并网过程中的惯量-阻尼协同自适应控制策略,结合Simulink仿真与Matlab代码实现,深入探讨其对电网频率稳定的支撑作用。研究内容涵盖VSG的基本建模、双机并联条件下的功率精确分配、微电网黑启动过程、预同步控制技术、虚拟阻抗的引入及其对系统稳定性的影响,并通过根轨迹分析、调节系数对比等方法验证所提控制策略的有效性与鲁棒性。该工作为高比例新能源接入背景下的电力系统提供了增强惯性响应和动态稳定性的解决方案,并构建了一个完整的仿真验证平台。; 适合人群:具备电力系统分析、自动控制理论基础,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制、电力电子变换器控制及电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握虚拟同步发电机的核心运行机理与控制建模方法;② 实现VSG在并网、孤岛切换、黑启动等典型工况下的协同控制仿真;③ 分析惯量与阻尼自适应调控对系统频率动态响应的优化效果;④ 为相关课题研究、高水平论文复现或实际工程项目提供可扩展的仿真模型与技术支持。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型,逐步搭建仿真系统,重点理解控制策略的设计逻辑与参数整定方法,并通过改变负载扰动、并网时机、控制器增益等工况进行对比仿真,深入掌握系统稳定性分析的关键技术与优化路径。
内容概要:本文档是PCI-SIG发布的工程变更通知(ECN),针对PCI Express Base Specification 3.1版本中的数据链路层包(DLLP)编码进行两项维护性更新。主要变更包括定义一种新的NOP DLLP(无操作数据链路层包),以支持未来硬件发送端的实现优化,并将所有已分配的DLLP类型编码统一整理至规范中的单一表格(Table 3-1),提升文档一致性与可维护性。接收端被要求在不采取任何动作的情况下丢弃NOP DLLP,且该包可携带24位任意负载用于调试或日志记录。文档明确指出此次变更不涉及硬件或软件的功能性改动,对现有系统几乎无影响。; 适合人群:从事PCI Express协议开发、验证的硬件工程师、固件开发者及测试工程师,具备一定高速接口协议基础的技术人员;; 使用场景及目标:①帮助开发人员理解DLLP编码机制及未来硬件优化方向;②为测试规范提供依据,如建议更新Link Test Specification以明确未定义编码测试用例的具体编码选择;③指导协议一致性验证过程中对非法或特殊DLLP的处理行为;; 阅读建议:此资源属于标准修订类技术文档,建议结合PCI Express Base Specification 3.1及相关测试规范对照阅读,重点关注Table 3-1的更新、新增的NOP DLLP格式图(Figure 3-10a)及其在链路层处理流程中的定位,便于准确理解和实施协议要求。
内容概要:本文系统研究了在fs>fr条件下,移相混合控制LLC谐振变换器在低压增益工况下的工作特性,重点探讨变频与移相结合控制策略下的模态切换规律、损耗分布特征及电压增益能力。通过Simulink搭建精确仿真模型,对变换器在不同负载与频率条件下的动态响应、软开关实现情况及能量转换效率进行深入分析,揭示了混合控制机制在拓宽增益范围、优化轻载效率方面的优势,为高频高效电源设计提供了理论依据与仿真验证支持。; 适合人群:具备电力电子与电力系统基础知识,从事开关电源、DC-DC变换器、谐振变换器拓扑研究或新能源变换系统开发的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握LLC谐振变换器在超谐振频率(fs>fr)下的混合控制机理与模态演变规律;②通过仿真分析优化低压输出时的控制参数,提升变换器在宽负载范围内的效率与稳定性;③为实际工程中高频高效电源的设计与性能提升提供仿真验证方法与理论指导; 阅读建议:建议结合文中Simulink仿真模型进行同步操作,重点关注变频与移相控制的协同作用边界、关键波形(如谐振电流、电压增益曲线)的演化趋势,并结合相关文献深化对ZVS/ZCS软开关条件和谐振腔能量传递特性的理解。

27,521

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧