본문 바로가기

분류 전체보기842

LSB, MSB 출처 : https://blog.naver.com/ansdbtls4067/220886567257 LSB와 MSB란 무엇인가? 안녕하세요? 땜쓰 인사드립니다. 오늘은 LSB와 MSB에 대해서 함께 알아보도록 하겠습니다. 우선 이들... blog.naver.com LSB 와 MSB LSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미한다. MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미한다. LSB 위치는 가장 값이 작은 비트인 2^0에 위치하고 있으므로 LSB의 값을 확인하면 숫자가 짝수인지 홀수인지 쉽게 알아낼 수 있다. 또한 LSB는 프로그래밍시 주로 난수발생 함수, 해시 함수, 검사합(Check.. 2023. 1. 31.
컴파일러 워닝 "was set but never used" 해결법 변수를 선언하거나 함수를 정의하고 사용하지 않으면 컴파일러가 "was set but never used" 경고를 낼 때가 있다. 다음과 같이 캐스팅하면 된다. void never_call() { (void)abc; } 2023. 1. 31.
#ifdef 와 #if defined() 의 차이 #ifdef 와 #if defined() 는 항목이 하나일 땐 동일하다. #ifdef A #if defined(A) 차이점은 #if defined() 만 아래처럼 여러 항목을 비교할 수 있다고, #ifdef 는 이런 표현이 불가능하다. #if defined(A) && (defined(B) || defined(C)) 출처 : https://zoosso.tistory.com/1201 2023. 1. 31.
STM32 ] CAN Interrupt CAN 통신 송수신 이전글 : 2023.01.29 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 송수신 STM32 ] CAN 송수신 CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 eteo.tistory.com bxCAN 의 interrupt source 1. Transmit Request Completed 2. Frame is received in RX FIFO0 3. Frame is r.. 2023. 1. 31.
Git ] 로컬 저장소에 강제 pull 하기 (local을 remote로 덮어쓰기) local 을 remote 내용으로 덮어쓰기 $ git fetch --all $ git reset --hard origin/master master 말고 다른 local branch에 덮어쓰기 $ git fetch --all $ git reset --hard origin/ master 를 다른 branch에 저장해둔 후 덮어쓰기 $ git checkout master $ git branch $ git fetch --all $ git reset --hard origin/master 2023. 1. 31.
WinForms ] GroupBox, Panel, TabControl 속성 GroupBox 컨트롤의 그룹으로 GroupBox를 생성 후 드래그앤드랍으로 원하는 컨트롤을 GroupBox 안에 위치시키면 된다. GroupBox 안에있는 컨트롤들의 속성을 각각 변경할 수 있지만 예를들어 GroupBox의 ForeColor를 red 로 지정하면 안에있는 컨트롤들이 ForeColor를 상속받는다. Panel Panel 은 GroupBox와 유사하게 컨트롤을 그룹핑하는데 쓰인다. TabControl TabControl 은 많은 컨트롤을 적은 공간에 그룹핑하여 표시하는 데 유용하다. TabControl 안에 GroupBox 또는 Panel을 넣을 수 있다. 화살표버튼을 눌러 탭 추가/제거가 가능하다. 또한 페이지 안쪽을 클릭하면 TabPage 컨트롤의 속성을 설정할 수 있고 페이지 바깥쪽을.. 2023. 1. 31.
FNIRSI 오실로스코프 사용법 (1013D) 상단 프로브 커넥터 CH1, CH2. 파워 LED, C type 포트, 전원 버튼이 있다. 그리고 프로브 커넥터 사이에 있는 고리에 프로브를 꼽으면 sample 1KHz 파형을 볼 수 있다. MENU - System settings 스크린 밝기와 그리드 라인 밝기를 조절 가능하다. 그리고 항상 50% 부근에서 트리거 잡아주는 기능을 enable disable 할 수 있다. 그 옆에는 현재 RUN 상태인지 STOP 상태인지 볼 수 있는 아이콘이 있다. CH1, CH2 컨트롤 블락 채널 On/Off 그리고 프로브의 슬라이드 스위치를 올리면 측정 전압레벨을 높여 쓸 수 있다. 우측 상단의 CTRL 버튼을 눌러 Vertical 축(전압 scale)을 조정할 수 있다. 현재 CH1 컨트롤 블락에 1V/div 라고.. 2023. 1. 30.
WinForms ] ProgressBar, PictureBox, NumericUpDown, TrackBar 속성 ProgressBar 사용자에게 진행 상황을 알려줄 수 있는 컨트롤이다. Maximum 과 Minimum 속성을 통해 상한과 하한을 설정할 수 있다. Value 속성으로 현재 값을 지정할 수 있다. Style 은 세 종류가 있는데 Blocks 와 Continuous 가 우리가 일반적으로 아는 Progress Bar이고 둘 은 윈도우10 이상에선 차이가 없는 듯 하다. Style에서 Marquee 를 선택하면 아래와 같은 애니매이션을 볼 수 있다. Marquee 같은 경우 속성에서 속도도 설정 가능하다. PictureBox 컨트롤을 추가하고 화살표를 눌러 이미지를 선택한다. 크기 모드에서 Normal / StretchImage / AutoSize / CenterImage / Zoom 중 하나를 선택할 수 .. 2023. 1. 29.
C#, WinForms ] PictureBox 위의 Label 배경색 투명하게 설정하기 디자이너에서 단순히 label의 BackColor를 Transparent 로 지정되도 투명하게 오버레이되지 않는다. 방법은 label 의 Parent 속성을 label 뒤에 있는 컨트롤로 변경해주는 것이다. label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; 단, label을 생성하면 디폴트 Parent 속성이 Form 인데 PictureBox로 바꾸었으니 Location 위치도 바꾸어 주어야 한다. (0, 0)이 PictureBox의 좌상단이다. 2023. 1. 29.
STM32 ] CAN 송수신 + Acceptance Filter CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 불리는 CAN 모듈(컨트롤러)이 2개 있으며 특징은 다음과 같다. 2 CAN Controllers are avialable. CAN1 and CAN2 CAN1 is called Master bxCAN and CAN2 is c eteo.tistory.com HTML 삽입 미리보기할 수 없는 소스 내가 사용한건 SN65HVD230 CAN 트랜시버 모듈이다. CAN1과 CAN2 둘 다 .. 2023. 1. 29.
빅스비로 제어 가능한 Wifi 스마트 스위치 설치기 (No 중성선) 이전까지는 빅스비로 전등을 제어하는 데 sonoff 라는 제품을 사용했다. 이 제품의 단점은 설치 후 스위치로는 더이상 불을 켜고 끌 수 없고 항상 스위치를 on 상태에 두어야 한다는 데 있다. 대기전력이 크지는 않지만, 급할 때도 항상 핸드폰을 찾아 켜고 꺼야 한다는 점은 불편할 수 밖에 없다. 그래서 이번에 이사한 김에 sonoff를 버리고 집 스위치를 다 스마트 스위치로 바꾸었다. 1. 알리 익스프레스에서 중성선이 필요없는 터치식 스마트 스위치를 구입한다. 제품 링크 : https://www.aliexpress.com/item/4000192490763.html?spm=a2g0o.order_list.order_list_main.10.21ef18025YgPhX 주문한지 4일만에 제품이 도착하였다. 차단.. 2023. 1. 28.
티스토리 ] 400 Bad Request 해결법 원인은 브라우저의 쿠키가 너무 많이 쌓여있는 탓 브라우저의 "인터넷 사용 기록 삭제" 페이지로 간다. 구글 크롬의 경우 단축키 Ctrl + H 쿠키를 삭제 후 접속을 재시도하면 된다. 2023. 1. 28.
STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 불리는 CAN 모듈(컨트롤러)이 2개 있으며 특징은 다음과 같다. 2 CAN Controllers are avialable. CAN1 and CAN2 CAN1 is called Master bxCAN and CAN2 is called Slave Both supports CAN protocol version 2.0A and B Bit rates up to 1 Mbit/s Three transmit mailboxes Two receive FIFOs with three stages 28 filter banks shared between CAN1 and CAN2 Tx mailboxes 유저가 CAN 메시지를 구성해 담을 수 있는.. 2023. 1. 27.
PC(Windows)에 삼성노트 앱 설치 (Microsoft Store 에 다운로드 버튼이 없을 때 해결법) PC(Windows)에 삼성노트 앱 설치하기 마이크로소프트 스토어 에서 삼성 노트 앱을 다운받으려고 하지만 다운로드 및 설치 버튼이 없을 때 사용할 수 있는 해결법입다. 1. 아래 화살표 버튼을 클릭한다. 2. 링크 복사 를 클릭한다. 3. 아래 사이트에 접속한다. 사이트 주소 : https://store.rg-adguard.net/ Microsoft Store - Generation Project (v1.2.3) [by @rgadguard & mkuba50] Online link generator for Microsoft Store. You can use it to get links to almost all apps, games, themes from the Microsoft Store. store.r.. 2023. 1. 27.
[UML] 시퀀스 다이어그램 (Sequence Diagram) 시퀀스 다이어그램은 특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는지 표현하는 행위 다이어그램입니다. 현재 존재하는 시스템이 어떠한 시나리오로 움직이고 있는지를 나타내는데 장점을 가지고 있습니다. 시퀀스 다이어그램을 이용하면 API 등의 유즈 케이스를 디테일하게 알 수 있고 타 시스템의 API 호출 등의 로직을 모델링할 수 있어 시나리오를 파악하기 좋습니다. 예를 들어, 고객이 29CM 사이트 주문을 했을 때 고객이 주문한 시점부터 29CM 사이트의 주문 처리 순서, 이후 반환 케이스를 연속적으로 표현할 수 있습니다. 📁 Lifeline 모델링 되는 인스턴스를 나타냅니다. Lifeline은 네모와 점선으로 이루어져 있으며 네모가 객체의 관점으로 표현했다면 클래스이고 서비스 관점으로 표현했으.. 2023. 1. 27.
TMS320F28388D ] IPC 사용하여 CPU1과 CPU2 타이머 Tick 값 Synchronization CPU1 코드 // ... IPC_clearFlagLtoR(IPC_CPU1_L_CPU2_R, IPC_FLAG_ALL); IPC_sync(IPC_CPU1_L_CPU2_R, IPC_FLAG31); msTick = 0; CPUTimer_startTimer(CPUTIMER0_BASE); // ... CPU2 코드 // ... IPC_clearFlagLtoR(IPC_CPU2_L_CPU1_R, IPC_FLAG_ALL); IPC_sync(IPC_CPU2_L_CPU1_R, IPC_FLAG31); msTick = 0; CPUTimer_startTimer(CPUTIMER0_BASE); // ... 두 코어간 동기화를 위한 API인 IPC_Sync() 함수 내부는 다음과 같다. //! Synchronises the two .. 2023. 1. 26.
CAN 통신 - 메시지 타입과 구조 CAN 통신 이전글 : 2023.01.24 - [DSP, MCU/펌웨어공부] - CAN 통신 (Controller Area Network) CAN 통신 (Controller Area Network) HTML 삽입 미리보기할 수 없는 소스 CAN 통신(Controller Area Network)은 1980년대 Bosch사에 의해 개발된 메시지 기반 네트워크 프로토콜으로, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치 eteo.tistory.com HTML 삽입 미리보기할 수 없는 소스 Data Frame Remote Frame Error Frame Overload Frame 이 중 Error Frame 과 Overload Frame 은 컨트롤러가 알아서 처리하므로 프로그래밍 할 때는 주로 Dat.. 2023. 1. 26.
Notepad ] HEX-Editor 플러그인 사용 플러그인 - 플러그인 관리 hex 검색 후 HEX-Editor 설치 플러그인 - HEX-Editor - View in HEX 2023. 1. 25.
파워포인트 ] 개체 관리, 그룹/그룹해제 쉽게 하기 Alt+F10 을 눌러 개체 선택 창 표시 개체 순서 변경 개체가 둘 이상 겹쳐있는 경우 목록에서 위에 있는 개체가 앞에 표시됨 목록에서 하나 이상의 항목을 클릭한 상태에서 드래그 앤 드롭으로 개체의 순서를 변경할 수 있음 그룹화 Ctrl+Click 으로 그룹화할 항목들을 선택한 후 서식 탭에서 그룹을 선택해 그룹화 가능 2023. 1. 25.
TMS320F28388D ] RAM에 NOINIT 변수 두기 불가 Reset으로 초기화 되지 않는 램 영역에 변수를 둬서 리셋 카운트값을 저장하려고했다. 링커커맨드파일에 type=NOINIT 으로 섹션 타입을 지정할 수 있어 그렇게 했는데도 여전히 0으로 초기화된다. 찾아보니 ECC(Error Correction Code)/Parity 가 적용된 RAM 영역(M0, M1, LSx, GSx, MSGRAM 등)은 부트 과정에서 부트 롬에 마스킹된 부트코드에 의해 0으로 초기화(Clear) 된다고한다. TRM p.699 power-on reset 말고 디버거 리셋시에는 intialized 되지 않는 듯하다. 2023. 1. 25.
TMS320F28388D ] USB 라이브러리 USBHCDPipeRead()에서 무한루프 빠지는 문제 usbhostenum.c uint32_t USBHCDPipeRead(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size) { // ... while(ui32RemainingBytes != 0) { // ... while(1) { // ... // If any error event occurs then exit out of the loop. if(g_sUSBHCD.ui32IntEvents & (INT_EVENT_DISCONNECT | INT_EVENT_VBUS_ERR | INT_EVENT_POWER_FAULT)) { // // Set the pipe state to error. // g_sUSBHCD.psUSBINPipes[ui32PipeIdx].iState.. 2023. 1. 25.
Git ] 원격 저장소에 강제 push 하기 (remote를 local로 덮어쓰기) local의 내용을 remote에 강제로 덮어쓰는 방법 git push -f git push origin master -f # Example 원격 저장소의 commit 정보가 유실될 수 있으니 -f(-force) 플래그를 붙이는데는 주의가 필요하다. remote에 예상 못한 commit이 있는 경우 force push가 실패하도록 하는 방법도 있다. git push --force-with-lease Reference : https://stackoverflow.com/questions/10510462/force-git-push-to-overwrite-remote-files 2023. 1. 25.
CAN 통신 (Controller Area Network) HTML 삽입 미리보기할 수 없는 소스 CAN 통신(Controller Area Network)은 1980년대 Bosch사에 의해 개발된 메시지 기반 네트워크 프로토콜으로, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다. HTML 삽입 미리보기할 수 없는 소스 Multi-master serial communication bus. Broadcast type of Bus. (Not point-to-point) Low cost solution. Extreme robustness. (noise-immunity) High data transmission speeds. (up to 1 MBit/sec, High speed CAN 기준) Reliabilit.. 2023. 1. 24.
Wireshark ] 패킷 간 간격 캡쳐 및 유용한 기능 패킷 간 간격 (Delta Time) 캡쳐하기 캡쳐 화면에서 우클릭 - Column Preferences + 버튼 누르고 Delta time 추가 Time 열 바로 옆에 둔다. 이렇게 하면 직전에 캡쳐된 패킷과의 간격을 알 수 있다. 다만 필터를 잘 설정 해두어야 이 Delta time이 의미가 있다. 지금 캡쳐하는 패킷은 40Hz 전송하게끔 해두어서 간격이 대략 25ms 로 측정되고 있다. 기타 Wireshark 의 유용한 기능 열 우클릭해서 정렬하기 Time 포맷 변경하기 View - Time Display Format Layout 변경하기 Edit - Preferences - Appearance - Layout 인터페이스 변경하기 Capture - Options, Input 인터페이스 변경 커스텀 .. 2023. 1. 20.
윈도우 배치파일(.bat) 만들기 (레지스트리를 통해 시작 프로그램에 등록) 및 유용한 명령어 윈도우 배치파일(batch file)은 명령 프롬프트(cmd)에서 순서대로 실행할 명령어들을 한번에 일괄로 실행 실행할 목적으로 만드는 명령어들의 집합 파일이다. 보통 윈도우 배치 스크립트는 @echo off 로 시작해서 이후 실행할 명령어들이 나열된다. 여기서 @ 는 해당 명령어를 화면에 표시하지 말라는 뜻이고 echo off 는 이후 실행할 명령어들을 화면에 출력하지 않기 위해 echo를 끄는 것이다. 그 다음으로 아래 문구 또한 배치파일 초반에 적어두는 경우가 많다. pushd “%~dp0” 보통 배치파일 스크립트는 실행될 위치를 염두해 두고 상대경로로 작성을 하게 되는데, 관리자 권한으로 배치파일을 실행시 명령 프롬프트 위치가 C:\WINDOWS\system32 로 실행되기 때문에 의도한 결과가 .. 2023. 1. 18.
WinForms ] 체크박스, 라디오버튼 속성 Text AutoSize 이 값을 False로 하면 체크박스의 크기를 조절할 수 있다. 그리고 컨트롤의 CheckAlign / TextAlign 을 제대로 사용하기 위해 이 값이 False로 되어있어야 한다. CheckAlign Checked & CheckState True로하면 체크박스의 초기값을 체크된 상태로 할 수 있다. CheckState의 Interminate 은 ThreeState를 사용하는 것으로 사용자가 아무런 클릭을 하지 않았을 때의 상태를 말하는 것인데, 그냥 Checked or Unchecked 의 TwoState를 사용하는 것이 낫다. Cursor Enabled Appearance 확인란의 모양을 버튼모양으로 바꿀 수 있다. Image ImageAlign TextAlign Font .. 2023. 1. 16.
WinForms ] 콤보박스, 리스트박스 속성 아이템 추가 DropDownStyle DropDown : 사용자가 커서를 두고 직접 입력할 수 있으며, 옵션을 선택할 수도 있다. DropDownList : 사용자가 입력할 수 없고, 아이템을 선택할 수만 있다. Simple의 경우 아래처럼 콤보박스의 길이를 늘려 아이템이 다 보이게끔 할 수 있다. DropDownHeight 드롭다운의 픽셀 단위 높이이다. 예를들어 기본값에서 50픽셀로 줄이면 아래와 같이 표현된다. Sorted 이 값을 True로하면 콤보박스의 항목인 문자열을 알파벳 순으로 정렬할 수 있다. 한번 정렬를 하고나면 Sorted를 다시 False로 바꿔도 정렬된 순서가 그대로 남는다. ListBox 는 드롭다운이 없는 콤보박스와 같다. 2023. 1. 15.
C ] sscanf() 사용법 %d : 공백으로 구분된 문자열을 정수로 읽어들인다. %s : 공백으로 구분된 문자열을 문자열로 읽어들인다. %*s : 공백으로 구분된 문자열을 읽어들이지 않고 건너뛴다. #include #include int main(void) { char *str = "ABC 123"; int num = 0; sscanf(str, "%*s %d", &num); printf("%d\n", num); } %[A] : 현재 위치에서 문자 A가 있는 경우 A를 문자열로 읽어들인다. %*[A] : 현재 위치에서 문자 A를 읽어들이지 않고 건너뛴다. %[^B] : 현재 위치에서 문자 B 직전까지 문자열로 읽어들인다. %*[^B] : 현재 위치에서 문자 B 직전까지를 읽어들이지 않고 건너 뛴다. (포인터는 B 위치) #inclu.. 2023. 1. 15.
C ] strtol, strtoul : 정수 문자열을 진수 선택하여 long/unsigned long 값으로 변환 strtol 함수는 정수로 구성된 문자열 str을 세번째 파라미터인 진수체계로 판단하여 long 형식 값으로 반환한다. 더이상 계산할 수 없는 문자를 발견하면 두번째 파라미터인 endptr에 해당 위치를 저장한다. #include long strtol (const char* str, char** endptr, int base); 파라미터 str : long 형식 값을 구할 문자열 endptr : 계산을 끝낸 위치를 저장할 문자열 base : 진수 리턴 값 : 계산된 long 형식 값 #include #include int main(void) { char src[100]="123 ff 16 1001 -10"; char *pos=NULL; long value1=0,value2=0,value3=0,value4.. 2023. 1. 15.
C ] strtok, strtok_r : 구분 문자로 문자열 쪼개기 strtok 함수는 문자열을 구분문자(delimiter) 단위로 쪼개는데 사용되는데 이렇게 쪼개진 문자열을 토큰(token)이라고 한다. str에 쪼개고자 하는 문자열을 전달하면 str의 가장 첫번째 문자가 토큰의 시작이 되고 delim에 포함된 문자들 중 하나를 만나는 곳이 토큰의 마지막이 되며, 원래 delimiter가 있었던 토큰의 마지막을 null-terminted 하고 토큰의 시작 주소를 리턴한다. strtok 함수는 내부에 static 변수로 str 문자열에서 작업을 끝낸 다음 위치를 기억하고 있기 때문에, 이 다음에 str인자로 NULL을 전달하며 호출하면 이전에 찾았던 토큰 바로 다음 문자부터 시작해서 분리작업을 진행한다. 그러다 맨처음에 전달된 str 문자열의 NULL 문자에 도달하게 되.. 2023. 1. 15.