BaLaMuTt_1989 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба Здравствуйте. Тут возникла у меня необходимость реализовать ШИМ на данном камне от TI. Нашёл пример у них на сайте но он весь какой-то непонятный и компилироваться не хочет. С DSP раньше дела никогда не имел, а тут курсовую как раз дали такую что ШИМ надо реализовать и сроки поджимают уже. Может быть у кого-нибудь есть готовый пример как это сделать? :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба Вроде на работе должен быть проект готовый с ШИМ, только боюсь он будет понятен не более, чем техасовский пример. Буду там завтра - посмотрю. А Вы бы написали пока, что пытались делать, что не работает, где не компилируется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaLaMuTt_1989 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба Ок. В общем проблема у меня на данный момент заключается в том что при компиляции композер не видит один файл (DSP281х_Device.h) и в итоге при компиляции половина С-файлов просто не компилируется. Что интересно часть файлов он компилирует а часть нет. Проект прикрепляю к этому сообщению: ev_pwm.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Выкладываю свой проект с рабочим ШИМ-ом. Код не бог весть какой, ногами не бить - один из первых проектов, зато есть комментарии. Извиняюсь, что забыл выложить вчера. Дел много, по этой же причине не посмотрел Ваш проект и просто выкладываю свой рабочий. Добавлю, что он написан для 2811 - номера пинов, отмеченных в комментариях могут не совпадать с пинами для 2812. В остальном должно работать аналогично. UM6_ram.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diablo@Dragon 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба /******************************************************************** * User’s source file ********************************************************************/ #define CNTRL_ADDR_DEF 1 #define CNTRL_ADDR_ALL_DEF 10 #define NEW_CONTROLER 1 #include "DSP281x_Device.h" #include "RS485.h" #include "bios_dsp.h" #include "tests.h" #include "flash_tools.h" #include "big_dsp_module.h" #include "spise2p.h" #include <math.h> #include <stdio.h> #include <stdlib.h> #define pi 3.1415926535897932384626433832795 //interrupt void ReadCom(void); unsigned int MassCom[16]; //void Par(int p,int yy=1) //{ int Otvet; // Otvet=p+yy; //} /*interrupt void ReadCom(void) { int ll; EALLOW; for(ll=0;ll<=15;ll++) MassCom[ll]=SciaRegs.SCIRXBUF.all; SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; //SciaRegs.SCIFFRX.bit.RXFIFORESET=1; PieCtrlRegs.PIEACK.all|=0x100; EDIS; } */ interrupt void Shim(void) { float Skvagnost,ShirImp; float ii; long i,Periud; Periud=(120000000/1200)/2.0; // for(i=1;i<=360;i++) if(++i>359) i=0; { ii=i*pi/180; Skvagnost=(sin(ii*50)+1)/2 * Periud; ShirImp=Skvagnost; EvaRegs.CMPR1=ShirImp;//регистр компоратора EvaRegs.CMPR2=ShirImp;//регистр компоратора EvaRegs.CMPR3=ShirImp;//регистр компоратора } EvaRegs.EVAIFRA.bit.T1PINT=1; //сбросить флаг прерывания периуд таймера EALLOW; PieCtrlRegs.PIEACK.all=102;//PIEACK_GROUP2; //подвердить прерывание EDIS; } int x=2; int y=7,i; int poln,z; int mass[10]; struct massTest {int h[10],w[10]}p; //int &znak=orig; void main(void) { InitSysCtrl(); //setup_oper_line(); setup_leds_line(); DINT; //выключить прерывания в процессоре InitPieCtrl(); IER = 0x0000; //выключить группу прерываний в процессоре IFR = 0x0000; //сбросить флаги прерываний InitPieVectTable(); EALLOW; //PieVectTable.RXAINT = &ReadCom; //ссылка на процедуру по приходу прирывания PieCtrlRegs.PIECRTL.bit.ENPIE = 1; //включить группу прерываний переферии Pie PieCtrlRegs.PIEIER9.bit.INTx1=1; //включить девятое прерывание на приём из порта А PieCtrlRegs.PIEIER2.bit.INTx4=1; //прерывание от таймера шима включить PieVectTable.T1PINT=&Shim; //ссылка на процедуру обработки прерывания по таймеру вектор прерывания //PieCtrlRegs.PIEIER9.bit.INTx2=1; IER=0x102; //включить девятое прерывание в процессоре и второе EINT; //включить прерывание в процессоре EDIS; i=0; EDIS; //DINT; //выключить прерывания в процессоре // IER = 0x0000; //выключить группу прерываний в процессоре // IFR = 0x0000; //сбросить флаги прерываний EALLOW; GpioMuxRegs.GPAMUX.all=0x3f; //включаем перефирию шим А 6 пин EDIS; Periud1=(120000000/1200)/2.0; EvaRegs.EVAIMRA.bit.T1PINT=1; //разрешить прерывание от таймера по периуду EvaRegs.T1PR=Periud1; //периуд таймера одной пары линей EvaRegs.T1CMPR=0x3C00;// ширина импульса EvaRegs.T1CNT=0x0000;//счётчик EvaRegs.T1CON.all=0x1042;//регистр контроля таймера EvaRegs.ACTRA.all=0x0666;//выбор уровня канала EvaRegs.DBTCONA.all=0x0000;//зона нечювствительности EvaRegs.COMCONA.all=0xA600;//регист контроля компоратора EvaRegs.EVAIFRA.bit.T1PINT=1; //сброс флага прерывания по таймеру шима Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaLaMuTt_1989 0 1 июня, 2010 Опубликовано 1 июня, 2010 · Жалоба Огромное спасибо за помощь. :) :) :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться