Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * main.c
- */
- #define ZAD1
- #ifdef ZAD1
- #include "DSP28x_Project.h"
- __interrupt void adc_isr(void);
- unsigned int ADCresult=0;
- unsigned int ADCcounter=0;
- void configureADC(){
- InitAdc();
- EALLOW;
- SysCtrlRegs.HISPCP.bit.HSPCLK = 3; //150MHz/6 = 25MHz
- AdcRegs.ADCTRL3.bit.ADCCLKPS=2; // hspclk/(4* adctrl + cps) => 6.25 MHz
- AdcRegs.ADCTRL1.bit.CPS=0;
- AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
- AdcRegs.ADCTRL1.bit.CONT_RUN=1; //should it run without stopping
- AdcRegs.ADCTRL1.bit.SEQ_OVRD=1; //wrapping around or overriding sequence set by max conv, works only in continous mode
- AdcRegs.ADCMAXCONV.all = 15; //always there is all + 1 channels conversed
- AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;
- AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; //adcina1 = vr2
- AdcRegs.ADCTRL1.bit.ACQ_PS=15; //aquistion time 16 adc cycles
- //AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; //Wyzwalanie programowe możliwe jest poprzez ustawienie odpowiedniego bitu w rejestrze;
- EDIS;
- }
- void setupInterrupts(){
- DINT;
- InitPieCtrl();
- IER = 0x0000;
- IFR = 0x0000;
- InitPieVectTable();
- EALLOW;
- PieVectTable.XINT1 = &adc_isr;
- EDIS;
- PieCtrlRegs.PIECTRL.bit.ENPIE=1; //wlacza modul przerwan
- PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // SEQ1 INT interrupt
- IER|=M_INT1;
- EINT;
- ERTM;
- }
- int main(void)
- {
- InitSysCtrl();
- setupInterrupts();
- configureADC();
- while(1){
- __asm(" NOP");
- DELAY_US(XXXX);
- counter++;
- AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; // uruchamia konwersje ADC z SEQ1
- }
- }
- __interrupt void adc_isr(void)
- {
- ADCcounter++;
- ADCresult=AdcMirror.ADCRESULT15;
- AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1
- AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit
- PieCtrlRegs.PIEACK.all = 1; // Acknowledge interrupt to PIE
- }
- #endif
- #ifdef ZAD2
- #include "DSP28x_Project.h"
- __interrupt void adc_isr(void);
- unsigned int ADCresult=0;
- unsigned int ADCcounter=0;
- void ledSetup(){
- EALLOW;
- GpioCtrlRegs.GPAMUX1.bit.GPIO9=0x00;
- GpioCtrlRegs.GPADIR.bit.GPIO9=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO9=1;
- GpioCtrlRegs.GPAMUX1.bit.GPIO11=0x00;
- GpioCtrlRegs.GPADIR.bit.GPIO11=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO11=1;
- GpioCtrlRegs.GPBMUX1.bit.GPIO34=0x00;
- GpioCtrlRegs.GPBDIR.bit.GPIO34=1;
- GpioCtrlRegs.GPBPUD.bit.GPIO34=1;
- GpioCtrlRegs.GPBMUX1.bit.GPIO49=0x00;
- GpioCtrlRegs.GPBDIR.bit.GPIO49=1;
- GpioCtrlRegs.GPBPUD.bit.GPIO49=1;
- EDIS;
- }
- void configureADC(){
- InitAdc();
- EALLOW;
- SysCtrlRegs.HISPCP.bit.HSPCLK = 3; //150MHz/6 = 25MHz
- AdcRegs.ADCTRL3.bit.ADCCLKPS=2; // hspclk/(4* adctrl + cps) => 6.25 MHz
- AdcRegs.ADCTRL1.bit.CPS=0;
- AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
- AdcRegs.ADCTRL1.bit.CONT_RUN=1; //should it run without stopping
- AdcRegs.ADCTRL1.bit.SEQ_OVRD=1; //wrapping around or overriding sequence set by max conv, works only in continous mode
- AdcRegs.ADCMAXCONV.all = 15; //always there is all + 1 channels conversed
- AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;
- AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; //adcina1 = vr2
- AdcRegs.ADCTRL1.bit.ACQ_PS=15; //aquistion time 16 adc cycles
- //AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; //Wyzwalanie programowe możliwe jest poprzez ustawienie odpowiedniego bitu w rejestrze;
- EDIS;
- }
- void setupInterrupts(){
- DINT;
- InitPieCtrl();
- IER = 0x0000;
- IFR = 0x0000;
- InitPieVectTable();
- EALLOW;
- PieVectTable.XINT1 = &adc_isr;
- EDIS;
- PieCtrlRegs.PIECTRL.bit.ENPIE=1; //wlacza modul przerwan
- PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // SEQ1 INT interrupt
- IER|=M_INT1;
- EINT;
- ERTM;
- }
- int main(void)
- {
- InitSysCtrl();
- ledSetup();
- setupInterrupts();
- configureADC();
- while(1){
- __asm(" NOP");
- DELAY_US(XXXX);
- counter++;
- AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; // uruchamia konwersje ADC z SEQ1
- }
- }
- __interrupt void adc_isr(void)
- {
- ADCcounter++;
- ADCresult=AdcMirror.ADCRESULT15;
- if(ADCresult < (4096/5)) {
- GPACLEAR.bit.GPIO9 = 1;
- GPACLEAR.bit.GPIO11 = 1;
- GPBCLEAR.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else if(ADCresult < (4096/5)*2) {
- GPASET.bit.GPIO9 = 1;
- GPACLEAR.bit.GPIO11 = 1;
- GPBCLEAR.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else if(ADCresult < (4096/5)*3) {
- GPASET.bit.GPIO9 = 1;
- GPASET.bit.GPIO11 = 1;
- GPBCLEAR.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else if(ADCresult < (4096/5)*4) {
- GPASET.bit.GPIO9 = 1;
- GPASET.bit.GPIO11 = 1;
- GPBSET.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else {
- GPASET.bit.GPIO9 = 1;
- GPASET.bit.GPIO11 = 1;
- GPBSET.bit.GPIO34 = 1;
- GPBSET.bit.GPIO49 = 1;
- }
- AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1
- AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit
- PieCtrlRegs.PIEACK.all = 1; // Acknowledge interrupt to PIE
- }
- #endif
- #ifdef ZAD3
- #include "DSP28x_Project.h"
- __interrupt void adc_isr(void);
- __interrupt void Timer0_ISR();
- unsigned int ADCresult=0;
- unsigned int ADCcounter=0;
- void setupTimer0(){
- CpuTimer0Regs.TCR.bit.TSS=1;
- CpuTimer0Regs.TPRH.bit.TDDRH=0xFF;
- CpuTimer0Regs.TPR.bit.TDDR=0xFF;
- CpuTimer0Regs.PRD.all=229;
- CpuTimer0Regs.TCR.bit.TIE=1;
- CpuTimer0Regs.TCR.bit.TRB=1;
- CpuTimer0Regs.TCR.bit.TSS=0;
- }
- void ledSetup(){
- EALLOW;
- GpioCtrlRegs.GPAMUX1.bit.GPIO9=0x00;
- GpioCtrlRegs.GPADIR.bit.GPIO9=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO9=1;
- GpioCtrlRegs.GPAMUX1.bit.GPIO11=0x00;
- GpioCtrlRegs.GPADIR.bit.GPIO11=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO11=1;
- GpioCtrlRegs.GPBMUX1.bit.GPIO34=0x00;
- GpioCtrlRegs.GPBDIR.bit.GPIO34=1;
- GpioCtrlRegs.GPBPUD.bit.GPIO34=1;
- GpioCtrlRegs.GPBMUX1.bit.GPIO49=0x00;
- GpioCtrlRegs.GPBDIR.bit.GPIO49=1;
- GpioCtrlRegs.GPBPUD.bit.GPIO49=1;
- EDIS;
- }
- void configureADC(){
- InitAdc();
- EALLOW;
- SysCtrlRegs.HISPCP.bit.HSPCLK = 3; //150MHz/6 = 25MHz
- AdcRegs.ADCTRL3.bit.ADCCLKPS=2; // hspclk/(4* adctrl + cps) => 6.25 MHz
- AdcRegs.ADCTRL1.bit.CPS=0;
- AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
- AdcRegs.ADCTRL1.bit.CONT_RUN=1; //should it run without stopping
- AdcRegs.ADCTRL1.bit.SEQ_OVRD=1; //wrapping around or overriding sequence set by max conv, works only in continous mode
- AdcRegs.ADCMAXCONV.all = 15; //always there is all + 1 channels conversed
- AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;
- AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; //adcina1 = vr2
- AdcRegs.ADCTRL1.bit.ACQ_PS=15; //aquistion time 16 adc cycles
- //AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; //Wyzwalanie programowe możliwe jest poprzez ustawienie odpowiedniego bitu w rejestrze;
- EDIS;
- }
- void setupInterrupts(){
- DINT;
- InitPieCtrl();
- IER = 0x0000;
- IFR = 0x0000;
- InitPieVectTable();
- EALLOW;
- PieVectTable.XINT1 = &adc_isr;
- PieVectTable.TINT0=&Timer0_ISR;
- EDIS;
- PieCtrlRegs.PIECTRL.bit.ENPIE=1; //wlacza modul przerwan
- PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // SEQ1 INT interrupt
- PieCtrlRegs.PIEIER1.bit.INTx7=1; // Timer0 TINT0
- IER|=M_INT1;
- EINT;
- ERTM;
- }
- int main(void)
- {
- InitSysCtrl();
- ledSetup();
- configureADC();
- setupTimer0();
- setupInterrupts();
- }
- __interrupt void adc_isr(void)
- {
- ADCcounter++;
- ADCresult=AdcMirror.ADCRESULT15;
- if(ADCresult < (4096/5)) {
- GPACLEAR.bit.GPIO9 = 1;
- GPACLEAR.bit.GPIO11 = 1;
- GPBCLEAR.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else if(ADCresult < (4096/5)*2) {
- GPASET.bit.GPIO9 = 1;
- GPACLEAR.bit.GPIO11 = 1;
- GPBCLEAR.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else if(ADCresult < (4096/5)*3) {
- GPASET.bit.GPIO9 = 1;
- GPASET.bit.GPIO11 = 1;
- GPBCLEAR.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else if(ADCresult < (4096/5)*4) {
- GPASET.bit.GPIO9 = 1;
- GPASET.bit.GPIO11 = 1;
- GPBSET.bit.GPIO34 = 1;
- GPBCLEAR.bit.GPIO49 = 1;
- }
- else {
- GPASET.bit.GPIO9 = 1;
- GPASET.bit.GPIO11 = 1;
- GPBSET.bit.GPIO34 = 1;
- GPBSET.bit.GPIO49 = 1;
- }
- AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1
- AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit
- PieCtrlRegs.PIEACK.all = 1; // Acknowledge interrupt to PIE
- }
- __interrupt void Timer0_ISR(){
- counter++;
- AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
- PieCtrlRegs.PIEACK.bit.ACK1=1;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement