안녕하세요~ 오늘은 주문해 둔 4WD 스마트카 프레임이 도착했습니다~ 이런것을 만원도 안되게 살 수 있도록 도와준(?) 중국에게 감사의 말씀을 드리고 싶진 않네요!!!!!!!!!!!! 시장도 엄청 무너졌고 또한 싼게 비지떡인 것은 변하지 않는 사실이니까요..ㅎㅎ 일단 조립을 진행했는데 포스팅 해보겠습니다~ 도착한 4WD 스마트카 프레임 입니다. 가격도 저렴하고 혹시나 모를 불상사에 대비하여 2대를 주문했네요~ (중국 제품을 구매하려면 최소 2개씩 구매하세요! 1개 샀다가 재수가 없으면 동작을 안할 가능성이 있습니다.) 1세트의 구성품 입니다. 저렴한 가격에 이정도 구성품이면 훌륭하죠..ㅋㅋ 이전에는 이런건 상상도 못했었는데요ㅠㅠ... 아무튼 구성품은 대략 아래처럼 되어 있습니다. 바디프레임 - 2 pcs..
안녕하세요~ 한동안 방황하면서 무기력하게 지낸지도 꽤 오랜 시간이 흐른것 같네요... 정말 아무것도... 하고 싶지 않더라고요.. 그러다 문득 "아 이러다가 정말 큰일 나겠구나.." 싶은 생각이 들었습니다. "그래.. 무언가를 하자! 내가 좋아하는 것을 해보자!" 라는 결심을 하고 막상 "무언가"를 하려는데 무엇을 해야할지 잘 모르겠더라구요.. 기본부터 훑어볼 수 있는 것을 해보자!! 하는 마음에서 단계별로 만들어보려고 4WD 자동차를 구매했습니다. 가장 기초인 조립부터 시작해서 아무것도 없는 상태로 이것저것 추가하면서 제어도 한 번 해보려고 합니다. 요즘 중국 덕분에 저렴한 가격에 질 나쁜(?) 물건들을 쉽게 구할 수 있더라구요! 아무쪼록 관심 있으신 분들은 포스팅 가시면서 한번씩 시도 해보시면 좋을 ..
AVR 을 개발환경을 꾸며봅니다. 개발환경에 필요한 것은 컴파일을 위한 avr-toolchain과 코드를 작성할 IDE 프로그램을 설치합니다. 일반적으로 많이 사용하고 있는(?) AVR Studio 4.19 버전을 설치합니다. 이번엔 AVR Studio 4.19 버전을 설치 합니다. 설치가 모두 완료되었습니다. 이제 AVR Studio 4가 정상적으로 설치되었는지 실행 해봅니다. 설치가 정상적으로 되었으면 아래와 같은 화면이 생깁니다. 다음에는 기본적인 프로젝트 생성 방법에 대해서 공부해보겠습니다! 읽어 주셔서 감사합니다!
math.h 파일은 필요한 부분에서 #include 로 include 한다. ("" 이 아닌 임) 추가로 아래 내용을 진행한다 프로젝트 오른쪽 클릭 -> build options -> Linker settings -> Libraries -> Add 버튼 클릭 경로 필요없이 libm.a 를 넣어서 OK 해준뒤 리빌드! 그럼 이상없이 math.h 파일을 사용 할 수 있게 된다.
데이터시트 상에 Sensitivity 항목이 mdps/digit 으로 되어 있는데 dps는 Degree Per Second 의 약어다. 자꾸 Damege Per second가 생각나는건 함정..ㅋㅋㅋㅋ -_-; 말그대로 초당 데미지.........가 아니고 초당 각도의 민감도를 나다냄
흠 .. 뻘짓을 겁나 했군.. GPIO Configureation Register Low 의 초기값은 0x4444 4444 임 즉 CNF 비트는 01로 Floating input 상태로 되어 있고 MODE는 00 이 되어 있으므로 Input mode를 유지하고 있다. Port Direction을 위해 비트를 설정할 때 기존 GPIO 비트들을 유지하기 위해 or 연산을 사용하는데.. 이때 마스킹을 해서 리셋이나 해당 비트만 바꿀 수 있도록 해주자.. 단순하게 GPIOA-> CRL |= GPIO_CRL_MODE5_0 로 해주니.. 모드는 Output으로 변하지만 Output 설정이 Opendrain이 되어 버리면서 출력을 못하게 된다 -_- PushPull 을 써주기 위해선 꼭 CNF 비트를 0으로 초기화 ..
Nucleo는 bin 파일을 필요로 한다~ 컴파일 하면 hex 확장자로 떨어지는데 이것을 bin 으로 바꾸기 위해 hex2bin.exe 파일을 사용하자~ 링크는 아래~ http://sourceforge.net/projects/hex2bin/ 사용방법은 hex 파일이 있는 폴더로 hex2bin.exe 파일을 옮긴 후 cmd 창에서 경로로 이동 뒤 다음과 같이 써주면 된다~ hex2bin.exe 변환파일.hex 귀찮으면.. hex2bin.exe *.hex 로 진행~
INT0, INT1 을 이용한 인터럽트 테스트 LED를 천천히 한 이유는...? 루틴 복귀지점을 정확히 파악하기 위함임... 4번째에서 인터럽트 시키면 복귀 할 때 다음작업인 5번째에서 켜짐 아주 똑똑한 녀석임.. ^^* ( 참고 : 스위치가 정확히 눌리기가 어려워 인터럽트가 2번 발생할 경우도 있음 ) =========================================================================================== // 인터럽트를 실험 하기 위한 소스 #include #include #include #include "avr/dy.h" unsigned char i,pb_sum, pc_sum; void port_init(void) { DDRB = 0xff;..
폴링과 인터럽트는 둘다 어떤 작업을 수행시 외부에서 들어오는 이번트에 의해 어떠한 작업을 수행하는 것이다. 폴링과 인터럽트의 차이점에 대해서 알아보자 ■ 폴링 방식 - 폴링방식은 정해진 시간 또는 순번에 상태를 확인해서 상태 변화가 있는지 없는지를 체크 하는 방식이다. ex) while(1) { if( BTN1 == 0 ) { 구문 1 } else { 구문 2 } 다른 작업1 ; 다른 작업2 ; 다른 작업3 ; 다른 작업 4; } 위의 파일을 컴파일러가 되어서 생각 해보자. 먼저 버튼이 눌렸는지 안눌렸는지를 확인 뒤, 안눌렸다면 구문2 (else)를 실행 할 것이다. 그리고 else 문이 다 끝나면 순차적으로 다른 작업 n 을 실행한다. 그리고 나서 다시 if 문을 확인 할 것이다. 한 마디로 MCU는 ..
USART 통신 실험 연결은 아주 성공적이였음... 컴퓨터에서 송신을 주고 보드는 수신을 받음 /////////////////////////////////////////////////////////////////////////////////////////// #include void delay_us(unsigned int us_time) // 시간 지연 함수(마이크로 초) { unsigned int time; for(time = 0; time < us_time; time++) { asm volatile("PUSH R0"); asm volatile("POP R0"); } } void delay_ms(unsigned int ms_time) // 시간 지연 함수(밀리 초) { unsigned int time;..