본문 바로가기

분류 전체보기

(1955)
[FX2 EVM] 8051에서 unsigned long사용시 주의 [FX2 EVM] 8051에서 unsigned long사용시 주의 테스트 하는중에 코드량이 좀 늘어니 이상한 동작을 하는경우가 발생한다. 코드가 멈추거나 리셋 되는 현상이 있다. Delay 함수를 쓰고나면 이상한 동작을 한다. system.c 에 있는 Delay() 함수는 아래와 같고 지금까지 잘 사용 했었는데... void Delay(unsigned long Time) { volatile unsigned int delay = 0; for(; Time != 0; Time--) { for(delay=0;delay 옵티마이즈 문제는 아닌것 같다. 아무튼 long을 사용하지 않고 unsigned int로 하니 잘 동작한다.
[FX2 EVM] CY7C68013 USB 벌크 전송 테스트 [FX2 EVM] CY7C68013 USB 벌크 전송 테스트 FX2 Ez-USB를 이용하여 USB Bulk전송 테스트를 해 보았다. 먼저 CY7C68013쪽 펌웨어 에서 TD_Pool() 함수를 수정하여 USB로 데이터를 수신하거나 전송할 수 있다. 아래 코드는 USB로 PC에서 받은 데이터를 처리하는 부분이다. 주석을 보면 쉽게 이해할 수 있다. void TD_Poll(void) { WORD i; WORD count; //EndPoint로 데이터가 들어오면 if(!(EP2468STAT & bmEP2EMPTY)) { //받은 데이터가 들어 있는 포인터의 주소를 Auto Buffer1로 할당한다. APTR1H = MSB( &EP2FIFOBUF ); APTR1L = LSB( &EP2FIFOBUF ); //내..
[TMS320F28096 EVM] eQEP 엔코더 테스트 [TMS320F28096 EVM] eQEP 엔코더 테스트 TMS320F28069 에는 eQEP (QEI)는 여러가지 기능이 많이 있다. 간딘히 엔코더 카운터 테스트를 해 보았다. eQEP의 핀맵은 아래와 같다. GPIO20/EQEP1A : EQEP Phase A GPIO21/EQEP1B : EQEP Phase BGPIO23/EQEP1I : EQEP Index [EXP-DSP EVM] 보드에는 엔코더가 장착되어 있는데 처음에 제작시에 TMS320F2808을 타겟으로 제작했기 때문에 점퍼가 필요하다. 확장성을 고려하여 핀을 뽑아 두었기 때문에 점퍼선으로 연결가능하다. TMS320F28069 eQEP 블록도 TMS320F28069 eQEP 초기화 코드 void QEP_Init(void) { EQep1Regs...
[TMS320F28069 EVM] TFT LCD 테스트 [TMS320F28069 EVM] TFT LCD 테스트 [EXP-DSP EVM] 보드를 이용하면 8비트 모드로 TFT LCD를 쉽게 테스트 해 볼 수 있다. TMS320F28069는 최대 80MHz 동작하므로 속도는 느리지 않을것 같다. 일단 기존 코드에 드라이버 부분만 수정하면 프로그램 수정없이 테스트 가능하므로 속도 테스트를 해보자 TFT LCD 드라이버 코드 //----------------------------------------------------------------------------- // TFT LCD Driver #define TFT_DRV_COM44 1 #define LCD_LAT_BIT BIT8 #define LCD_LAT_ON() sbi(GPIOA_S, LCD_LAT_BIT)..
[TMS320F28069 EVM] ADC테스트 - TFT LCD에 VR값 표시 [TMS320F28069 EVM] ADC테스트 - TFT LCD에 VR값 표시 [TMS320F28069 EVM]에는 7개의 12비트 ADC를 할당해 두었다. 새로운 PICCOLO시리즈는 ADC쪽 기능이 향상되었다고 하는데.. 좀더 깊이 있는내용은 추후에 진행 하도록 하고 일단 기존 TMS320F2808 EVM예제를 포팅해서 간단한 테스트를 진행 해 보려고 한다. TMS320F28069 ADC블록도 ADC부분은 기존 TMS320F2808 과 비교해 변화된 부분이 있으므로 수정이 필요하다. 레지스터명도 달라지고.. 구조 자체도 변경되었기 때문에 ADC.c 에 있는 초기화 함수를 수정해 주었다. void AdcInit(void) { InitAdc(); // Configure ADC EALLOW; AdcRegs..
[FX2 EVM] UART 테스트 [FX2 EVM] UART 테스트 FX2에는 2개의 UART가 있다. 그냥 8051용 UART이므로 별 다른건 없는것 같다. [serial.c] 에 Rx, Tx 드라이버 함수만 수정하면 기존 코드를 그대로 사용할 수 있다. unsigned char U0_GetByte(void) { while (!RI); RI = 0; return SBUF0; } void U0_PutByte(unsigned char Data) { while (TI == 0) ; TI = 0 ; SBUF0 = Data ; } USB2UART에 연결하면 쉽게 디버깅 가능하다. FX2 Ez-USB Serial 테스트 프로그램 소스코드 void main(void) { int cnt = 0; SystemInit(); Led1Init(); Led1..
[FX2 EVM] GPIO 속도 측정 [FX2 EVM] GPIO 속도 측정 24Mhz로 구동시 650ns 750kHZ가 출력된다. 상당히 느리군.. void main(void) { Led1Init(); Led1On(); while(1) { //Led1Toggle(); PC7 ^= 1; } } 000C ?C0001: ; SOURCE LINE # 12 ; SOURCE LINE # 13 ; SOURCE LINE # 14 000C A2A7 MOV C,PC7 000E B3 CPL C 000F 92A7 MOV PC7,C ; SOURCE LINE # 15 0011 80F9 SJMP ?C0001 ; FUNCTION main (END) [참고] MCU속도 측정 결과
[FX2 EVM] Ez-USB FX2(CY7C68013) 개발환경 설정 [FX2 EVM] Ez-USB FX2(CY7C68013) 개발환경 설정 Cypress Ez-USB FX2(CY7C68013)는 기본적으로 USB로 펌웨어 다운로드 하는 기능이 있기 때문에 개발할때 편리하다. USB캐이블 연결하면 기본 드라이버를 검색한다. 디바이스 드라이버는 아래 드라이버를 사용하면 된다. 정상적으로 설치되면 장치관리자에서 확인할 수 있다. 펌웨어 다운로드는 CyConsole.exe 프로그램을 사용하면 된다. "Download" 버튼을 클릭하여 펌웨어 hex파일을 다운로드 할 수 있다. 새로운 프로그램을 다운로드 하려면 리셋을 누르지 않고 그냥 Re-Load버튼으로 다운로드 할 수 있다. 테스트 예제: Keil을 용한 프로그램 작성 FX2는 8051코어 이므로 8051컴파일러인 Keil ..