prst 0 6 декабря, 2012 Опубликовано 6 декабря, 2012 · Жалоба Чет не нашел аналогичного вопроса... Что-то я совсем запутался, вот читаю даташит на TMS320F28335 и на стр 100, и запутался. Ранее встречал описания что менять состояние на выходном пине можно только через GPxSET/GPxCLEAR/GPxTOGGLE. Однако в схеме явно нарисовано что они все влияют на регистр GPxDAT в режиме latch. Так вот вопрос - можно ли выводить данные прямо в GPxDAT, или всеже только через GPxSET/GPxCLEAR/GPxTOOGLE? :1111493779: Ну или где почитать чтоб точно найти ответ, бросте плз ссылку/документ. Заранее сенк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 6 декабря, 2012 Опубликовано 6 декабря, 2012 (изменено) · Жалоба .... нужно попробовать закачать SPRC530:C2833x/C2823x C/C++ Header Files and Peripheral Examples с техаса сайта ( ссылка ). Распаковать, установить инсталлятор. Он создаст папку в Диске С под названием tidcs. В этой папке лежат примеры по работе с периферией процессора, а так же Hadware Abstraction Layer файлы (заголовочные файлы и сорцы). там есть два примера: C:\tidcs\c28\DSP2833x\v131\DSP2833x_examples\gpio_setup\ C:\tidcs\c28\DSP2833x\v131\DSP2833x_examples\gpio_toggle\ на всякий случай прикреплю эти два примера. Думаю, следует их пошуршать. НУ а так, там есть еще примеры, так что и в них можно полезную информацию подчерпнуть. Так вот вопрос - можно ли выводить данные прямо в GPxDAT, или всеже только через GPxSET/GPxCLEAR/GPxTOOGLE? :1111493779: не поленился - глянул. Во втором примере есть ответ на Ваш вопрос: void Gpio_example1(void) { // Example 1: // Toggle I/Os using DATA registers for(;;) { GpioDataRegs.GPADAT.all =0xAAAAAAAA; GpioDataRegs.GPBDAT.all =0x0000000A; delay_loop(); GpioDataRegs.GPADAT.all =0x55555555; GpioDataRegs.GPBDAT.all =0x00000005; delay_loop(); } } void Gpio_example2(void) { // Example 2: // Toggle I/Os using SET/CLEAR registers for(;;) { GpioDataRegs.GPASET.all =0xAAAAAAAA; GpioDataRegs.GPACLEAR.all =0x55555555; GpioDataRegs.GPBSET.all =0x0000000A; GpioDataRegs.GPBCLEAR.all =0x00000005; delay_loop(); GpioDataRegs.GPACLEAR.all =0xAAAAAAAA; GpioDataRegs.GPASET.all =0x55555555; GpioDataRegs.GPBCLEAR.all =0x0000000A; GpioDataRegs.GPBSET.all =0x00000005; delay_loop(); } } void Gpio_example3(void) { // Example 2: // Toggle I/Os using TOGGLE registers // Set pins to a known state GpioDataRegs.GPASET.all =0xAAAAAAAA; GpioDataRegs.GPACLEAR.all =0x55555555; GpioDataRegs.GPBSET.all =0x0000000A; GpioDataRegs.GPBCLEAR.all =0x00000005; // Use TOGGLE registers to flip the state of // the pins. // Any bit set to a 1 will flip state (toggle) // Any bit set to a 0 will not toggle. for(;;) { GpioDataRegs.GPATOGGLE.all =0xFFFFFFFF; GpioDataRegs.GPBTOGGLE.all =0x0000000F; delay_loop(); } } DSP2833x_examples_Gpio.zip Изменено 6 декабря, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 7 декабря, 2012 Опубликовано 7 декабря, 2012 · Жалоба beaRTS, спасибо большое! :) Значит можно смело использовать DAT регистр для записи в порт с программы... отлично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
St_vladm 0 7 декабря, 2012 Опубликовано 7 декабря, 2012 · Жалоба beaRTS, спасибо большое! :) Значит можно смело использовать DAT регистр для записи в порт с программы... отлично. Фишка в том, что при записи в GPxDAT Вы можете изменить состояние других выходных сигналов, которые уже были изменены в другой процедуре, например, в обработке прерывания. Чтобы избежать "эффекта гонок", используются регистры GPxSET, GPxCLEAR, GPxTOGGLE. Нулевое значение соответствующего бита GPxSET, например, не меняет состояние выходного сигнала в ноль. Изменяет состояние выхода только "1": в GPxSET устанавливает высокий уровень, в GPxCLEAR устанавливает низкий уровень, а в GPxTOGGLE - переключает на противоположный. Если у Вас нет конкурирующих участков кода, использующих этот же порт, или Вы точно знаете, какое значение должен иметь соответствующий выход порта в данный момент времени, то можно использовать одну команду записи в GPxDAT для установки всех значений, вместо двух (GPxSET и GPxCLEAR). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 8 декабря, 2012 Опубликовано 8 декабря, 2012 · Жалоба Фишка в том, что ... +1 !! здорово объяснили Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться