분류 전체보기

    2013.05.22_ARM칩 Library에서 끌어쓰기

    ▶ ARM칩 Library에서 끌어쓰기 #include #define BASE ((struct SMART *)0x12FF60) struct SMART { int A; int B; int C; int D; }; int main() { int array[4] = {0x11,0x22,0x33,0x44}; int *ip = array; struct SMART *ssp; ssp = (struct SMART *)array; printf("array[0] : %X\n", array[0]); printf("array[1] : %X\n", array[1]); printf("array[2] : %X\n", array[2]); printf("array[3] : %X\n\n", array[3]); printf("ssp->A ..

    2013.05.20_Timer/Counter_AIC__풀업풀다운.

    ▶ Timer/Counter ( 복습!! ): CPU가 시간을 재는것AT91SAM7S256에는 16비트 타이머/카운러채널 (TC0~TC2)를 가지고 있습니다.이들 3개의 채널은 서로 독립적으로 동작하며 이벤트카운트, 주파수 측정, 시간간격측정,시간지연, 펄스 발생 PWM 출력등의 기능을 수행할 수 있다고 합니다.AT91SAM7S256 은 MCK(Master Clock) 를 48Mhz 지원 하고있으며,이 MCK 에 pre-scaler(분주비) 를 이용해 나누어줌으로써 초를 세기에 세분화 가능합니다. ( 그림 Table 33-1 ) 1Tick(클럭당시간) * 배수(RC) = 1ms 에 맞춰 시간을 세분화 할 것이며, 최대한 오차가 작은 분주비를 사용하여야 할 것 입니다.위의 표에서 확인된 오차가 제일 작은 ..

    2013.05.15_volatile짚고감_

    (*((volatile unsigned int *)(addr))) 여기서 괄호를 빼면 *(volatile unsigned int *)addr 이 됩니다 volatile 은 전원끄면 내용 날라가는 메모리 즉 RAM 영역을 지정하는 단어입니다 (volatile unsigned int *)addr 은 addr을 RAM영역의 unsigned int형 pointer로 보라는 (type casting) . 따라서 *(volatile unsigned int *)addr 은 unsigned int형 포인터인 addr 이 가리키는 값, 즉 addr번지의 내용(32bit)이 됩니다 예를 들어 (*((volatile unsigned int *)(1234))) = 5678; 이 문장은 RAM의 1234 번지에 5678 을 써..

    2013.05.15_배열포인트_cast,함수포인터.

    [C] 배열 포인터 cast. 2차원 배열를 1차원으로 접근, 1차원 배열을 2차원으로 접근. 1차원, 2차원 배열은 컴퓨터 메모리에 저장은 일차원으로 저장이 된다.(일차원과 같은 연속적이 메모리에 저장) [Source Code 0] : int multi0[3][4] = { {1,2,3,4} , {5,6,7,8} , {9,10,11,12} }; int multi1[10] = {1,2,3,4,5,6,7,8,9,10}; int *Arr0, (*Arr1)[5]; Arr0 = (int *) multi0; Arr1 = (int (*)[5]) multi1; printf("[Array] %d : %d : %d\n", Arr0[6], *(Arr0+6), multi0[1][2]); printf("[Array] %d : ..

    2013.05.15_Timer/Count_인터럽트(수정중)

    ▶ Timer/Count_인터럽트 ▶ 인터럽트방법 Overflow 방법 : 기준점 65535(갯수) 정해놓고, 만약 5만을 읽는다. 그러면 15535에서부터 읽으면 65535를 만나면 5만읽은게됨. Compare 방법 : 만약 1Mhz(100만번)까지 기준을 잡음.그리고 50만까지 읽고싶다. 그러면 TC_RA,TC_RB,TC_RC 세개중 하나로 값을 비교해서 50만이 되는순간에 인터럽트발생. AIC_SVR은 주소이고 [TC0] = [12] 이므로, 배열과 같은형식 , 배열이름[12] => 정수값 / 그래서 함수의 주소인 Timer_Handler 와는 형동등성에 어긋나므로 (volatile unsigned int ) 로 캐스팅 해주었다.

    2013.05.14_#define문_Timer/Count 활용.

    ▶ #define 문의 활용. #include #define A(x,y) (x+y) int main() { float z1 = A(3.1, 2.1); int z2 = A(3,2); float z3 = A(3.1,2); // 자료형이 다른 변수라도 불러서 쉽게 연산 할 수 있다. // 하지만 #define 문에서 제대로 선언이 안되면 안되므로 // 많이는 안쓰는게 좋다. printf("%lf\n", z1); printf("%d\n", z2); printf("%lf\n", z3); return 0; }