티스토리 툴바

AMega128 Ethernet Test 보드 - 테스트 하기

 

 

 

 소스코드
테스트 소스코드 는 TCP 서버 테스트를 위한 예제코드

 


 

//-----------------------------------------------------------------------------
//수신데이터 처리
void EthernetTest(unsigned char *pRcvBuffer, unsigned int len)
{
 unsigned int i;

 DebugPrint("Read Data[%d]\r\n", len);
 
 for(i=0;i<len;i++)
 {
  //if(i%16==0)DebugPrint("\r\n");
  DebugPrint("%c", pRcvBuffer[i]);
 }

 DebugPrint("\r\nReceive OK!\r\n");

 //-----------------------------------------------------------------------------

 

 


 

USB2UART 를 위해 USB를 연결하고, 랜 캐이블을 연결한다.

  

 

CP2012 칩의 드라이버 파일은 아래 링크에서 최신파일을 받을 수 있다.

  CP210x_VCP_Win2K.exe

 http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

 

 

 

펌웨어 다운로드 하고 USB 연결후 하이퍼 터미널(보레이트 115200bps)에 아래와 같이 레지스터 정보를 표시되면 정상동작을 확인할 수 있다.

 

 

코드상에서 보드의 IP를 설정할 수 있다. 여기서는 192.168.0.100 , Port 5000 으로 설정되어 있다.

 // MY Source IP     : 192.168.0.100
#define MY_SOURCEIP {192,  168, 0,  100}

 

// MY Listen Port  : 5000

#define MY_LISTEN_PORT 5000      

 

 


 

테스트용 PC프로그램

PC측 호스트 프로그램은 TCP루프백 테스트를 할 수 있는 AX 플그램을 사용한다.

 


 

 

기본 테스트하기

1) TCP 연결

 

 

보드 IP 192.168.0.100, 5000으로 접속

 

 

정상적으로 접속되면 메세지가 출력된다.

 

 

 

테스트 메세지 전송

 

 

테스트로 100개의 데이터 전송

 

 

 

수신된 데이터 확인

하이퍼 터미널에서 수신된 데이터를 확인 할 수 있다.

 

 

 

 

 

 

저작자 표시 비영리 변경 금지

[CAN_EVM] ECU Read 2 - TFT LCD에 RPM정보 그래프로 표시하기

 

 

 

 

ECU정보 읽기 두번째로 이번에는 차량 PRM(속도) 정보를 읽어와 그래프로 표시하는 예제를 작성해 보았다.

모드에 따라 숫자로도 표시되고 그래프로 표시되도록 했다.

아무래도 그래프로 표시되면 과거 정보를 볼 수 있기 때문에 적산된 그래프로 운전 패턴이나 운행 상태를 좀더 파악하기 쉽다.

(좀더 보기 좋게 하기 위해 시간축에 대해 타이밍 조절은 좀 필요할것 같다.)

 

 

 

 

 

일단 테스트를 위해 계기판 위쪽으로 잘 보이는 곳에 [CAN_EVM] 보드를 간의로 설치했다.

 

 

 

 

[CAN_EVM] ECU정보를 이용한 RPM(차량속도) TFT LCD 표시 테스트 동영상

테스트는 운행중 촬영에 어려움이 있기때문에 RPM만 표시하도록 했고, 기어 중립상태에서 엑셀을 밝아 RPM변화 상태를 표시해 보았다. 

 

 

 

저작자 표시 비영리 변경 금지
TAG Can, CAN_EVM, ecu, OBD

[CAN_EVM] ECU Read 1 -  TFT LCD에 기어단수 표시하기

 

  

 

 

 

차량운전 하다 보면 PRM이나 속도등의 정보를 좀더 크고 잘 보이는 위치에 있었으면 좋겠다는 생각을 해 보는데 모처럼 주말에 시간이 나서 작업을 해 보았다.

 

차량 ECU정보를 이용하면 차량 RPM, 속도 및 기어 위치, 브레이크위치 등의 정보를 알 수 있는데  CAN통신으로 읽어올 수 있다. 차량과 CAN통신이 가능한 [CAN_EVM] 보드를 이용하여 차량의 ECU정보를 읽어와 TFT LCD에 표시하는 예제를 작성해 보았다. 

 

 

 

인터페이스는 OBD커넥터를 이용했다.


 

 

우선 테스트를 간단하게 하기 위해 기어 위치를 임의의 숫자로 변환해서 표시 했다. 추후 좀더 디테일한 이미지로 표시하면 좋을것 같다. 

 

ECU정보는 차량마다 다르고 공개도 되어 있지 않기 때문에(나만 못찾나?)..

아무튼 데이터 페킷을 비교해 가면서 기어 위치 정보를 표시하도록 했다.

  if(g_MsgObjectRx.Data[1] ==  0x40)
  {
   //P
   gGearPos = 0; 
  }
  else if(g_MsgObjectRx.Data[1] == 0x46)
  {
   //중립
   gGearPos = 3;
  }
  else if(g_MsgObjectRx.Data[1] == 0x45)
  {
   //D
   gGearPos = 4;
  }  
  else if(g_MsgObjectRx.Data[1] == 0x48)
  {
   if(g_MsgObjectRx.Data[0] == 1)
    gGearPos = 1;
  
   else if(g_MsgObjectRx.Data[0] == 2)
    gGearPos = 2; 
  }
  else if(g_MsgObjectRx.Data[1] == 0x47)
  {
   //R
   gGearPos = 7;
  }

 

 

 

 

ECU정보를 이용한 TFT LCD에 기어위치 표시 테스트 동영상

동영상 상에 후진 표시가 안된다. 코드를 보니 후진과 D를 같은 값으로 설정하게 했다. 수정후 정상 동작한다.

 

 

 

 

저작자 표시 비영리 변경 금지
TAG Can, CAN_EVM, ecu, OBD
[AT90USB1287-EX] 보드에서 Atmega128사용하기

 

 

 

[AT90USB1287 EVM-EX] 보드는 USB호스트 기능이 있는 AT90USB1287을 테스트 하기 위한 보드 이지만 ATMega128도 실장하여 테스트 가능하다.

핀맵이 약간 다르기 때문에 조립하기전 0옴 저항으로 선택해서 조립할 수 있도록 했다.

 

 

 

ATMega128를 실장할 경우 아래와 같이 프로젝트 파일 및 드라이버 파일에서 약간의 수정이 필요하다.

 

[config.h] 

#define __MCU_TYPE__    AVR_TYPE_MEGA128

 

#define _UART1_ENABLE

 

 

//-----------------------------------------------------------------------------
// On board LED
#define LED1_PROT     PORTG
#define LED1_BIT     BIT3
#define Led1Init()     Sbi(DDRG, LED1_BIT)
#define Led1Off()     Sbi(LED1_PROT, LED1_BIT)
#define Led1On()     Cbi(LED1_PROT, LED1_BIT)


#define LED2_PROT     PORTG
#define LED2_BIT     BIT4
#define Led2Init()     Sbi(DDRG, LED2_BIT)
#define Led2Off()     Sbi(LED2_PROT, LED2_BIT)
#define Led2On()     Cbi(LED2_PROT, LED2_BIT)
//-----------------------------------------------------------------------------

 

 

ATMega128을 실장한 보드

 

 

 

저작자 표시 비영리 변경 금지

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

 

 

 

 

ATMega16-SM EVM 보드에서 ADC포트는 PORTA PA7~PA0(ADC7~ADC0)에 연결되어 있고 가변저항으로 ADC값을 확인할 수 있다.

 

 

 

AVR ATMega16 ADC 드라이버 코드

ATMega32 의 경우 ADCSR레지스터가 ADCSRA로 변경되었다.

//------------------------------------------------------------------------------
// Function Routine
//ADC Initialize
void AdcInit(void)
{
 ADMUX = 0;
    ADCSR = ADC_ENABLE | ADC_PRESCALE_DIV32;
}

//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
 unsigned int value = 0;

 ADMUX = port&7;
 ADCSR |= ADC_START_CONVERSION;

 while(!(ADCSR & ADC_COMPLETE));

 value = ADCL;
 value = (ADCH<<8) | value;

 return value;
}
//------------------------------------------------------------------------------

 

 

 

 

AVR ATMega16 ADC 테스트 예제코드

 

int main(void)
{
 char c;
 unsigned int adc;
 unsigned char buf[8];
 
 SystemInit();
 
 Led1Init();
 Led1On();

 //UART Init
 DebugInit(BAUD_115200);
 DebugPrint("ADC Test Program\r\n");
 
 AdcInit();

 while(1)
 {

  adc =  AdcRead(7);

  buf[0] = (adc>>8);
  buf[1] = (adc&0xFF);

  adc =  AdcRead(6);

 

  buf[2] = (adc>>8);
  buf[3] = (adc&0xFF);

  SendPacket(SRL_CMD_PLOTY, buf, 4);

 

  Delay(20);
 }
}

 

 

 

AtMega32 ADC 테스트 동영상 - TFT LCD그래프 표시

 

저작자 표시 비영리 변경 금지

블로그 이미지

nexp

카테고리

분류 전체보기 (1209)
[MyProject] (31)
[Cortex] (150)
[MSP430] (94)
[Microchip] (96)
ARM9 (24)
[ARM7] (53)
[AVR] (72)
[DSP] (103)
[8051] (26)
[MCU] (45)
[INTERFACE] (183)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (103)
[SENSOR] (39)
[FPGA/PLD] (28)
[EVB] (1)
[DATA] (22)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (2)
[Link] (2)