'Project/Balancing 28335'에 해당되는 글 3건

  1. 2014.08.19 Init_Timer
  2. 2014.08.19 Init_ADC
  3. 2014.08.18 GpioInit
Project/Balancing 283352014. 8. 19. 16:06


#include "DSP2833x_device.h"

#include "DSP2833x_GlobalPrototypes.h"

#include "GlobalProtoypesLee.h"


void Init_Timer0()

{

// 정풩프?않은 타머 콘트롤 레지스터를 초기화

InitCpuTimers();

// 타이머 주와 타이머?reload 설정

ConfigCpuTimer(&CpuTimer0, 150, 1000);

// 150MHz CPU Freq, 5 msec Period (in uSeconds)

// 1 msec

StartCpuTimer0();

// Interrupt Enable Register

}


1. InitCpuTimers()


2. ConfigCpuTimer()


3. StartCpuTimer0()

'Project > Balancing 28335' 카테고리의 다른 글

Init_ADC  (0) 2014.08.19
GpioInit  (0) 2014.08.18
Posted by 십자성군
Project/Balancing 283352014. 8. 19. 14:18

#include "DSP2833x_device.h"

#include "DSP2833x_GlobalPrototypes.h"

#include "GlobalProtoypesLee.h"


void Init_ADC()

{


// 현재 ADC_CLK으로

InitAdc();


// ADC 설정

AdcRegs.ADCTRL3.bit.ADCCLKPS = 15;   // 재분주값 = HSPCLK  /(2*ADCCLKPS)

AdcRegs.ADCTRL1.bit.CPS = 1; // ADCCLK = ADCCLKPS / 2 (ADC의 구동 클럭을 결정 : ADCCLK = 1.25MHz)

AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 시퀀스 직렬 모드

AdcRegs.ADCTRL1.bit.ACQ_PS = 7 ; // 샘플링 윈도우 size를 8 ADC_CLK 설정

AdcRegs.ADCMAXCONV.all = 0x0004;

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // Murata [ Gyro ]

AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; // SA1 [ Tilt ] 4


AdcRegs.ADCTRL1.bit.CONT_RUN = 1;   // Cont. conv. mode

AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; // 시퀀스 시작


}


Part1

1. 현재 HSPCLK는 75MHz로 설정되어 있기에 분주된 값=2.5MHz로 설정되었다. : HSPCLK/(2*ADCCLKPS)

2. ADCCLK = Fclk/1 or 2로 CPS=1이므로 2분주이다.

3. SEQ_CASC = 1이면 시퀀스 직렬모드, 0이면 병렬모드이다.

4. SOC펄스의 길이는 ADCLK주기의 (ACQ_PS + 1)배이다. 즉, 여기서는 8배


Part2

5. MAXCONV.all = 0x0004로 인해, 최대 변환 채널수는 4개가 된다. 단, 직렬 시퀀서 모드는 두 시퀀서 1,2를 하나의 시퀀서처럼 사용하기 때문에 총 합쳐서 4개일 것이다.

6. ADCCHSELSEQ는 ADC변환의 순서와 관련된 것으로 위에서는 시퀀서1(1,2통합되있음)의 0번인 Gyro를 첫째로, 1번인 Tilt를 두번째 순서로 잡아줬다.

수정이 필요한 사항인것이, 현재 각각의 센서를 어느 핀에 연결했느냐에 따라 CONV0~15사이에서 선택해주어야 한다.

7.CONT_RUN = 1로 인해 Continus run mode로 설정하였다. 한번 변환이 끝나면 자동으로 다음 변환을 한다.

8.SOC_SEQ1에 1을 줌으로써 시퀀서 1에 변환시작신호를 전달하였다.

(굳이 줄 필요가 없다고 생각하는게, 이는 시퀀스에 대한 동작신호라기 보다는 변환강제신호로 볼 수 있다. 신호가 들어가면 0으로 클리어되고 끝나니 말이다.)



'Project > Balancing 28335' 카테고리의 다른 글

Init_Timer  (0) 2014.08.19
GpioInit  (0) 2014.08.18
Posted by 십자성군
Project/Balancing 283352014. 8. 18. 15:26

#include "DSP2833x_device.h"

#include "DSP2833x_GlobalPrototypes.h"

#include "GlobalProtoypesLee.h"


//***Include any other Headers which are necessary



void Init_GPIO()

{

EALLOW ;

// GPIO MUX Set


GpioCtrlRegs.GPAMUX1.all=0x0000;

GpioCtrlRegs.GPAMUX2.all=0x0000;

GpioCtrlRegs.GPBMUX1.all=0x0000;

GpioCtrlRegs.GPBMUX2.all=0x0000;


GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 = 1 ;    // PWM //용도불명

GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0 = 1 ;    // PWM


GpioCtrlRegs.GPAMUX2.bit.GPIO20=1; //QEP

GpioCtrlRegs.GPAMUX2.bit.GPIO21=1; //QEP

GpioCtrlRegs.GPAMUX2.bit.GPIO22=1; //QEP

GpioCtrlRegs.GPAMUX2.bit.GPIO23=1; //QEP


GpioCtrlRegs.GPAMUX1.bit.GPIO9=2; //SCITXDB

GpioCtrlRegs.GPAMUX1.bit.GPIO11=2; //SCIRXDB


GpioCtrlRegs.GPBMUX2.bit.GPIO62=1; //SCIRXDC

GpioCtrlRegs.GPBMUX2.bit.GPIO63=1; //SCITXDC



GpioMuxRegs.GPEMUX.bit.XINT1_XBIO_GPIOE0 = 1 ;

GpioMuxRegs.GPEQUAL.bit.QUALPRD = 0xff ;


GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2 = 1; //SPI_SCLK

GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0 = 1; //SPI_SIMO

GpioMuxRegs.GPFMUX.bit.SPISOMIA_GPIOF1 = 1; //SPI_SOMI

GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3 = 1; //SPI_SS



// GPIO DIR Set

GpioMuxRegs.GPADIR.bit.GPIOA1 = 1 ;  // output for motor direction

GpioMuxRegs.GPADIR.bit.GPIOA2 = 1 ;  // 컨트롤주기 확인

GpioMuxRegs.GPADIR.bit.GPIOA4 = 0 ; // 시스템 중간값(offset) 시작위한 스위치. I/O로 설정

GpioMuxRegs.GPBDIR.bit.GPIOB1 = 1 ;  // output for motor direction

GpioMuxRegs.GPBDIR.bit.GPIOB2 = 1 ;  // output for motor break

// GpioMuxRegs.GPFDIR.bit.GPIOF3 = 1 ; // output for SS break

GpioMuxRegs.GPGDIR.bit.GPIOG4 = 1 ; // SCIB TX

GpioMuxRegs.GPGDIR.bit.GPIOG5 = 1 ; // SCIB RX


GpioMuxRegs.GPAQUAL.all = 0x05 ;


// GpioMuxRegs.


EDIS ;

GpioDataRegs.GPFDAT.bit.GPIOF5 = 0 ;

GpioDataRegs.GPADAT.bit.GPIOA1 = 1 ;

GpioDataRegs.GPADAT.bit.GPIOA2 = 1 ;

GpioDataRegs.GPADAT.bit.GPIOA4 = 0 ; // 시스템 중간값.. 해당포트를 입력으로 사용 스위치 켜면 3.3v 전압 인가해서 HIGH가 됨

GpioDataRegs.GPGDAT.bit.GPIOG4 = 1 ;

GpioDataRegs.GPGDAT.bit.GPIOG5 = 1 ;

// GpioDataRegs.GPFDAT.bit.GPIOF3 = 1 ;

}



'Project > Balancing 28335' 카테고리의 다른 글

Init_Timer  (0) 2014.08.19
Init_ADC  (0) 2014.08.19
Posted by 십자성군