[PIC18F-s EVM]LED테스트 (PIC18F2450, PIC18F2455)
PIC18F2450은 USB 때문에 클럭을 20Mhz로 사용해서 IO토글 속도가 500ns(470kHz)정도 나온다...
속도가 빠르니 for루프 딜레이 사용은 좀 그렇고... 자체 제공 delay함수를 사용했다.
PIC18F2450 LED제어 예제 소스
[PIC18F-s EVM]의 OnBoard LED는 PORTA0, 1에 연결되어 있다.
LED드라이버는 PORTA에 정의해서 작성 했고..
//-----------------------------------------------------------------------------
//LED Driver
#define LED1_BIT BIT0
#define LED1_PORT PORTA
#define Led1Init() TRISAbits.TRISA0 = 0
#define Led1On() Cbi(LED1_PORT, LED1_BIT)
#define Led1Off() Sbi(LED1_PORT, LED1_BIT)
#define Led1Toggle() Tbi(LED1_PORT, LED1_BIT)
#define LED2_BIT BIT1
#define LED2_PORT PORTA
#define Led2Init() TRISAbits.TRISA1 = 0
#define Led2On() Cbi(LED2_PORT, LED2_BIT)
#define Led2Off() Sbi(LED2_PORT, LED2_BIT)
#define Led2Toggle() Tbi(LED2_PORT, LED1_BIT)
//-----------------------------------------------------------------------------
소스코드는 다른 MCU예제를 사용하는데... 컴파일러가 무료인지라 날짜가 지나서 그런지... 몇가지 제약이 있는것 같다. 다른 옵션이 있는지 알아 봐야 겠다.. 아무튼 업데이트를 하던지...
#include <p18cxxx.h> #include <delays.h>
#pragma config WDT = OFF
#include "..\00_hal\config.h" //#include "..\00_hal\system.h"
#define Delay Delay10KTCYx
/*void Delay(unsigned int N) { unsigned int i; for(i=0;i<N;i++)Delay1KTCYx(1); }*/
void SystemInit(void) { }
void main (void) { //Init System SystemInit();
//Init LED Led1Init(); Led2Init();
Led2On(); Led1On();
while(1) { Delay(300); Led2On(); Led1Off();
Delay(300); Led1On(); Led2Off(); } } |
확장 보드에 연결하여 테스트
동영상