본문 바로가기

ARM

LCD + 센서 제어 프로그래밍 #include "AT91SAM7S256.h" /* Character LCD */ #define BU 0x000000FF // PIOA0~7 #define RS 0x00000800 // PIOA11 #define RW 0x00001000 // PIOA12 #define EN 0x00002000 // PIOA13 #define BL 0x00004000 // PIOA14 #define ADC 0x00000600 // PIOA9~10 /* Macro Setting */ #define DELAY(a) for(iCnt=0; (a)>=iCnt; ++iCnt) #define UP 0x80 #define DOWN 0xC0 void LCD_INIT(); // LCD 설정 함수! void LCD_INST(unsigned .. 더보기
AT91SAM7S256의 내부 구조 기본 구조 ARM7TDMI형의 CPU코어에 기본적으로 jTAG(외부와 통신하기 위한 표준 회로) 인터페이스가 부속되며 내부의 시스템버스 ASB를 통하여 메모리 제어기와 플래시 메모리및 SRAM이 연결되어있다. 플래시 메모리의 옆에는 별도로 SAM-Ba Boot 프로그램이 저장되어 있는 ROM이 있다. 이 외에도 주변장치 데이터 제어기와 주변장치 브리지를 통하여 APB버스가 연결되며 이 버스는 스스템 제어기와 모든 주변장치들이 접속되어 있다. 특징 1. 16/32비트 RISC형의 ARMv4T 구조에 ARM7TDMI코어를 가지는 ARM Thumb 마이크로프로세서 2. 고성능 32비트 명령 세트와 고밀도 16비트 명령 세트를 가짐 3. SAM-BA boot 프로그램을 내장하여 ISP방식으로 다운로드 가능 4... 더보기
A/D 컨버터(ADC) 컨버터의 개요 A/D 컨버터(ADC)(B.292p) AT91SAM7S256은 8채널 10비트와 8비트 분해능의 축차비교형 A/D 컨버터를 가지고있다. 8채널 아날로그 입력신호 중에 AD0~3은 병렬 I/O포트와 겸용, AD4~7은 전용 핀을 가짐. 축차비교형이란? ☞ 축차비교형 ADC는 SAR(successive Approximation Register)을 사용하여 최상위 비트로부터순서대로 하위 비트 쪽으로 수정하여 가는 방법으로 DAC의 출력을 훨씬 빨리 아날로그 입력 전압에 근사시킨다. 비교적 변환시간이 빠르고 회로도 간단하여 현재 저가형이면서 분해능이 비교적 높은 범용 A/D Converter에 가장 널리 사용되고 있다. 변환 중에 아날로그 입력전압이 일정하게 유지되어야 하므로 샘플/홀드가 반드시 .. 더보기
시리얼 통신으로 문자열 출력 함수 만들기!! #define DELAY(A) for(iCount=0; (A) >= iCount; ++iCount) // Delay Macro void DBGU_Str(const char *cString) { while(*cString != 0) { // NULL이 올때까지 TX호출 DBGU_TX(*cString); ++cString; DELAY(30000); } return; } 소스는 간단하다...받아온 문자열을 한문자씩 보내는데 널문자를 만날때까지 계속 반복해주면된다. 근데 위에 보면 딜레이가있는데 다른사람은 딜레이없어도 전송이 잘만되는데 나만 딜레이를 2만이상줘야 제대로 전송이 되는 것이였다....문자열 전송은 그냥 BDGU_Str("hello")이렇게 호출해주면 끝~~ 거듭제곱 구하는 함수 int square(.. 더보기
LED 제어 테스트 #define PIO_PER (*((volatile unsigned int*)0xFFFFF400)) // PIO Enable #define PIO_PDR (*((volatile unsigned int*)0xFFFFF404)) // PIO Disable #define PIO_OER (*((volatile unsigned int*)0xFFFFF410)) // output Enable #define PIO_SODR (*((volatile unsigned int*)0xFFFFF430)) // set output data #define PIO_CODR (*((volatile unsigned int*)0xFFFFF434)) // clear output data int main() { volatile unsigned.. 더보기