ATMEGA16L的串口问题 ====================== 在使用ATMEGA16L的过程中遇到了一个比较奇怪的问题,让ATMEGA16L分别工作在3.3v和5.0v,发送数据0x00-0xff,在串口调试终端接收的数据出现了不同,在3.3v时工作正常,而在5.5v时则出错。不知道各位在使用过程中是否也遇到了类似的情况?它的USART的工作跟电压是否有关系?但是在datasheet上却没有看到相关的内容。
--------------------------------------------------------------------- 下面是试验记录:
晶振:内部4M 波特率:2400,根据数据手册设置初值:U2X=1,UBBR=207 调试终端:sscom32 发送数据:0-255 电平转换芯片:max232 电容:10uf
在sscom32接收窗口显示数据 当工作电压为3.3v 接收数据正常为0x00--0xff;
当工作电压为5.0v 接收数据不正常,接收数据如下: 80 40 A0 20 50 90 D0 10 28 48 68 88 A8 C8 E8 08 14 24 34 44 54 64 74 84 94 A4 B4 C4 D4 E4 F4 04 0A 12 1A 22 2A 32 3A 42 4A 52 5A 62 6A 72 7A 82 8A 92 9A A2 AA B2 BA C2 CA D2 DA E2 EA F2 FA 02 05 09 0D 11 15 19 1D 21 25 29 2D 31 35 39 3D 41 45 49 4D 51 55 59 5D 61 65 69 6D 71 75 79 7D 81 85 89 8D 91 95 99 9D A1 A5 A9 AD B1 B5 B9 BD C1 C5 C9 CD D1 D5 D9 DD E1 E5 E9 ED F1 F5 F9 FD 01 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE
1.修改波特率为4800,9600,依然得到上述结果。 2.更换串口调试终端:使用龚建伟的“串口调试助手V2.2”也依然是上述相同结果 3.电平转换芯片:max232,电容更换为4700pf ,依然得到上述结果 -------------------------------------------------------------------- 附源程序: #include "iom16v.h"
void InitialUsart(unsigned int ); void SendUsartData(unsigned char);
void main(void) { unsigned int i; InitialUsart(2400);
for(i=0;i<256;i++)//发送0-255,观察终端接收结果 { SendUsartData(i); } while(1); }
void InitialUsart(unsigned int baud) { switch(baud) { case 2400 : baud=207;break; case 4800 : baud=103;break; case 9600 : baud=51;break; case 19200 : baud=25;break; default : break; }
UCSRB=0x00; UBRRH=(unsigned char)(baud>>8)&0x7f; UBRRL=(unsigned char) baud; UCSRA|=(1<<U2X); UCSRB|=(1<<RXEN)|(1<<TXEN); UCSRC|=(1<<URSEL)|(3<<UCSZ0);//设置为8位数据操作,1位停止位 }
void SendUsartData(unsigned char temp) { while( !(UCSRA & (1<<UDRE)) ); UDR=temp; } ------------------------------------------------------- |