목록Robotics/Hardware (13)
Data Analysis for Investment & Control
Copying Sections from Flash to RAM - Copying the Interrupt Vectors(non-DSP/BIOD projects only) 이 글은 TI에서 제공하고 있는 문서 "Running an Application from Internal Flash Memory on the TMS320F28xxx DSP" (문서 번호 SPRA958I)를 참고하여 작성된 것임을 알려드립니다. Perpheral Interrupt Expansion(PIE) 모듈은 F28xxx 디바이스의 인터럽트 요청을 관리합니다. 전원이 켜지면, 모든 인터럽트 벡터들은 비휘발성 메모리(예를들어, Flash)에 위치하게 되는데, 코드의 디바이스 초기화 과정에서일부분 PIEVECT RAM에 복사가 됩니다. P..
1985년 IEEE에서 Floating-point 표준을 처음 만들어 공표한 이후로 23년이 지난 2008년 새로운 형태의 Floating-point format이 만들어져 발표되었습니다. 기존의 IEEE754-1985 규약이 이진(binary) 기반의 표현 방법이었다면, IEEE754-2008 규약은 십진(decimal) 기반으로 종전의 표현 방법에 비해 수의 표현 범위가 넓어졌으며, 십진수 형태의 실수로 바로 변환되기 때문에 별도의 계산 과정이 불필요하게 됩니다. IEEE754-1985 규약에 정의된 포맷은 32bit와 64bit로 나눌 수 있는데, 32bit를 기준으로 설명을 하면, 최상위 bit(MSB)는 부호(sign), 그 다음 8bit는 지수부(exponent), 나머지 23bit는 가수부(..
어느덧 공학자의 길을 선택한지 10년이 넘어가고 있습니다. 특히나 로봇 공학을 선택하게 되면서 다른 학문에 비해 다양한 분야의 지식을 다루어야 하는 점 때문에, 모르던 것도 이것저것 찾아서 하게 되는 습관이 조금은 들여진 것 같습니다. 어떤 일이든 마찬가지 겠지만, 로봇 분야도 처음 시작이 어렵습니다. 어디서 부터 어떻게 시작해야 할지 감이 잡히지 않아 시행착오도 많이 겪게되고, 그로 인해 쉽게 포기하는 일도 생기게 되는 것 같습니다. 여기서 설명하게 될 DSP 개발환경을 꾸미는 일 또한 그렇죠. TI의 DSP 시리즈는 꽤나 강력한 프로세서지만, 한국에는 아직 제대로된 개발 서적도 없고, 사용하는 법도 쉽지 않습니다. 따라서, ATmega 128과 같은 8비트 MCU는 쉽게 시작할 수 있지만, DSP는..
파이프라인은 프로세서가 명령어 수행을 효율적으로 하기 위한 매커니즘이다. 명령어가 수행되는 동안 다음에 수행될 명령어가 해석되고 그 다음에 해석될 명령어가 레지스터에 패치되는 일련의 과정을 통해 프로세서의 동작 속도를 향상시켜준다. 단순한 버전의 프로세서에는 4단계 파이프라인 구조를 가지고 있다. 1. Fetch는 프로그램 메모리에서 명령어를 로드한다. 2. Decode는 Instruction Register의 명령어를 해석한다. 3. Execute는 명령어를 처리한다. 4. Write-Back은 처리된 결과를 레지스터 또는 데이터 메모리에 저장한다. 명령어는 순차적으로 놓이게 된다. 첫 번째 cycle에서는 LD 명령어가 Fetch 단계에 놓인다. 두 번째 cycle에서는 Fetch 단계에 있던 LD ..
CAN(Controller Area Network)은 두 개 이상의 MCU가 존재할 때 이를 연결시켜 데이터를 통신하기 위한 버스 통신 방식입니다. 자동차의 전자 제어 부품의 사용이 많아짐에 따라 이를 효율적으로 관리하기 위한 통신 방식이 필요했는데, 이것이 CAN 버스입니다. CAN 통신을 사용하기 위해서는 CAN Transceiver를 사용해야 합니다. 개인적으로 MCU로 TI의 DSP C2000 계열을 많이 사용하기 때문에 TI사의 CAN Transceiver인 SN65HVD233-EP를 가지고 설명을 하도록 하겠습니다. 3.3V로 동작하는 SN65HVD233-EP는 최대 1Mbps로 동작을 하며, -2V~7V의 동작 범위를 갖으며, 최대 120개의 노드까지 확장할 수 있는 ISO-11898 표준을..
그림 1 간단한 형태의 BLDC 모터 내부 구조 그림 1은 BLDC 모터의 간단한 구조를 나타내고 있다. BLDC 모터는 영구 자석으로 된 회전자와 권선으로 되어 있는 스테이터 폴들로 이루어져있다. 영구 자석 회전자와 전류가 인가된 권선으로부터 생성되는 자기장 사이의 관계에 의해 전기 에너지는 회전자를 회전시킴으로써 기계적인 에너지로 변환된다. 그림 왼쪽에는 간단한 형태의 BLDC 모터의 내부를 나타내고 있으며, 오른쪽은 stator의 전기적인 구성을 나타내고 있다. 오른쪽 그림에서 ( A – a – com – b – B )의 순서로 전류가 흐르는 1번의 경우를 생각해보자. 그러면 왼쪽 그림에서처럼 해당 stator의 극성이 정해진다. 영구 자석으로 되어 있는 rotor의 N극은 ( A – a ) sta..
2008년부터 TI에서는 C2000 계열의 특성상 DSP라는 이름보다는 DSC, Digital Signal Controller라는 이름으로 부르고 있습니다. TI의 C24 계열의 하드웨어 이후로 C28계열의 모델은 32비트 기반으로 동작을 합니다. 동작 속도는 마이크로 컨트롤러로서는 상당히 빠른 속도인 150MHz로 동작을 하게 됩니다. 또한, DC모터나 BLDC 모터와 같은 모터제어를 위해 필요한 PWM 발생기, 엔코더 카운터 모듈과 같은 주변회로들이 탑재되어 있습니다. 그 밖에 SPI, SCI, I2C, CAN과 같은 통신 인터페이스를 지원합니다. 이런 점 때문에 TI에서는 C2000 계열의 DSC의 주요 어플리케이션으로 모터 제어를 내세우고 있습니다. 12비트의 최대 16채널의 ADC와 엔코더 카운..
TI에서 제공하는 C2000 계열의 제품 라인입니다. 기껏해야 16MHz의 속도의 ATmega128과 같은 마이크로 컨트롤러를 사용하다가 40MHz의 동작 속도를 가지는 C24X 계열의 제품이 처음으로 등장 했을 때, 마이크로 마우스나 라인트레이서를 만들던 엔지니어 혹은 다른 로봇 어플리케이션을 개발하던 사람들에게 상당한 임펙트를 주었었습니다. 40MHz의 속도를 가지는 16비트 마이크로 컨트롤러였는데다가, 비교적 풍부한 주변회로를 탑재하고 있었기 때문입니다. 저도 학부 졸업 논문을 쓸 때, DC 모터를 제어하기 위해 2407 모델을 사용했었습니다. C24 계열 이후로, 동작속도가 크게 개선된 F28X 계열의 제품이 등장했고, ADC도 12비트로 향상됐으며, 이 제품군을 통해 왠만한 제어 알고리즘을 적용..
※ 특허 [제10-2007-0124235호 - 비선형 함수 연산을 위한 부동 소수점 프로세서 및 이를 이용한 비선형 함수 연산 방법]의 내용 중 일부입니다.
Range Name Sign (s) 1 [31] Exponent (e) 8 [30-23] Mantissa (m) 23 [22-0] Hexadecimal Range Range Decimal Range § Quiet -NaN 1 11..11 11..11 : 10..01 FFFFFFFF : FFC00001 Indeterminate 1 11..11 10..00 FFC00000 Signaling -NaN 1 11..11 01..11 : 00..01 FFBFFFFF : FF800001 -Infinity (Negative Overflow) 1 11..11 00..00 FF800000 (2-2-23) × 2127 ≥ 3.4028235677973365E+38 Signaling +NaN 0 11..11 00..01 : 0..