오전 이승규 강사님 수업
A/D 컨버터를 활용한 LCD에 문자 출력하기
================================ Outline ====================================
가변저항 읽는 법
ADC 잡음제거 방법
ADC 실습 - LCD에 문자 출력하기
----------------------------------------------------------------------------
지난 시간에 ATmega2560에서 입력 PORT를 A로 하였는데 F PORT로 수정해 주어야 제대로 출력이 될 것이다.
<ADC 실습 - LCD에 문자 출력하기>
ASCII Code를 이용하여 LCD에 ABCD..를 차례대로 띄워보자.
<가변저항 읽는 법>
ex) 474
47 * 10⁴
그러므로 470kΩ
가변 저항은 파여진 홈을 이용하여 저항 값을 조절할 수 있다. 턴(turn)가 적은 가변 저항일수록 저항 값의 미세조정이 힘들고, 턴수가 많은 가변 저항일수록 미세조정이 가능하다.
클럭(clock)이 16MHz인 분주비가 32일 때 500kHz이다.
분주비가 빠를수록 빠른 속도로 입력 값을 읽어 들인다.
아날로그 입력은 크게 16가지의 단극성 입력과 44가지 종류의 차동입력으로 구분되고, 차동 입력은 다시 4가지의 경우로 나누어진다.
양자화 오차란,
표현 가능한 영역으로 데이터를 표현하였지만 실제 데이터와 차이가 나는 값을 일컫는다.
Thermocoupler K type
※ AVR 교재 p294 - 잡음제거 방법
- 우선 가능한한 신호선을 짧게 하여 노이즈 발생 가능성을 낮춘다.
- 데이터선 주변에 GND로 감싸준다.
- 읽어 들인 값의 평균처리
※ ADC 실습 - LCD에 문자 출력하기
/*** 회로 ***/
<!--[if !supportEmptyParas]--> <!--[endif]-->
/*** 코드 ***/
<!--[if !supportEmptyParas]--> <!--[endif]-->
<main.c>
오후 주수홍 강사님 수업
※ 메모리의 동적 할당
※ 라즈베리 파이로 int a 변수 만든다음 변수 주소를 찍기! 라즈베리 : sysctl -w kernel.randomize_va_space=0 DOS : cl main.c /link /dynamicbase:no 마우스 오른쪽 버튼으로 복사하지 말고 오늘은 yy(복사)키와 pp(붙여넣기)키를 이용해서 할 것!!
printf밑에 Smart 함수 호출해서 인자를 200, 100으로 바꾼다.
라즈베리로 했던 소스 메모장으로 옮겨라!
- 랜덤스택이란, 프로그램이 실핼 될 때마다, 프로세스 내부에 함수 주소 및 스택, 힙의 주소가 랜덤하게 바뀌는 것이다. 해제 하기위해선, 루트권한이 필요 하다.
※ C언어의 메모리 구조 코드영역은 영어 표기로 Code 또는 Text 영역이라고 부른다. 메모리의 HEAP영역에 대해 알아보자.
- 함수를 만들게 되면 기본적으로 다음 함수의 base point와 해당 함수가 끝났을 때 다음 함수로 넘어가는 주소가 저장된다. 때문에 메모리의 주소를 최소화하기 위해서는 인자를 여러 개를 넣는 것 보다는 인자가 존재하는 주소를 입력해 주는 것이 메모리를 줄이는데 효과적이다.
※ 다음 함수의 return 포인트를 활용하여 해킹을 할 수도 있다.
/*** 소스 ***/
p 542 변수의 생성과 소멸의 시기가 지역변수나 전역변수와 다른 유형의 변수는 malloc과 free라는 이름의 함수를 통해서 힙(heap)영역에 할당하고 소멸할 수 있다.
※ malloc 함수(memory allocation) #include <stdlib.h> void * malloc(size_t size); // 힙 영역으로의 메모리 공간 할당 void free(void * ptr); // 힙 영역에 할당된 메모리 공간 해제 -> malloc 함수는 성공 시 할당된 메모리의 주소 값, 실패 시 NULL 반환 malloc함수를 사용하기 위해서는 받은 주소를 저장하기 위한 포인트 변수가 필요하다.
p546 예제 동적 할당을 받은 후 free 함수로 해지 않고 덮어쓰는 경우 덮어 씌워진 경우 해당 메모리는 어딘가에 살아있다. 때문에 반드시 malloc함수를 사용하고 나서는 덮어 쓰지 않고 free함수로 할당 받은 메모리를 반환하여야 한다.
※ calloc 함수 #include <stdlib.h> void * calloc(size_t elt_count, size_t elt_size); -> calloc 함수는 성공 시 할당된 메모리의 주소 값, 실패 시 NULL 반환 블록 크기(elt_count) * 개수(elt_size) ex) calloc(10, 30) 10byte블록을 30개 생성 -> 300bytes calloc 함수 구현
※ realloc 함수 #include <stdlib.h> void * realloc(void * ptr, size_t size); -> 성공 시 새로 할당된 메모리의 주소 값, 실패 시 NULL 반환 구현은 malloc을 활용하여 기존 동적 할당의 내용을 새로 받은 동적할당 영역에 복사하고 free를 활용하여 기존 동적 할당 내용 을 없앤다.
|
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
2015/05/12:: 20150512-8번-김태영-널확인, 오름차순 연결리스트 (5) | 2015.05.13 |
---|---|
20150511-7번-김재홍-PWM / C 연결리스트 (11) | 2015.05.12 |
20150508 -6번 -김성현 ADC차동입력, 아날로그 비교기 및 Linked list (4) | 2015.05.11 |
20150507 - 3번 - 김성주 - 업무일지 - H/W 전압 측정, S/W 파일의 분할과 헤더파일 & 가변인자 & 연결리스트 (9) | 2015.05.07 |
20150504-3번-권오민 (A/D 컨버터 & 파일 입출력&PCAP (16) | 2015.05.04 |
20150501-2번-강동조-USART복습/ HEXA VIEW (6) | 2015.05.03 |
20150501 헥사뷰 소스 (0) | 2015.05.01 |
20150429-33번-홍준모 - <hardware>데이터 수신(usart), <software>파일과 스트림, 그리고 기본적인 파일의 입출력 (11) | 2015.04.29 |