본문 바로가기

분류 전체보기

(271)
배열 포인터 1. 배열 요소의 주소와 배열의 주소Q) 배열명은 "배열의 첫 번째 원소의 주소 값"을 의미하고 있음을 알고 있다. 그럼 &배열명 은 무엇을 의미하는가?#include int main(void) { int list[] = { 1, 2, 3, 4, 5 }; printf("list = %u\n", list); printf("&list = %u\n\n\n", &list); printf("list + 1 = %u\n", list + 1); printf("&list + 1 = %u\n", &list + 1); return 0;} 위 실행 결과를 통해 알 수 있듯이 배열명인 list와 배열명의 주소인 &list는 동일한 주소 값을 갖는다.하지만, 주소 덧셈 연산을 한 결과값은 전혀 다르다.▶ list + 1 = l..
C - [혼공c] 14장 도전 실전 예제 (가로 세로의 합 구하기) 1. 문제문제 제목 : 가로 세로의 합 구하기  2. 생각목표) 문제의 범용성을 높이기 위해 5행 6열 뿐만 아니라 행과 열 값을 받아서 2차원 배열을 생성한 뒤, 그에 대한 각 열과 행의 합을 구하여 2차원 배열의 끝에 저장하자. 가변 길이를 갖는 2차원 배열을 생성하기 위해 malloc 함수 사용중요) 각 열에 대한 1차원 가변 길이를 갖는 배열을 생성하기 위해 추가적으로 malloc 함수 사용(0, 0) 부터 시작해서 값을 대입하는 과정인 초기화 작업 수행각 행과 열의 합을 구해 대입 3. 풀이 및 코드 분석#include #include // Function prototype.void get_size_of_board(unsigned short* max_row, unsigned short* max_..
이중 포인터 1. 이중 포인터란 무엇인가?이중 포인터는 포인터의 주소 값을 변수의 값으로 갖고 있는 포인터 변수이다.일반 포인터가 가르키는 주소 값에는 일반 변수가 있지만, 이중 포인터가 가르키는 주소 값에는 또 다른 포인터가 있다.따라서 이중 포인터를 통해 일반 변수에 접근하기 위해서는 *(에스터리크)를 2번 사용하여 접근해야한다.// 일반 변수 data int data = 10;// 일반 포인터 변수, p_dataint *p_data = &data;// 이중 포인터 변수, p_p_dataint **p_p_data = &p_data;// 일반 포인터를 통해 일반 변수 접근printf("%d", *p_data); // 이중 포인터를 통해 일반 변수 접근printf("%d", **p_p_data);   2. 이중 포인..
8bit Timer / counter - Phase Correct Fast PWM Mode 서론  이번에는 CTC (Clear timer compare match) Mode, Normal Mode, Fast PWM (Pulse Width Modulation) Mode 에 이어 Phase Correct Fast PWM mode에 대해서 공부하겠다. 특히 기존에 다루었던 Fast PWM Mode와 비교하며, 공부하겠다.   본론💡 1. Dual Slope와 Single Slope의 차이 Single Slope는 TCNT Register 값이 MAX값에 도달하면 0으로 초기화된다.Dual Slope는 TCNT Register 값이 Max값에 도달하면 바로 0으로 초기화되지 않고, MAX값에서부터 시작해서 1씩 줄어가며, Counter의 bottom값이 0으로 카운트한다.그래서 Dual Slope에..
Pointer arry (포인터 배열) 1. 포인트 배열이란 무엇인가?같은 자료형을 갖는 포인트들을 모아 만든 배열포인트 선언과 포인트 배열 선언은 다음과 같다.// 포인트 선언int *p_data;// 포인트 배열 선언// int *형 포인트를 3개를 모아 만든 배열int *p_arry[3]    2. 포인트 배열의 사용 예시포인터 배열로 여러 개의 문자열을 저장 및 출력.#include int main(void) { char* p_string[5]; p_string[0] = "dog"; p_string[1] = "elephant"; p_string[2] = "horse"; p_string[3] = "tiger"; p_string[4] = "lion"; for (unsigned char i = 0; i p_string 배열명을 갖는 배열을 ..
Register variable 1. 레지스터 변수란 무엇인가?Local variable와 Global variable은 주기억장치인 메모리 공간에 저장한다.Register variable은 CPU내에 있는 임시기억장치인 Register에 저장한다.따라서 이미 연산을 수행하는 ALU (Arithmatic Logic Unit)가 있는 CPU내에 있기 때문에 상대적으로 지역 변수와 전역 변수와 비교했을 때, 데이터를 옮겨지는 과정이 없기 때문에 연산 속도가 빠르다.따라서 자주 사용하는 데이터 및 변수에 대해서 레지스터 변수로 사용하는 것이 일반적이다. 2. 레지스터 변수 주의사항전역 변수를 레지스터 변수로 사용할 수 없다.▶ 전역 변수의 lifetime은 프로그램의 시작과 끝이기 때문에 한정적인 레지스터에 계속해서 데이터를 저장하기 어렵기..
8bit timer/counter를 가지고 놀기 (1) Verilog를 공부하면서 ATmega에 대한 감각과 지식을 점차 사라지는 것을 느꼈다.... 그래서 Verilog 1차 정리를 다한 뒤, 8bit timer / counter 0, 2와 다양한 모드을 이용해 펄스파형을 출력하고,관찰함으로서 ATmega 128의 timer/counter를 다시 정리 및 상기하도록 하겠다.   1. 8bit Timer / Counter 0 (CTC Mode)환경) PB4(OC0)을 파형 출력핀으로 설정 Prescaler, N : 128Output Compare Register 0, OCR0 : 174Frequency of output compare 0 Signal, foc0 : 357.1428571Hz   설명) CTC Mode의 Time diagram은 다음과 같다. T..
Verilog RTL 설계 (6월 13일 - 5) 1. Parameter를 갖는 Module 설계- Q) 왜 Parameter를 갖는 Module를 설계하는가?모듈의 재사용성 및 범용성Parameter를 변경함으로써 다양한 디자인 요구에 쉽게 대응하기 위해서시뮬레이션와 테스트의 편의성을 위해서성능 최적화- 예시를 통해 Verilog에서 Module를 정의할 때, 어떻게 Parameter를 갖는 Module를 정의할 수 있는지를  살펴보자.    2. Parameter를 갖는 8bit comparator- 이번에는 입력 변수의 크기를 parameter로 정의한 comparator에 대해서 설계한다. module Comparator_by_using_parameter #(parameter N = 8) ( input [N-1:0] a, b, ..