목록분류 전체보기 (114)
승코딩당당당
문제[C++] 백준 15654: N과 M (5) SILVER 3https://www.acmicpc.net/problem/15654 접근 방법이 문제(백준 15654)는 주어진 N개의 서로 다른 자연수 중에서 M개를 골라 나열하는 모든 수열을 출력하는 문제다.즉, 중복 없는 순열을 구하는 문제이고, 입력으로 주어진 수들을 사용한다는 점이 15649랑 다르다. 문제 조건:수들은 1, 2, 3, … 이 아니라 입력으로 주어지는 임의의 수들한 수는 한 번만 사용할 수 있음 (중복 선택 불가)출력은 사전 순(오름차순) 으로 나와야 함그래서 풀이 전략은:먼저 입력받은 수들을 vect에 저장하고 sort로 정렬한다.→ 이렇게 하면 백트래킹을 할 때 작은 수부터 탐색하게 되어, 자연스럽게 사전 순으로 수열이 출력된다..
이번 실습에서는 변수의 선언 방식에 따라 메모리의 어느 영역에 배치되는지를 직접 확인해보았다.임베디드 시스템에서는 메모리 구조를 이해하는 것이 매우 중요하며, 특히 전역 변수, static 변수, 지역 변수, const 상수 등이 각각 어떤 메모리 영역에 저장되는지를 명확히 아는 것이 필요하다. 이를 위해 전역 변수(.data / .bss), 읽기 전용 상수(.rodata), 지역 변수(Stack), 그리고 전역 배열을 이용한 힙 역할 영역을 코드로 선언하고, ADS 디버거를 통해 실제 메모리 주소를 확인하였다. 단순히 이론적으로 배우는 것이 아니라, 브레이크포인트를 걸어 Expressions 창에서 변수의 주소를 직접 확인함으로써 각 영역의 차이를 비교하였다. 이 과정을 통해 Flash 영역, RAM ..
문제[C++] 백준 2578: 빙고 SILVER 4https://www.acmicpc.net/problem/2578 접근 방법이 문제는 사회자가 숫자를 하나씩 부를 때마다, 현재 내 빙고판에서 몇 개의 빙고 줄이 완성되었는지를 확인해서가장 처음으로 빙고 3줄 이상이 되는 순간의 호출 횟수를 출력하는 문제다. 기본 아이디어는 다음과 같이 잡았다.빙고판 입력5×5 빙고판을 vect[5][5]에 저장한다.이후 사회자가 부르는 숫자 25개를 call 벡터에 저장한다.숫자가 불릴 때마다 처리find(call[i]) 함수로 현재 숫자 call[i]이 빙고판 어디에 있는지 찾아서 그 위치를 -1로 표시한다.(지워진 칸 = 체크된 칸)동시에, 그 칸의 좌표를 전역 변수 yy, xx에 저장해둔다.해당 위치 기준으로 빙..
이번 실습에서는 TC725 보드에서 GPIO를 이용해 4자리 FND(7-Segment) 디스플레이를 제어하는 카운터 시스템을 구현한다. 하드웨어 SPI 모듈을 사용하는 대신, SCLK·RCLK·DIO 핀을 직접 제어하는 비트뱅잉(Bit-Banging) 방식의 소프트웨어 SPI로 데이터를 전송하도록 구성하였다. 카운터 값은 0부터 9999까지 증가하며, 각 자리 숫자는 _LED_0F[] 배열을 통해 7-Segment 패턴으로 변환된다. 4자리 FND는 멀티플렉싱 방식으로 동작하며, send_port() 함수를 통해 자리 선택 신호와 세그먼트 데이터를 순차적으로 출력하여 사람이 보기에 동시에 켜진 것처럼 보이도록 구현하였다. 또한 두 개의 스위치를 이용해 동작을 제어한다.SW1 : 카운터 시작 / 정지 토글..
이번 실습에서는 Infineon AURIX TC275의 System Timer Module(STM)을 이용해 주기 인터럽트 기반 LED 신호등 시스템을 구현한다. 단순한 GPIO 토글이 아니라, STM Compare Interrupt를 활용하여 일정 주기(0.5초 Tick)를 생성하고, 이를 기반으로 상태를 전환하는 구조로 설계하였다. STM 인터럽트 핸들러(STM_Int0Handler)에서는 Compare Flag를 클리어하고 다음 인터럽트 시점을 갱신한 뒤, g_tickCnt와 g_state를 이용해 신호등 상태를 순환하도록 구성했다. 상태는 총 3단계로 구성되며, 아래 형태로 동작한다. State 0 : Red LED ONState 1 : Blue LED ONState 2 : Blue LED Bli..
AURIX TC27x 보드에서 ERU(External Request Unit) 기반 인터럽트를 이용해 LED의 blinking을 제어하는 프로그램이다. 기본 동작은 while 루프에서 파란 LED(P10.2)와 빨간 LED(P10.1)를 P10_OMR 레지스터로 지속적으로 토글하여 깜빡이게 하고, 버튼(P02.0, P02.1)이 눌리면 인터럽트가 발생해 blinking을 멈추거나 다시 시작하도록 구성하였다. 인터럽트 서비스 루틴(ISR)에서는 LED를 직접 제어하지 않고, 전역 변수 g_blinkOn을 토글하여 현재 blinking 상태만 변경한다. 메인 루프는 이 플래그 값을 확인해 1일 때만 LED를 토글하고, 0이면 아무 동작도 하지 않는다. 이를 통해 인터럽트는 상태 제어, 메인은 실제 동작 수행..
이번 실습에서는 Infineon AURIX TC275와 Easy Module Shield v1을 이용해 하나의 ERU 모듈에서 두 개의 외부 인터럽트를 동시에 처리하는 Multi-interrupt 구성을 구현한다. P02.0과 P02.1에 연결된 두 개의 버튼을 각각 ERS2, ERS3로 매핑하고, 이를 통해 Blue LED(P10.2)와 Red LED(P10.1)의 상태를 독립적으로 토글하도록 설계했다.ERS2 → ERU0 → ISR0는 Blue LED 토글, ERS3 → ERU1 → ISR1은 Red LED 토글을 담당하며, 두 인터럽트 소스가 서로 간섭하지 않도록 SCU_EICR, SCU_IGCR, SRC_SCU_SCU_ERU0/1 레지스터를 각각 분리해서 설정하는 것이 핵심이다. 특히 ERS3 경..
이번 포스팅에서는 Infineon AURIX TC275와 Easy Module Shield v1 환경에서 버튼 입력을 이용해 파란색 LED를 제어하는 세 가지 방법을 정리한다.먼저 가장 기본적으로, 버튼을 누르면 Blue LED가 켜지도록 GPIO 레지스터 값을 직접 제어하는 방식부터 시작해서, ERU(External Request Unit)를 설정해 버튼에서 손을 떼는 순간(라이징 엣지)에 LED가 켜지도록 인터럽트로 동작을 바꾸는 실습을 진행한다. 마지막으로, P10_OMR 레지스터를 활용해 버튼을 누를 때마다 OMR 레즈스터를 이용해 Blue LED 상태가 토글되도록 구현하면서, 단순 ON/OFF 제어를 넘어 하드웨어가 제공하는 토글 기능을 어떻게 활용할 수 있는지도 함께 확인한다. 실습 과정에서는..
문제[C++] 백준 15652: N과 M (4) SILVER 3https://www.acmicpc.net/problem/15652 접근 방법백준 15652번은 1부터 N까지의 자연수 중에서 M개를 고르는 경우를 출력하는 문제인데,비내림차순(오름차순+중복 허용)같은 수를 여러 번 골라도 됨이라는 점이 15650번(중복 허용 X)과 다르다.https://xeungcoding.tistory.com/87 [C++] 백준 15650: N과 M (2)문제[C++] 백준 15650: N과 M (2) SILVER 3https://www.acmicpc.net/problem/15650 접근 방법1부터 N까지 중에서 M개를 고르는 조합(오름차순) 을 모두 출력하는 문제다.순서가 바뀐 경우는 같은 조합으로 취급하므xeung..
이번 실습에서는 Infineon AURIX 기반 보드에서 GPIO 레지스터를 직접 제어하여 입력 스위치 상태에 따라 LED를 제어하는 방법을 구현해본다. 포트 입력 레지스터(P02_IN)를 통해 스위치의 상태를 읽고, 출력 레지스터(P10_OUT)를 이용해 Red LED와 Blue LED를 각각 On/Off 하도록 구성한다. 또한 IOCR 레지스터를 설정하여 입력 핀과 출력 핀의 동작 모드를 지정하고, Watchdog 비활성화 및 CPU 동기화 과정까지 포함하여 실제 Bare-Metal 환경에서 동작하는 전체 흐름을 확인한다. 본 실습은 Infineon AURIX TC275 보드에 Easy Module Shield V1을 장착한 환경에서 진행하였다. Easy Module Shield의 사용자 스위치와 L..