본문 바로가기

전체 글

(611)
HCLK, FCLK, PCLK [이론] FCLK, HCLK, PCLK란? ​우선 공통적으로 포함되는 CLK는 Clock을 의미한다.일정 주기마다 발생하는 클럭에 따라인의적인 신... blog.naver.com
UART 통신 이론, stop, start bit NONE Parity bit, 8 Data bit, 1 Stop bit N,8,1의 의미는 패리티 비트는 없고 데이터 비트는 8, 스톱 비트는 1로 총 9개의 비트가 한문자를 표현한다는 뜻이다. 여기에 표시는 안 하지만 시작 비트 1개를 더해 총 10개의 비트가 한문자를 표현하게 된다. 한문자가 10개의 비트로 구성되면 초당 960 문자를 주고받을 수 있다는 뜻이다. 장치에서는 104 µs 시간 간격으로 전압을 10회 측정하여 시작 비트(Start bit), 종료 비트(1 Stop bit)를 버리고 8개의 비트로 ASCII 테이블에 대입해 문자를 확인하게 된다. "A" ASCII 테이블에서 보면 숫자 65이며 이를 16진수로 변환하면 41이고 이를 이진수로 환산하면 0100 0001 이 된다. 여기에 시..
시리얼 통신 기초 (Serial Communication) Hardware Implementation앞선 내용들은 시리얼의 개념에 대한 내용이었습니다. 여기서는 시리얼의 하드웨어 구현, signal level 에서 살펴봅니다. (RS-232, logic-level (TTL)) 마이크로 컨트롤러나 low-level IC 의 경우 TTL (transistor-transistor logic) level 에서 시리얼 통신을 구현합니다. TTL serial signal 은 마이크로 컨트롤러의 동작 전압에 의해 변화하는데 보통 0V ~ 3.3V 또는 5V 입니다. VCC level (3.3V, 5V, etc.)의 signal의 경우 idle 상태를 의미하며 bit 값으로는 1로 표현됩니다. 이 값은 stop bit 의 값(1)과 같습니다. 0V (GND) signal 은 ..
Fixed Point Precision(고정 소수점) 과 Floating Point Precision(부동 소수점) 컴퓨터론 숫자표현을 어떻게 할수있을까요? 바로 두가지 방법으로 표현할 수 있답니다. 1. Fixed Point 2. Floating Point 가수부(Mantissa)는 1.xxxx 형태로 정규화를 한 뒤 가장 왼쪽에 있는 1을 제거하고 소수점 이하의 자리 값만 표현한다. 예를 들어, 13.5를 32bit 부동소수점 (float)으로 표현해보자. 13.5 → 1101.12 [진수변환] 1101.12 → 1.10112 x 23 [정규화] 부호비트는 양수이므로 0, 지수부는 3이므로 127 + 3 = 130, 2진수로 표현하면 100000102, 가수부는 1.1011에서 소수점 이하 자리만 표현하면 1011이 된다. 최종 값은 0100 0001 0101 1000 0000 0000 00002 Floating ..
[C++] tuple tuple은 기존의 std::pair를 확장한 자료형입니다. std::pair가 2개의 값을 한 번에 저장할 수 있지만 tuple은 제한이 없습니다. 기존의 C++ TR1에서는 10개까지 저장이 되었습니다. tuple은 2개 이상의 값을 한 번에 반환하거나 전달할 때 사용하면 유용합니다. 물론 구조체를 통해서 가능한 방법이긴 하지만 구조체는 정의를 해서 사용해야 합니다. tuple을 이용하면 간단하게 다양한 값들을 한 번에 전달이 가능하게 됩니다. 먼저, std::tuple 안의 안에 필요한 변수 타입들을 작성합니다. typedef로 해당 타입을 OddOrEven 타입이라고 명명했습니다. tuple 변수에 값을 넣을 때는 std::make_tuple()을 사용하면 됩니다. 해당하는 위치에 해당하는 값을 ..
Quantization Quantization (signal processing) - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Process of mapping a continuous set to a countable set The simplest way to quantize a signal is to choose the digital amplitude value closest to the original analog amplitude. This exa en.wikipedia.org Introduction to quantify neural network - Programmer Sought Originally appeared..
[BOJ] 1987 알파벳 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net string형으로 해보려했는데 잘 안풀린 문제다. c++에서 string형 다루는 방법을 잘 모르는 것을 많이 느꼈다. 비트마스킹 방법을 처음으로 직접 적용해본 문제이다. 백준 1987번 알파벳 문제 링크입니다: https://www.acmicpc.net/problem/1987 DFS(Depth First Search) 알고리즘과 백트래킹 기법을 요구하는 문제였기 때문에 visited 배열을 사용하지 않아도 되는 문제였습니다. 대신, 문제 조건에.. ja..
[C++] string::find() (문자열에서 특정 문자 찾기) string::find() string 클래스의 멤버함수로서, str.find("찾는 문자") 로 사용 반환값은 찾는 문자의 첫번째 인덱스값 찾는 문자가 없을 경우는 string::npos를 리턴한다. (npos는 no position으로 쓰레기값 나옴) [C++] string::find() (문자열에서 특정 문자 찾기) string::find() string 클래스의 멤버함수로서, str.find("찾는 문자") 로 사용 반환값은 찾는 문자의 첫번째 인덱스값 찾는 문자가 없을 경우는 string::npos를 리턴한다. (npos는 no position으로 쓰레기값 나옴. lollolzkk.tistory.com
[BOJ] 2580 스도쿠 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net DFS를 이용해서 스도쿠를 참신하게 풀어낸다. 나는 4방향으로 모두 이동하는 것을 생각했는데 그렇게 풀지 않고 81개의 칸을 차례로 돌면서 0인 값이 나온다면 1부터 9까지 수를 가능한 경우를 모두 넣어준다. 백준 2580번 스도쿠 문제 링크입니다: https://www.acmicpc.net/problem/2580 흥미로운 백트래킹 문제였습니다. 처음에 풀 때는 3*3 칸 내에서도 1~9가 하나씩 존재해야한다는 규칙을 잊어먹어서 틀렸습니다. 3*3 칸 내 인덱스..
[BOJ] 3108 로고 BFS 탐색을 통해 한 붓 그리기 를 수행하는 문제이다 3108번: 로고 로고는 주로 교육용에 쓰이는 프로그래밍 언어이다. 로고의 가장 큰 특징은 거북이 로봇인데, 사용자는 이 거북이 로봇을 움직이는 명령을 입력해 화면에 도형을 그릴 수 있다. 거북이는 위치와 www.acmicpc.net 1. 사이의 간격을 고려해야 풀 수 있다. [ 백준 3108 ] 로고 (C++) 백준의 로고(3108) 문제이다. [ 문제 바로가기 ] [ 문제풀이 ] 1) 처음에 접근하기가 굉장히 어려웠던 문제이다. 먼저 입력을 받는 것 부터 차근차근 알아보도록 하자. 입력으로는 사각형의 양 끝 yabmoons.tistory.com 2. DFS로 해야한다 생각했는데 BFS로도 풀 수 있는 문제였다. [BFS] 3108번 로고 3108..
[C] 배열 초기화( memset, calloc ) 1. memset 2. calloc 3. 기본 C 언어 코딩 도장: 36.2 배열을 0으로 초기화하기 이번에는 배열의 모든 요소를 간단하게 0으로 초기화해보겠습니다. 자료형 배열이름[크기] = { 0, }; array_init.c #include int main() { int numArr[10] = { 0, }; // 배열의 요소를 모두 0으로 초기화 printf("%d\n", nu dojang.io [C] malloc, calloc, realloc을 이용한 메모리 동적 할당 동적할당을 사용하는 이유는 무엇일까? c언어의 메모리 구조에 대해서 알고 있다면 동적할당을 사용하는 이유를 쉽게 알 것이다. 2014/06/26 - [Programming/C언어] - [C] 스택(Stack), 힙(Heap), 데이..
[ML] 참고 ganghee-lee.tistory.com/31?category=841638 딥러닝 역전파 backpropagation이란? 이전 글에서 설명했듯이 활성화 함수를 적용시킨 MLP에서 XOR과 같은 non-linear 문제들은 해결할 수 있었지만 layer가 깊어질수록 파라미터의 개수가 급등하게 되고 이 파라미터들을 적절하게 ganghee-lee.tistory.com
im2col thumbs.gfycat.com/AshamedSkinnyAndalusianhorse-mobile.mp4
[ML] CNN Figure 2. Overview and details of a convolutional neural network (CNN)... Download scientific diagram | Overview and details of a convolutional neural network (CNN) architecture for image recognition. (a) Zoom in on a three-channel RGB input, convolution + activation function, e.g., Rectified Linear Unit (ReLU) (blue) and adjace www.researchgate.net 그림이 예쁘게 정리가 잘 돼있어서 저장한다.
[C & C++] 2차원 배열과 포인터 10. 2차원 배열 출처 http://coolprogramming.springnote.com 저작자 NetGong 배열은 같은 자료형의 연속메모리라고 했습니다. 기억하시죠?! 그리고 앞에서 배운 배열은 모두 1차원 배열이라고 합니다. []연산자 하나 blog.daum.net C언어 2차원배열(이중포인터) 동적메모리할당 * 동적메모리 할당에 대해서는 이미 몇번의 포스팅에서 이야기 한적이 있습니다. 이번 포스팅에서는 2차원... blog.naver.com
[BOJ] 1525 퍼즐 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net #include #include #include #define TARGET "123456780" using namespace std; string Input; map visit; queue q; int d[4] = { -3, -1, 1, 3 }; void input(){ int i =0 ; string N; while( i++ > N; Input += N; } } bool possible(int cur, int d){ if( (cur % 3) == 0 && d == -1) return false; if( (cur % 3..
MSP와 PSP You are correct in a way, in the cortex m (which your stm32 is, though I can't say which variant unless you specify a part) there is one active stack pointer r13, this can however be either the MSP or PSP. The reason for two is to enable the user to easily implement a multi tasking 'operating system'. The idea is that the PSP or process stack pointer is used by the individual tasks, and the kern..
ISR(Interrupt Service Routine) 폴링이 대상을 주기적으로 감시하여 상황이 발생하면 해당처리 루틴을 실행해 처리한다면, 인터럽트는 상대가 마이크로프로세서에게 일을 처리해 달라고 요청하는 수단이다. 따라서 폴링과 대비되는 개념이다.[4][5] 폴링은 주기적으로 마이크로프로세서가 상태를 파악하기 위해 장치의 레지스터를 읽어야 한다. 이 작업이 진행되는 동안은 다른 장치는 체크가 힘들다. 그리고 이런 작업은 장치의 상태를 읽는데 마이크로프로세서의 자원이 낭비된다.[6] 마이크로프로세서의 다른일과 겹쳐 폴링이 고속의 하드웨어에서 데이터 손실될 여지가 있다면, 인터럽트는 해당 하드웨어가 CPU에게 요청하므로 빨리만 처리된다면 데이터 손실 위험이 작아진다. 폴링은 리얼타임에 문제의 소지가 있다면, 인터럽트는 필요할 때 처리되는 경향이 있어서 폴링보..
Interrupt (인터럽트), Exception (예외) Interrupt (인터럽트) : 제어 흐름에서 예상치 못한, 외부에서 전달되는 사건. Exception (예외) : 프로세서 내부에서 발생하는 예상치 못한 사건. 일부 architecture 에서는 exception과 interrupt를 interrupt 로 통합하여 용어를 사용하기도 하는 반면, 다른 architecture에서는 구분하여 사용하기도 한다. 구분할 경우 외부 인터럽트는 인터럽트로, 내부 인터럽트는 예외로 생각하면 된다. - 내부 인터럽트 (Internal interrupt) - exception . SVC (SuperVisor Call) 인터럽트 : 외부의 프로그램이 의도적으로 호출. 예를 들어 다른 프로세스 수행 중 새로운 프로세스를 실행하면 자원 할당 등의 동작을 수행 . 산술 오버..
[Linux] 실행파일 인자, argv, argc main 함수에 argc, argv 라는 매개변수를 전달한다. argc는 argument count로 int형으로 정의한다. 인수들의 개수이다. argv는 argument vector의 줄임말이며 char형 더블포인터이다. 인수들 자체를 나태니는 문자열들의 배열이다. [리눅스환경] 1. argc, argv로 프로그램에 인수 전달 argc, argv로 프로그램에 인자 전달하기 우리는 프로그램을 만들어 실행 할 때 늘 같은 조건으로 하지 않는다. 프로그램에 중요한 인자 값을 전달해야 할 때도 있다. 예를 들어 서버/클라이언트 프 gday2code.tistory.com 먼저, 다음과 같이 실행을 했다고 생각해 봅시다. 초록색으로 칠한 것은 실행 파일 명입니다. work를 실행을 한 것입니다. 그리고 보라색으로..
[C++] template, header, class 그런데 템플릿으로 클래스를 만들 경우는 C++에서 주의할 점이 있는데 h 파일과 cpp 파일로 나누어 선언, 정의할 경우 이 클래스를 사용하는 파일에서는 h 파일뿐 아니라 cpp 파일도 #include해줘야 합니다. 그게 아니라면 h 파일에 선언과 정의를 몰아서 다 하거나... 이게 C++에서 발생하는 결함 중 하나입니다. [C++ 강좌] 065 - 템플릿의 작성 (5) - 클래스 템플릿, 클래스 템플릿의 typedef 오랜만이예요.(아마도)저번 글까지가 함수 템플릿에 관한 내용이었는데, 이번엔 클래스 템플릿에 대한 내용... blog.naver.com
[C++] template
[Basic] cpu, core, processor 3 Processor chip 안에는 다음과 같이 3가지 종류가 있을 수 있겠습니다. single-core processor multi-core processor multi processors 1. multi-core processor 멀티 코어 프로세서란? 전에 포스팅한 멀티 프로세싱과 헷갈릴 수 있는 용어입니다ㅎㅎ 용어 중간에 '코어'만 들어갔을뿐 그게 그거 같죠... 차이를 알아보겠습니다. 멀티 코어 프로세서는 여러 개의 작업을 보다 효율 donghoson.tistory.com 사진에서 E) multi core with shared chche 를 보면 중복되는 부분이 있다. 코어가 두개 있는 cpu이다. cpu = 2개의 코어 + chche 인 것이다. 즉, cpu state, interrupt log..
HAL 라이브러리 HAL 라이브러리 구성 소스파일은 단순히 cubeMX에서 PG13(Green LED)을 Output으로 TrueSTUDIO로 Generate한 코드다. TrueSTUDIO의 첫화면은 다음과 같다. HAL 라이브러리를 사용하면서, main.c에서는 단순히 main.h 헤더를 불러오게.. noel-embedded.tistory.com
Pull up, Pull down 풀업(Pull-up), 풀다운(Pull-down)장치 개요 아두이노를 사용하다 보면 전류를 제어하는 기능을 사용하거나 버튼을 만들때 스위치를 사용해야 할 경우가 많이 생깁니다. 버튼식 스위치는 버튼 상태에 따라 다르게 출력되는 값을 통해 kocoafab.cc
GPIO [STM32 HAL] GPIO Referencehttps://leanpub.com/mastering-stm32https://github.com/eziya/STM32F4_HAL_EXAMP... blog.naver.com
[Git] 로컬에서 원격 branch 삭제하기 Local에서 브랜치 항목을 살펴보기 위해서는 터미널에서 git branch 를 치면 Local의 branch 들을 확인 가능하고 git branch -r을 치면 Remote의 branch 들을 확인할 수 있다. 간혹 Remote 저장소 (원격 저장소)에 추가되거나 삭제된 브랜치가 나의 Local에 적용안될 때가 있다. 상기내역을 보면 Local에서 삭제된 fetch 브랜치들이 remote에는 적용되지 않음을 볼 수 있다 ***** Local에서 git branch -r 로 보이는 remote branch 는 실제 remote 저장소의 branch 가 아니다. 실제로는 remote 저장소의 branch를 바라보는 참조내역이라 보면 될 듯하다. 원격 저장소의 branch가 삭제되어도 Local에서 git ..
keil 프로젝트 생성 KEIL uVision 5 에서 프로젝트 생성. 타겟칩의 예로 STM32를 사용함. 개요. 본 글은 KEIL uVision 5 (KEIL MDK-ARM)에서 프로젝트 생성하는법과 main.c 를 만들어 두는 것까지 정리한다. 예로 사용되는 대상칩은 STM32F407Z로 한다. 1. KEIL uVision 5 에서 프로젝트 생성하기. 단계.. igotit.tistory.com
[Git] pull request 방법 git 초보를 위한 풀리퀘스트(pull request) 방법 · 초보몽키의 개발공부로그 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 wayhome25.github.io
[Git] 특정 branch clone