본문 바로가기

펌웨어25

1분코딩강좌 #08 최적화와 volatile에 대한 강좌 | 어셈블리어 코드분석 안녕하세요 코저씨입니다. 오늘은 volatile 에 대해 알아 보겠습니다. volatile 정의 volatile로 선언된 변수가 있는 소스코드는 최적화 하지 않게 하는 역활 컴파일러는 최적화 옵션이 활성화되면, 프로그램 크기를 줄이기 위해, 속도를 향상시키기 위해소스코드를 최적화 합니다. 이 과정에서 개발자가 의도하지 않는 동작이 나옵니다. 그 동작을 제한하기 위해 volatile을 사용합니다. 자세한 것은 아래 영상을 통해 확인 바랍니다. 강좌영상 정리 첨부 영상에 있는 소스에서 volatile 을 선언해서 실습해보시기 바랍니다. 본 음성은 인공지능 성우 서비스 타입캐스트에서 제작되었습니다. 인공지능 성우 - 재훈 https://typecast.ai 2021. 5. 9.
1바이트를 n배수로 증가시켜 리턴하는 함수 이번엔 생각외로 머리쓰며 만든 함수이다. 1바이트를 n배만큼 증가하여 배열로 리턴시켜주는 함수... 이 녀석은 생성된 이미지를 원하는 크기만큼 Enlarge 시켜주기 위한 함수로 만들었다.. 소스는 다음과 같다.. 메인 함수는 ByteXNum함수이고 0x81을 2배하면 0xC0 03 3배하면 0xE0 00 07 이 나온다. 개발환경때문에 1~16배 까지만 된다. // test_qr.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include unsigned char buf[20]; unsigned char rotate_shift(unsigned char shift_n,un.. 2021. 4. 16.
EFR32 USART / LEUAR 시리얼 통신비교 EFR32의 시리얼통신은 2가지가 있는데 일반 USART와 다른 하나는 저전력 LEUART 이다. LEUART는 에너지모드 lv2 (슬립모드) 에서도 wake up 이 되기 때문에 저전력을 유지해야 하는 경우 필수가 된다. LEUART의 클럭은 32.768khz 크리스탈 또는 내부 32.768khz 오실레이터에서 받아서 사용이 가능하다. LEUART 초기화 함수 내부 오실레이터로도 LEUART 사용이 가능한데 다만 cpu 상태(온도 등)에 따라 오차가 발생할수있다. 선택가능한 클럭 위 사진은 내부 오실래이터로 LEUART 시리얼통신을 한 경우인데 9600bps 인데도 에러가 중간중간 발생했다. 외부 크리스탈을 쓴 경우는 아주 깔끔하게 데이터를 수신을 받고 있다. ​ 2021. 3. 22.
펌웨어를 위한 C언어 1분코딩강좌 #01 memset과 sizeof 안녕하세요 코저씨입니다. 오늘은 C언어를 개발하면서 실수하기 쉬운 memset과 sizeof에 대해 알아 보겠습니다. ​ memset이나 memcpy 등에서 배열의 어느 사이즈만큼 처리하게 할지 고민될때가 있습니다. ​ 그런경우 char 형인지 아니면 int 인지에 따라 배열의 크기가 바뀝니다. 개발시 실수하기 쉬운 내용이지 참조 바랍니다. 감사합니다. 2021. 3. 22.
개발자가 프로그래밍보다 잘해야 하는 것 - 엑셀 안녕하세요 ​ 오늘은 개발자가 프로그래밍보다 잘해야 하는 엑셀에 대해 알아보겠습니다. 초보 개발자분들은 왜 엑셀을 잘해야 하지? 라고 생각할 수 있습니다. ​ 엑셀이 보통 연락망, 그래프 그리기, 민원 보고서 등 참고 자료 등으로 만 사용되기 때문이죠 그리고 프로그래밍에 직접적인 코딩을 도와주거나 하는 일은 없습니다. ​ 그런데 제가 강조하는 것은 엑셀이 생각보다 개발을 편하게 해주는 도구이기 때문입니다. 예를 들면 아래와 같은 테이블을 헥사 배열로 바꾸는 경우 머리가 아픕니다. ​ 아래 표대를 보면 ADDRCONFIG_MATCH_TABLE_DOUBLE_FIELD가 (0x1041040) 일 때의 표를 보여주고 있습니다. 처음에는 이해가 가서 저 값을 코드에 넣어 사용하면 문제가 없지만 추후 값을 바꾸려 .. 2021. 1. 13.
펌웨어 강좌#02 타이머와 인터럽트 | AVR 안녕하세요 두번째 영상이 늦었습니다. 사실 자택근무하고 육아를 병행하다보니 점점 늦어지더라구요.. ​ 이번에도 ATmega128 을 가지고 타이머 인터럽트와 외부 인터럽트를 소개해 드리겠습니다. 부족한 점이나 문의사항은 댓글 남겨주세요. ​ 2020. 5. 17.