duanliangcong 发表于 2013-11-18 21:08:06

求大神看看为什么会出现这种情况!!!!!!!!!

程序是:
#include <SoftwareSerial.h>
SoftwareSerial gps(0,1);
char data;
void setup()

{
Serial.begin(4800);
gps.begin(4800);
}

void loop()
{
if(gps.available() > 0)
{
   data = gps.read();
   Serial.print(data);
}
}


GPS是SIRF2   TTL接口的

这程序我用在UNO上面可以运行,用串口监视器软件能看到数据。但是用在MAGE2560上面编译能通过。但是不能运行。在串口监视器上看不到任何数据。GPS的TX接MAGE2560上的0(RX0)
为什么会出现这样的情况呢?按道理来讲,在UNO上能运行的,在MAGE2560上应该也能运行啊

pathletboy 发表于 2013-11-18 22:18:53

不是所有的io口都可以rx的

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

i7456 发表于 2013-11-18 22:41:46

0,1是硬件串口吧,直接用就可以了,为什么还给定义成软件串口呢

duanliangcong 发表于 2013-11-19 12:01:47

i7456 发表于 2013-11-18 22:41 static/image/common/back.gif
0,1是硬件串口吧,直接用就可以了,为什么还给定义成软件串口呢

不知大神是否给改改这程序。我把SoftwareSerial这个函数去掉过。结果的确可以显示。但是复位开关不能按。一按GPS就不出数据了,如果再要运行,就必须把GPS的接口线抽掉,然后再按一下复位。然后接上去才能在读出来。我就在想是不是我编的程序有冲突程序如下:
int rxPin = 0;                  // RX
int txPin = 1;                  // TX
char data;
void setup()

{
Serial.begin(4800);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
}

void loop()
{
if(Serial.available() > 0)
{
   data = Serial.read();
   Serial.print(data);
}
}
页: [1]
查看完整版本: 求大神看看为什么会出现这种情况!!!!!!!!!