본문 바로가기

[INTERFACE]/iMCU_W7100

[W7100 EVM] 예제프로그램 작성 - LED제어

[W7100 EVM] 예제프로그램 작성 - LED제어



새로운 MCU를 스터디 할때 가장 기본인 GPIO를 이용한 LED제어를 해보자.
W7100 EVM 보드의 LED는  P1.6, P1.7에 연결되어 있다.




3.3V 인터페이스를 위해 반드시 외부 풀업저항  필요
8051코어는 GPIO를위해 특별히 설정할 부분은 없어 쉽게 프로그램 가능한데 내부 풀업이 없기 때문에 하드웨어 설계시 주의를 요한다.
W7100은 내부에 풀업이 있다고 하는데... 정작 2.5V 풀업이라 3.3V를 사용하려면 외부 풀업을 연결해야 한다고 한다.



8051은 비트제어가 가능하므로 config.h파일에 LED제어 포트를 정의하자.
//-----------------------------------------------------------------------------
// On board LED
#define LED1_BIT     BIT6
#define Led1Init()     
#define Led1Off()     P1_6 = 1;
#define Led1On()     P1_6 = 0;
#define Led1Toggle()    P1_6 ^= 1;

#define LED2_BIT     BIT7
#define Led2Init()     
#define Led2Off()     P1_7 = 1;
#define Led2On()     P1_7 = 0;
#define Led2Toggle()    P1_7 ^= 1;
//-----------------------------------------------------------------------------


MCU 초기화 부분을 담당하는 system.c 도 W7100 설정에 맞도록 수정한다.
void SystemInit(void)
{
 EA = 0;   //Disable all interrupts
 CKCON = 0x02;  //Set the External Memory access time
 WTST = 0x03;  //Set the Code Memory wait state register
 WCONF = 0x40;  //Set the W7100 configuration register
}
//-----------------------------------------------------------------------------
void Delay(unsigned int Time)
{
 unsigned int i; for (i = 0; i < Time; i++) Delay_us(1000);
}

void Delay_us(unsigned int Time)
{
 unsigned int i;
 
 for(i = 0; i<Time; i++) {
#pragma ASM
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
#pragma ENDASM
  }
}


하드웨어 의존적인 코드 부분의 작성이 완료되었다면 기존에 작성 했던 하드웨어 독립 코드를 이용하여 테스트 하면 쉽게 포팅이 가능하다. 아래는 W7100을 이용하여 LED를 깜박이는 예제코드이다.
/*
 - W7100 EVM Onboard LED Control
*/

#include "system.h"

void main()
{
 //Initialize iMCU
 SystemInit();

 //LED초기화
 Led1Init();
 Led1On();
 Led2Init();
 Led2Off();

 while(1)
 {
  Led1Toggle();
  Led2Toggle();
  Delay(300); 
 }
}  


W7100 GPIO LED제어 동영상
LED테스트
반응형