[FreeScale]/M92007. 7. 4. 19:12

[OSBDM] MC9S08QG4 ADC VR, SW추가

[OSBDM] MC9S08QG4 ADC VR,  SW추가
사용자 삽입 이미지

ADC를 테스트 하기 위해 VR, 스위치를 추가 해 보았다.
MC9S08QG의 이제 모든 기능을 테스트 해 볼수 있지 않을까...





소스코드

int keypress;

int ADC_val_H;

int ADC_val_L;

void main(void)

  {

// set up kbi

  PTAPE_PTAPE2 = 1; // enable pullup for kb2

  PTAPE_PTAPE3 = 1; // enable pullup for kb3

  KBIPE_KBIPE2 =1;  // enable kb 2

  KBIPE_KBIPE3 =1;  // enable kb 3

  KBISC_KBACK = 1;  // clear kb interrupts

  KBISC_KBIE = 1;   // enable Keyboard Interrupts

// set up adc

  ADCSC1_ADCH = 0x1f; // all channels selected disables the ADC

  ADCSC1_AIEN = 1;    // enable ADC interrupt

  ADCSC1_ADCO = 0;    // enable single conversion, 1 is continuous conversion

  ADCSC2_ADTRG = 0;   // select software trigger

  ADCSC2_ACFE = 0;    // disable the compare function

  ADCCFG_ADICLK = 0;    // bus clock

  ADCCFG_ADIV = 1;        // input clock/2

  ADCCFG_MODE = 0x00; // 10 bit mode

  ADCCFG_ADLSMP = 1;    // long sample time

  APCTL1_ADPC2 = 1;

  //APCTL1 = 0x00;  // Disable all pins as ADC inputs

                                                                                               

  EnableInterrupts;   // enable interrupts

  for(;;)

    {

    __RESET_WATCHDOG(); /* feeds the dog */

    }/* loop forever */

    /* please make sure that you never leave this function */

 

}// end main

//KBI ISR

interrupt 18 void   KBI_ISR(void)

  {

  keypress = PTAD;  // read port a to find key

 

  if (keypress & 8)

    ADCSC1_ADCH = 0;

  else

    ADCSC1_ADCH = 1;

   

  KBISC_KBACK = 1;  // clear kb interrupt

  }

interrupt 19 void ADC_ISR(void)

  {

  ADC_val_H = ADCRH;

  ADC_val_L = ADCRL;

 

  ADCSC1_ADCH = 0x1f; // all channels selected disables the ADC

  }




 
Posted by nexp

댓글을 달아 주세요

[FreeScale]/M92007. 7. 1. 23:27

[OSBDM]을 이용한 MC9S08QG4제어 - LED제어

OSBDM을 이용한 MC9S08QG4제어 - LED제어
 
OSBDM에는 기본적으로 RS08KA2 8pin 2KB MCU가 있는데 코드워리어에서 C언어를 제공하지 않고 있고(SRAM이 적어 스텍생성에 문제가 있어 그런것 같은데...) 새롭게 출시된 MC9S08QG4로 교체 해서 C언어를 이용한 LED제어를 해 보도록 하겠습니다.

소스코드:




MC9S08QG4교체
먼저 MCU를 MC9S08QG4로 교체 합니다.
 
 
MC9S08QG4는 8k FLASH/512 SRAM로 메모리가 훨씬 크며 SPI/I2C/SCI/ADC/ 등 강력한 프리페럴 등을 제공하고 있습니다.
 
보드의 LED는 PTA3에 연결되어 있고 JP4를 연결해야 합니다. PTA3이 0이면 LED On되는 구조 입니다.
 
 
 
 
프로그램 다운로드 및 디버깅
코드워리어에서 디버깅 버튼을 클릭하면 디버거 모드 프로그램이 실행 됩니다.
 
 
디버깅 모드 프로그램이 실행되면서 작성한 프로램은 다운로드 됩니다.
실행을 해 보면 LED가 대략 150ms 간격으로 깜박이는 것을 확인 할 수 있습니다.
 
 
 
무료로 제공받은 디버깅 툴 이지만  C코드및 ASM코드도 동시에 보면서 한 스텝씩 실행 가능하고 레지스터 및 메모리를 확인 가능한 정말 강력한 개발 장비임을 확인 할 수 있었습니다.



LED제어 예제 소스코드

//=============================================================================

// FreeScale ODBM Test Program

//

// by nexp76(nexp76@naver.com)     

// http://cafe.naver.com/elab.cafe

// [main.h]

//=============================================================================

#include <hidef.h>

#include "derivative.h"

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

// Utility Function

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

void Delay(unsigned int Time)

{

    unsigned int i, j;

   

        for(j=0;j<200;j++)

    for (i = 0; i < Time; i++) {};

}

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

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

// LED Function

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

#define Led1Init()                  (PTADD_PTADD3 = 1)

#define Led1On()                    (PTAD_PTAD3 = 0)

#define Led1Off()                   (PTAD_PTAD3 = 1)

#define Led1Toggle()                (PTAD_PTAD3 ^= 1)

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

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

//Main Routine

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

void main(void)

{

    //enable interrupts

    EnableInterrupts;

 

    Led1Init();

    Led1On();

   

    for(;;)

    {

        __RESET_WATCHDOG(); /* feeds the dog */

   

        Led1Toggle();

        Delay(150);

       

    } /* loop forever */

    /* please make sure that you never leave main */

}


Posted by nexp

댓글을 달아 주세요

[FreeScale]/M92007. 7. 1. 20:27

[OSBDM]을 이용한 MC9S08QG4제어 - 초간단 프로젝트 생성

[OSBDM]을 이용한 MC9S08QG4제어 - 초간단 프로젝트 생성
사용자 삽입 이미지
프리스케일 MCU따라하기 까페 (http://cafe.naver.com/hcs08) 에서 무료로 제공하고 있는 프리스케일 MCU펌웨어 다운로드 및 디버깅 툴을 이용하여 간단히 프리스케일 MCU를 제어해 보도록 하겠습니다.
개인적으로 프리스케일 MCU따라하기 까페 주인장 님께 감사 드립니다.
 
OSBDM은 RS08KA2 8pin 2KB MCU와 open-source BDM이 포함된 간단한 PCB 보드입니다. BDM인터페이스로 사용하실 수 있으며 S08 & RS08 MCU를 지원하고 있습니다
그런데 RS08은 ASM밖에 지원하지 않아 처음 접근하는 분들에게는 좀 어렵게 느껴지는데 S08(MC9S08QG4도 무료 샘플 제공합니다.)을 이용하면 C언어를 지원해 쉽게 프리스케일 MCU를 제어 해 볼 수 있습니다.
 
간단히 아래 순서대로 따라 하면 LED를 On/Off하는 예제를 작성할 수 있습니다.
 
 
 
1)설치
포함된 CD의 드라이버 및 CodeWorrior를 설치 합니다.
그리고 서비스펙( CW08 V5.1 Open Source BDM Service Pack )을  설치해야 합니다.
물론 CodeWorrior-CW08최신 버젼을 깔면 자동으로 설치 되는것 같군요.
 
보드를 USB케이블로 연결하면 드라이버가 설치된것을 확인할 수 있습니다.


 
2)프로젝트 생성
CodeWorrior-CW08을 실행하고 새로운 프로젝트를 생성합니다.
 
 
 
디바이스(MC9S08QG4)를 선택하고 디버깅 툴(HCS08 Open BDM)릏 선택하고 [다음]을 클릭 합니다.

 
 
프로젝트를 저장할 폴더 및 프로젝트명을 선택하고 다음..
 
 
부가적인 추가 파일이 있으면 추가 하면 되고... 지금은 그냥 [마침]으로 프로젝트 생성을 완료 합니다.
 
 
프로젝트 생성이 완료되면 자동으로 프로젝트 파일을 만들어 주고 main.c파일에 예제 파일을 작성하면 됩니다.
기본적으로 생성된 프로그램에서 컴파일을 해 보면 에러없이 컴파일 되는것을 확인 할 수 있습니다.
Posted by nexp

댓글을 달아 주세요

[FreeScale]/M92007. 6. 24. 00:51

[OSBDM]관련자료



관련자료



FreeScale사의 RS08을 디버깅 및 프로그램 할수 있는 보드로 RS08KA2 8pin 2KB MCU와 open-source BDM이 포함되어 된 간단한 PCB 보드입니다












The EValue8 tool provides a cost effective debug solution for Freescale S08 and RS08 8-pin MCU. The tool utilizes the
modified version of the popular open-source BDM (OSBDM) solution from the internet for in-circuit emulation and device
programming. The complete open source BDM (OSBDM) design can be obtained from 8-bit message board at
http://forums.freescale.com. The tool comprises on board 12V DC-DC converter for RS08 flash programming support and a
built-in 8-pin through hole socket for convenience 8-pin MCU evaluation. The tool reserves space for unpopulated
connections to an additional variable resistor and a push button circuitry
Posted by nexp

댓글을 달아 주세요