==========================================================================================

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명



'2015 스마트 콘트롤러 > 업무일지' 카테고리의 다른 글

20150722  (0) 2015.07.23
20150721  (0) 2015.07.22
20150717  (0) 2015.07.19
20150716  (0) 2015.07.17
20150715  (0) 2015.07.16
Posted by ahj333
,