테이블 참조, 기본제공 함수, 직접만든 함수의 CRC-16 계산 속도를 비교해 본다.CRC 삽질 어언 한달.. ㅜㅜ직접 만든 CRC-16 계산기와Microchip 에서 제공하는 CRC-16 계산 라이브러리그리고 전통적인 방법의 테이블 기반 CRC-16 계산방법의 계산 결과 차이를 알아보기 위해 16MHz ATMETA 2560에서 CRC 연산을 수행해 보았다.직접 만든 CRC-16 계산기uint16_t CRC16_Compute(uint8_t *datastream, uint16_t numberofbyte, uint16_t poly, uint16_t initval){ for (uint16_t i=0; i0; j--) { if (initval & 0x8000) { initval = initval ..
ATMEGA에서 변수의 값을 사용해야 할 때, 개별 변수로 사용하는 것과 비트 단위로 사용할 때 걸리는 시간과, 컴파일러 최적화 옵션에 따른 용량/실행 시간 차이를 살펴 보았다 AVR과 같이 메모리가 넉넉하지만은 않은 MCU를 사용하기 위해, 변수의 비트단위까지 짜내는 일이 종종 발생 한다. 물론, 메모리가 넉넉하다면야 필요할 때 마다 독립된 변수를 선언해서 사용하는 것이 코드를 작성하기에도 편하겠지만, 그렇게 마구 남발하다 보면 메모리 제한에 걸려 필요한 변수를 선언할 수 없는 상황에 마주치게 되기도 한다. 메모리 걱정 하지 않고 변수를 펑펑 선언해 가며 사용하는 것과, BIT단위로 쪼개서 메모리를 아껴가며 사용하는 것. 과연 실제 동작에는 어떤 차이가 있을까?8개의 1bit 데이터를 사용해야 한다..
ATMEGA 2560의 디지털 포트를 다양한 방법으로 반전시켜 보고, 속도의 차이를 확인해 보았다.ATMEGA 2560의 PIN OUT에서 만들어 낼 수 있는 가장 빠른 클럭은 얼마까지 가능할까 하는 궁금증이 들어 시험해 본 포트 반전 속도 시험TEST1. 그냥 포트 반전while(1){ PORTA = ~PORTA;}TEST2. 번갈아 가면서 대입시키기while(1){ PORTA = 0XFF; PORTA = 0X00;}TEST3. 1us 지연을 두고 번갈아가며 대입시키기while(1){ _delay_us(1); PORTA = 0XFF; _delay_us(1); PORTA = 0X00;} 궁금했던 것 보다 더 중요한 다른 사실을 알게 되었다. 일단 듀티비는 50이 안나온다. 그냥 빠르게 한다고 속도를 올려..