さて、私は3つのデバイスを持っています。
- USARTでセットアップされたAVRバタフライマイクロコントローラ
- Debian を実行し、シリアル用のカスタム プログラムを使用する Bifferboard。
- Br@y's を実行するデスクトップ マシン。
そこで、Bifferboard がシリアルを AVR に送信するようにしようとしていますが、AVR は信号を受信しません (ワイヤーをチェックしました)。しかし、AVR をデスクトップ ボックスに接続し、Br@y で送信すると、正常に受信されます。
Bifferboard をデスクトップに接続すると、Br@y's は問題なく受信できます。
Bifferboard のコードは次のとおりです。
#include "string2num.h" //a custom header
#include <cstdlib>
#include <iostream>
#include <SerialStream.h>
using namespace LibSerial;
//using namespace std;
int main(int argc, char*argv[])
{
if (argc<2)
{
std::cout<<argv[0]<<" requires the device name eg \'dev/tty0\' as a parameter\nterminating.\n";
return 1;
}
SerialStream theSerialStream(argv[1]); //open the device
if(!theSerialStream.IsOpen()) //did the device succesfuilly open
{ //open faile
std::cerr<<"Open " << argv[1] << " failed\n Terminating.\n";
return 1; //exit failure
}
theSerialStream.SetVMin(0);//no min number of characters to send
theSerialStream.SetVTime(0);// don't wait betwenn characters
theSerialStream.SetBaudRate( SerialStreamBuf::BAUD_19200);
theSerialStream.SetCharSize(SerialStreamBuf::CHAR_SIZE_8); //8
theSerialStream.SetParity(SerialStreamBuf::PARITY_NONE);// N
theSerialStream.SetNumOfStopBits(1);// 1
theSerialStream.SetFlowControl(SerialStreamBuf::FLOW_CONTROL_NONE);
std::cout<<"Ready for serial trasmission. Press Ctrl+C to quit\n";
//insert basic instructions here
while (1)
{
char input[BUFSIZ];
std::cin>>input;
char* values=getAllValues(input); //DECODE any formatting (this function is in the custom header)
std::cout<<"about to transmit: " << values << "\n";
theSerialStream << values;
free(values);
}
theSerialStream.Close();
return 0;
}
また、Bifferboard の minicom も使用してみました。デスクトップの Windows マシンとは通信できますが、AVR とは通信できません。