기타/문제해결기2016. 9. 22. 17:41

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/166755


DSP28335는 C2000계열의 32bit processor 이다.

실수연산에서 float과 double을 구분하지 않으며 둘 다 32bit 변수로 취급된다.

그리고 sin, cos 등 삼각함수를 포함하여 제공되는 연산 함수들이 모두 32bit 기준으로 되어있다.


64bit 실수를 다루기 위해서는 float64라는 변수를 다루어야 하며, 실제 자료형은 long double로 되어있다.

하지만 위 변수에 값을 대입할때, double에서 하던것처럼 그냥 대입했을 경우, 정밀도가 떨어진 값이 대입된다.

예를들어


double A = 3.141592653589793;

float64 B = 3.141592653589793;


의 경우 디버깅을 하면

A : 3.141592653589793

B : 3.141592741012573

과 같은 결과를 얻게 된다.


이 때는 다음과 같이 해결한다.

float64 B = 3.141592653589793L;

대입할 때, 대입하는 값의 자료형을 제대로 명명해야 하는 것이다. 32bit 프로세서이기 때문에 그냥 대입하면 32bit기준으로 대입이 이루어 져서 그런것이 아닐까?


sin, cos등의 함수들이 모두 32bit기준으로 되어있기 때문에 함수에 float64 데이터를 인자로 넣으면 32bit double로 형변환이 일어난다.
이것들은 직접 필요한 함수를 구현할 수 밖에 없을듯 하다.


Posted by 십자성군
기타/문제해결기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. 3. 19. 04:19

matlab을 쓰다보면 cos(pi/2)가 6.1232e-17등으로 나오곤 한다.

symbolic변수로 여러가지 식을 전개하다 보면 이것때문에 실제 값은 0에 가까우면서 굉장히 길게 나오는 경우가 있다.

이를 해결하려면 cos(pi/2)=0이 되게 해주어야 한다.


pi=sym('pi') 를 실행하면 cos(pi/2)가 0이된다.

'기타 > 문제해결기' 카테고리의 다른 글

MCU Uart 셋팅시 고려사항  (0) 2016.02.01
CC3000 Inactivity timeout  (0) 2015.10.09
[Android]Noclassedeffounderror  (0) 2015.02.26
Android에서 에러가 발생했을 때.  (0) 2015.02.04
cannot set up guest memory android_arm  (0) 2015.01.29
Posted by 십자성군
기타/문제해결기2015. 2. 26. 15:03

안드로이드 개발에서 구글맵등을 사용할 때, 구글 서비스 패키지를 import후 library시켜야 한다. 개발중인 앱의 빌드까지 에러없이 잘 되었는데 막상 실행시키면 logcat에서 'Noclassedeffounderror'라는 에러가 뜨면서 앱이 강제종료가 될 때가 있다.

구글에서 검색하면 여러가지 해결방법이 나오는데, 나같은 경우에는 library의 jar파일이 missing이라고 했었다. 해당 폴더에 jar파일을 복붙하여도 안됐었는데 결국 해결하였다.


원인은... 구글 서비스 패키지를 빌드시켜주지 않았었다는것. 라이브러리 시키는 패키지도 빌드를 시켜주어야 하며, 빌드해주면 jar파일이 생성된다.

Posted by 십자성군
기타/문제해결기2015. 2. 4. 15:11

R.java를 실수로 삭제했다거나, androidmanifest를 수정하다가 에러가 생겼을 때, 원인을 제거해도 여전히 에러가 뜰때가 종종 있다.


1.

Clear한 후 프로젝트를 Refresh.

빌드를 clear한 후에 프로젝트를 우클릭 후 Refresh 하고 다시 빌드한다.


2.

프로젝트의 Java Build Path에서 Android 버전을 최상위로 한다.




3.그래도 해결이 안되면

이 때는 일단 eclipse를 껏다 켜면 대부분 해결된다. 그렇지 않다면 원인해결이 되지 않은것이다.


Posted by 십자성군
기타/문제해결기2015. 1. 29. 14:59

안드로이드를 개발하는 중에 AVD로 구동하다가 발생할 수 있는 에러입니다.


생성해놓은 AVD의 RAM을 512로 맞춰주시면 해결됩니다.

'기타 > 문제해결기' 카테고리의 다른 글

[Android]Noclassedeffounderror  (0) 2015.02.26
Android에서 에러가 발생했을 때.  (0) 2015.02.04
RS232통신중에 문자가 깨지거나 예상과는 다른값이 나올때  (0) 2015.01.06
관리자 권한  (0) 2013.09.06
포맷  (0) 2013.09.06
Posted by 십자성군
기타/문제해결기2015. 1. 6. 12:37

가끔씩 설명서에서 RS232 케이블 연결이 잘못나와있는 경우가 있습니다. 이 때는 GND선과 송 수신 선의 위치가 거꾸로 되어있는 경우입니다.


코드로 수정할 수 없는 부분이니 이 경우에는 일단 선의 위치를 바꿔봅시다.

'기타 > 문제해결기' 카테고리의 다른 글

[Android]Noclassedeffounderror  (0) 2015.02.26
Android에서 에러가 발생했을 때.  (0) 2015.02.04
cannot set up guest memory android_arm  (0) 2015.01.29
관리자 권한  (0) 2013.09.06
포맷  (0) 2013.09.06
Posted by 십자성군
기타/문제해결기2013. 9. 6. 00:35

이것저것 설치할 때, 관리자 권한을 일일히 획득하기 귀찮다.


제어판에서 사용자계정에 들어간 후 계정유형을 관리자로 변경하자.


cmd에서의 net user 계정명 /active: on off 사용가능


만약 관리자계정을 잘못만져서 아무 계정에도 접근하지 못하게 되었을 때의 해결방법.



windows시디로 부팅 후 shift+f10으로 cmd 접근

c드라이버로 접근 cd:\ c

windows\system32

copy utilman.exe utilman.exe.1

del utilman.exe

copy cmd.exe utilman.exe


재부팅후 계정 선택창에서 왼쪽 아래의 시계모양 클릭

net user administrator 비번 입력


Posted by 십자성군
기타/문제해결기2013. 9. 6. 00:30

DISKPART


컴퓨터 포맷 후 shift+F10 으로 명령프롬프트에 접근 가능하다.


디스크 포맷 및 파티션 관리는 다음 사이트에 자세히 기재되어 있다.


http://cappleblog.co.kr/



Posted by 십자성군