기타/문제해결기2016. 2. 1. 12:39

1. 통신 전압 기준 고려

RS232는 12V기준, MCU의 TTL은 5V 기준이다.

만약 같은 전압기준의 MCU끼리 통신한다면 TTL간 통신이기 때문에 별 문제 없지만, RS232로 통신해야 하는 PC또는 일부 모터드라이브 등은 MAX3232, MAX232등 전압레벨을 맞추어 주는 소자를 사용할 필요가 있다.


2. Baudrate 고려

통신하는 시스템간 Baudrate가 맞는지 확인한다.


3. RX, TX 연결이 바른지 확인.

RX-TX, TX-RX 끼리 연결되어야 한다.

만약 MAX3232등의 소자를 쓴다면 TTL, RS232를 연결하는 장소가 정해져 있으므로 이를 확인하고 연결한다.


위 세가지 사항만 맞추면 통신이 안될것은 없다.


Posted by 십자성군
기타/문제해결기2015. 10. 9. 17:39

Wifi모듈인 CC3000은 일정 시간동안 송수신이 없을경우 자동적으로 연결을 끊어버린다.

Timeout과 관련된 각종 설정을 변경하는 함수를 제공하고 있으므로 이를 통해 해결할 수 있다.


예시)

unsigned long aucDHCP = 14400;

unsigned long aucARP = 3600;

unsigned long aucKeepalive = 10;

unsigned long aucInactivity = 3600;


  /* add setup code here */

ConnectionInfo connection_info;

int i;


Serial.begin(115200);

Serial.println();

Serial.println("---------------------------------");

Serial.println("SparkFun CC3000 - Connection Test");

Serial.println("---------------------------------");


Serial.println("CC3000 initialization Trying");

if(wifi.init()){

Serial.println("CC3000 initialization complete");

}else{

Serial.println("Something went wrong during CC3000 init!");

return;

}


if(netapp_timeout_values(&aucDHCP, &aucARP, &aucKeepalive, &aucInactivity) != 0){

Serial.println("Error setting inactivity timeout!");

return;

}

else

{

Serial.println("Setting Inactivity timeout succeed");

}


진한 Code를 참고하면 된다.

사용된 함수는 netapp_timeout_values이다. 여기서는 inactivity 대기시간을 약 한시간으로 설정해 놓았다.

Posted by 십자성군
카테고리 없음2015. 10. 2. 05:32
1. rx tx통신
usart 통신으로 평범하게 하드웨어로 하는것과 지정된 핀 외의 것을 사용하는 소프트웨어적인 방법이 있다.

하드웨어적인 방법은 pin 1,2 번을 사용하는데 우노에서 시리얼로 사용하는 핀이라서 이 핀을 사용하면 println 등 모니터링용 내용도 전부 전송되어버린다.
또한 다운로드를 하는동안 해당 핀에 꽂혀있는 통신용 선들을 다 뽑아야 한다.

소프트웨어적인 방법은 SoftwareSerial 이라는 라이브러리를 인클루드 하면된다. NewSoftwareSerial 등 이전에는 구분되던 라이브러리도 다 통합되었다.
다만 데이터가 간간히 깨지는경우가 있기 때문에 왠만하면 하드웨어적인 방법을 쓰자.

DSP를 쓰다보ㄴ아두이노 우노에서도 당연히 Rx 인터럽트가 될줄 알았더니 그런거 없다... 모든 예제가 loop문에서 수신여부 확인한다. 소프트웨어적인 방법에서 rising 인터럽트로 해보았지만 한계가 역력했다.
Posted by 십자성군