==========================================================================================
ARM
==========================================================================================
<ARM>
==DATASHEET 확인
0. 자료확보(보드 홈페이지-드라이버-개발환경 구축)
1. ARM보드 제어권
(펌웨어 라이브러리는 직접 만들어야 함)

-시동 파일

:초반에 구동 시키는 boot code 필요
booting(실제 일을 하기 위한 준비 작업 ( - 신발 끈 매기))
=bootstrap ( 기계어, 어셈블러)
:winavr ( 소스코드 공개 - 빌드되어 obj형태로 (ctr*.o)들어 있음. 컴파일시 붙임)
<boot code>
----
call low_level_init
call main

=linker script파일

(pe파일 - 어셈블러)-window 실행파일 구조-window 해킹 관련 책
=ARCH 구조
=ENTRY (진입점)

=칩제작사에서 제공

=stack 보통 4k까지 허용
#include <stdio.h>
int main() { //int a[1024*1024*100]={0,}; // 4Kb => 4M => int a[1024*500]={0,}; // 4Kb => 4M => printf("안녕하세요\n"); return 0; } |
=실행 제대로 안됨("안녕하세요“출력 안됨)



#include <stdio.h> int b[1024*1024*100]={10,}; // 4Kb => 4M
int main() { //int a[1024*1024*100]={0,}; // 4Kb => 4M => //int a[1024*500]={0,}; // 4Kb => 4M => printf("안녕하세요\n"); return 0; } |

#include <stdio.h> //int b[1024*1024*100]={10,}; // 4Kb => 4M int c[1024*1024*100];//={10,}; // 4Kb => 4M BSS
int main() { //int a[1024*1024*100]={0,}; // 4Kb => 4M => //int a[1024*500]={0,}; // 4Kb => 4M => printf("안녕하세요\n"); return 0; } |


=실행파일 용량 체크
#include <stdio.h> //int b[1024*1024*100]={10,}; // 4Kb => 4M //int c[1024*1024*100];//={10,}; // 4Kb => 4M BSS
int main() { //int a[1024*1024*100]={0,}; // 4Kb => 4M => //int a[1024*500]={0,}; // 4Kb => 4M => char * t1 = "1234567890"; printf("안녕하세요\n"); return 0; } |

=
#include <stdio.h> //int b[1024*1024*100]={10,}; // 4Kb => 4M //int c[1024*1024*100];//={10,}; // 4Kb => 4M BSS
int main() { //int a[1024*1024*100]={0,}; // 4Kb => 4M => //int a[1024*500]={0,}; // 4Kb => 4M => char * T[] = { "1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" ,"1234567890" };
printf("안녕하세요\n"); printf("%08X\n", T[0]); printf("%08X\n", T[1]); return 0; } |

=FLASH 의 용량에 맞게 (상수, 전역 줄여야 함)
=STACK의 사용량 줄여야 함(재귀함수 X)
=SECTION ( CODE(TEXT) + DATA )
=어셈블러 중에 C로 작성가능 한 것 (수정 쉽도록 )
<PROJECT.H>

<MAKEFILE>


=ARM사의 칩을 사용(ATMEL, 삼성...)(DATASHEET 불친절)
=CDMA((ARM + CDMA MODEM) => 폴더폰)
-MSMXXXX
-퀄컴
-ETRI-CDMA칩을 우리나라에서 만들어줌
=(CDMA MODEM) + (CPU) => 스마트폰
=ICE - Core 모니터링( ARM7TDMI )
=JTAG - 외부와 중계 ( 삼바를 안거치고 프로그램 넣을 수 있음(PC에 프린트포트 필요함))
(-Trace32, OPENICE)
=PLL(주파수체배기)


=BOD - (brownout detect) - 일정전압 이하 리셋 = > 일정전압 이상 동작되도록 ( 안정적 동작)
=레지스터



=PIOA 주소 DEFINE
<MAIN.C>
//#include "project.h" // 나중에.. //레지스터 직접 DEFINE #define PIO_PER (*((volatile unsigned int *)0xFFFFF400)) #define PIO_PDR (*((volatile unsigned int *)0xFFFFF404)) #define PIO_PSR (*((volatile unsigned int *)0xFFFFF408))
#define PIO_OER (*((volatile unsigned int *)0xFFFFF4010)) #define PIO_ODR (*((volatile unsigned int *)0xFFFFF4014)) #define PIO_OSR (*((volatile unsigned int *)0xFFFFF4018))
#define PIO_IFER (*((volatile unsigned int *)0xFFFFF4020)) #define PIO_IFDR (*((volatile unsigned int *)0xFFFFF4024)) #define PIO_IFSR (*((volatile unsigned int *)0xFFFFF4028))
#define PIO_SODR (*((volatile unsigned int *)0xFFFFF4030)) #define PIO_CODR (*((volatile unsigned int *)0xFFFFF4034)) #define PIO_ODSR (*((volatile unsigned int *)0xFFFFF4038)) #define PIO_PDSR (*((volatile unsigned int *)0xFFFFF403C)) #define PIO_IER (*((volatile unsigned int *)0xFFFFF4040)) #define PIO_IDR (*((volatile unsigned int *)0xFFFFF4044)) #define PIO_IMR (*((volatile unsigned int *)0xFFFFF4048)) #define PIO_ISR (*((volatile unsigned int *)0xFFFFF404C)) #define PIO_MDER (*((volatile unsigned int *)0xFFFFF4050)) #define PIO_MDDR (*((volatile unsigned int *)0xFFFFF4054)) #define PIO_MDSR (*((volatile unsigned int *)0xFFFFF4058))
#define PIO_PUDR (*((volatile unsigned int *)0xFFFFF4060)) #define PIO_PUER (*((volatile unsigned int *)0xFFFFF4064)) #define PIO_PUSR (*((volatile unsigned int *)0xFFFFF4068))
#define PIO_ASR (*((volatile unsigned int *)0xFFFFF4070)) #define PIO_BSR (*((volatile unsigned int *)0xFFFFF4074)) #define PIO_ABSR (*((volatile unsigned int *)0xFFFFF4078)) #define PIO_OWER (*((volatile unsigned int *)0xFFFFF40A0)) #define PIO_OWDR (*((volatile unsigned int *)0xFFFFF40A4)) #define PIO_OWSR (*((volatile unsigned int *)0xFFFFF40A8))
int main() { volatile unsigned int iCount = 0;
while (1) { for(iCount=0;1000000 >= iCount; ++iCount);
for(iCount=0;1000000 >= iCount; ++iCount);
}
while (1); return 0; }
|
==========================================================================================
AVR
==========================================================================================
<AVR2560>
=ULN2803APG - 스테핑모터 드라이버용 칩
http://itsmart333.tistory.com/attachment/cfile26.uf@2743114E55AC7F3D1F3198.pdf
==개발 제안서(중간 프로젝트) - 8월 28일 발표
EX)
http://wowcat.tistory.com/889
http://wowcat.tistory.com/search/%ED%84%B0%EC%B9%98%EC%8A%A4%ED%81%AC%EB%A6%B0
-회로도(블럭다이아그램)
http://itsmart333.tistory.com/attachment/cfile30.uf@2308A04B55AC979A09C62D.pdf
-온도센서
-LM30Ω /Pt 100Ω
http://itsmart333.tistory.com/search/PT%20100

=
1. 제안서 제출 일자 : 2013년 05월 13일 월요일
2. 제안서 작성자 : 진종영
3. 프로젝트 명 : 4족 보행 로봇
4. 4족 보행 로봇을 만들고자 하는 계기
• 모터(스텝 모터 또는 서보 모터) 제어능력 향상
• ARM 또는 AVR의 제어 능력 향상
(PWM, 타이머/카운터, 인터럽트, ADC 등...)
5. 주요 구현 기술
• 모터(스텝 모터 또는 서보 모터)를 이용한 로봇 관절
구현 및 제어
• 센서(초음파 또는 적외선)를 이용한 장애물 감지
• 마이크로 컨트롤러 프로젝트 수행능력
6. 프로젝트 사양
• 총 소요 기간 : 20일, 4주
- 1주 : 역할분담, 기술 검토, 모터와 센서 테스트 및 코드 작성
- 2주 : 코딩 및 회로구성과 바디제작, 중간보고서 작성
- 3주 : 코딩 및 동작 테스트, 중간보고서 제출
- 4주 : 테스트 및 디버깅, 최종 마무리 구현
- 프로젝트 종료 1주일 내 결과 보고서 제출 및 발표
• 개발 인원 : 3명
- ARM(AVR)으로 모터와 센서 제어 : 2명
- 회로와 바디설계 및 제작 : 1명
1. 제안서 제출 일자 : 2013년 05월 13일 월요일
2. 제안서 작성자 : 진종영
3. 프로젝트 명 : RC Car
4. RC Car를 만들고자 하는 계기
• 모터(스텝 모터 또는 서보 모터) 제어능력 향상
• IR 센서를 이용한 적외선 신호 분석능력 향상
• ARM 또는 AVR의 제어 능력 향상
(PWM, 타이머/카운터, 인터럽트, ADC, UART 등...)
5. 주요 구현 기술
• 모터를 이용한 2륜 자동차 동작(직진, 좌우 회전, 후진)
• 일반 리모컨의 신호를 IR 센서로 받아 리모트 컨트롤
6. 프로젝트 사양
• 총 소요 기간 : 20일, 4주
- 1주 : 역할분담, 기술 검토, IR 신호 분석, 모터 제어,
- 2주 : RC 카 바디제작, 전원부 회로설계
코딩 및 중간보고서 작성
- 3주 : 코딩 및 중간보고서 제출
- 4주 : 디버깅 및 최종 마무리
- 프로젝트 종료 1주일 내 결과 보고서 제출 및 발표
• 개발 인원 : 3명
- 리모컨 & IR센서 : 1 명
- 모터제어, 회로 및 전원부 담당 : 2명
< 제 안 서 >
1. 제안서 제출 일자 : 2015년 07월 20일 월요일
2. 제안서 작성자 : 안향진
3. 프로젝트 명 : 온도조절 팬
4. 온도조절 팬을 만들고자 하는 계기
• 모터(스테핑모터 또는 서보 모터) 제어능력 향상
• AVR의 제어 능력 향상
(PWM, USART, 인터럽트, ADC 등...)
5. 주요 구현 기술
• 모터(스테핑모터 또는 서보 모터)를 이용한 팬 구동
• Character LCD를 이용한 데이터 디스플레이
• USART 통신으로 PC에서 구동할 온도, 모터ID 및 속도 설정
• 마이크로 컨트롤러 프로젝트 수행능력
6. 프로젝트 사양
• 총 소요 기간 : 20일, 4주
- 1주 : 기술 검토, 모터와 센서 테스트 및 코드 작성
- 2주 : 코딩 및 회로구성과 바디제작, 중간보고서 작성
- 3주 : 코딩 및 동작 테스트, 중간보고서 제출
- 4주 : 테스트 및 디버깅, 최종 마무리 구현
- 프로젝트 종료 1주일 내 결과 보고서 제출 및 발표
• 개발 인원 : 1명
- AVR으로 모터와 센서 제어 : 1명