v97ssv 0 19 мая, 2010 Опубликовано 19 мая, 2010 · Жалоба Доброе время суток! Помогите настроить АЦП в каскадном режиме работы.. чтото не очень понял как это сделать.. проблема в следующем.. почему то нет данных со старщих каналов АЦП.. код настройки такой Hardware->ADCTRL1.bit.SUSMOD=1; //1 Hardware->ADCTRL1.bit.ACQ_PS=15; //15 Hardware->ADCTRL1.bit.CPS=0; Hardware->ADCTRL1.bit.CONT_RUN=0; //0 Hardware->ADCTRL1.bit.SEQ_CASC=1; Hardware->ADCTRL2.all=0; Hardware->ADCTRL2.bit.INT_ENA_SEQ1=1; Hardware->ADCTRL2.bit.INT_MOD_SEQ1=0; Hardware->ADCTRL2.bit.EVA_SOC_SEQ1=1; Hardware->ADCTRL3.bit.ADCPWDN=1; Hardware->ADCTRL3.bit.ADCCLKPS=3; Hardware->ADCTRL3.bit.SMODE_SEL=0; Hardware->ADCMAXCONV.all=15; Hardware->ADCCHSELSEQ1.bit.CONV00=0; Hardware->ADCCHSELSEQ1.bit.CONV01=1; Hardware->ADCCHSELSEQ1.bit.CONV02=2; Hardware->ADCCHSELSEQ1.bit.CONV03=3; Hardware->ADCCHSELSEQ2.bit.CONV04=4; Hardware->ADCCHSELSEQ2.bit.CONV05=5; Hardware->ADCCHSELSEQ2.bit.CONV06=6; Hardware->ADCCHSELSEQ2.bit.CONV07=7; Hardware->ADCCHSELSEQ3.bit.CONV08=12; Hardware->ADCCHSELSEQ3.bit.CONV09=11; Hardware->ADCCHSELSEQ3.bit.CONV10=8; Hardware->ADCCHSELSEQ3.bit.CONV11=10; Hardware->ADCCHSELSEQ4.bit.CONV12=9; Hardware->ADCCHSELSEQ4.bit.CONV13=13; Hardware->ADCCHSELSEQ4.bit.CONV14=14; Hardware->ADCCHSELSEQ4.bit.CONV15=15; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v97ssv 0 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба неужели никто не юзал АЦП на таки камнях(((( подскажите есл и в каскаде включены ацп, то управлене идет от EVMB ?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yura_K 0 23 мая, 2010 Опубликовано 23 мая, 2010 · Жалоба Управление от EVB будет при соответствующих настройках EVB (бит разрешения установить надо) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Enthusiast 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба Можно попробовать набросать модель в Симулинке Матлаба. Сгенерить сишный код оттуда и посмотреть как осуществляется настройка АЦП в коде 8-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Enthusiast 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Я тут сделал модель в "Матлабе", которая принимает данные с АЦП и отправляет их в последовательный порт УАРТ. Настройки АЦП следующие: 1. ADCCLKPS = 6; 2. CPS = 0; 3. ACQ_PS = 12; 4. Sample time = 0.001 sec.; 5. Оцифровываются каналы с ADCINA0 по ADCINA7. Модель и получившийся проект в "Код композере" с исходниками на Си я прилагаю во вложении. Может поможет кому-нибудь. AdcTest.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 22 ноября, 2012 Опубликовано 22 ноября, 2012 · Жалоба Народ помогите плз, Не мону ни как понять, даже читая датащит по АЦП(http://www.ti.com/lit/ug/spru812a/spru812a.pdf), этож надо так извращенно писать, раз 20 перечитавал, ничего так и не понял. вот тут, в коде ... Hardware->ADCCHSELSEQ1.bit.CONV00=0; Hardware->ADCCHSELSEQ1.bit.CONV01=1; Hardware->ADCCHSELSEQ1.bit.CONV02=2; Hardware->ADCCHSELSEQ1.bit.CONV03=3; Hardware->ADCCHSELSEQ2.bit.CONV04=4; Hardware->ADCCHSELSEQ2.bit.CONV05=5; ... ... 0 1 2 3 4 5 ... - это что за magic_numbers, что за значения такие? В даташите тоже такое в примерах указвается но не сказано что за значения... Это то в каком порядке должны переключаться каналы АЦП, или чтото другое? Хелп плиз, актуально очень... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nowhow 0 22 ноября, 2012 Опубликовано 22 ноября, 2012 · Жалоба 0 1 2 3 4 5 ... - это что за magic_numbers, что за значения такие? стр. 44 вышеприведенного даташита. 0 1 2 3 4 5 - это номер канала АЦП (физическая ножка). А регистр предназначен для выбора последовательности опроса каналов в автоматическом режиме (собственно и название регистра говорящее). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 22 ноября, 2012 Опубликовано 22 ноября, 2012 · Жалоба стр. 44 вышеприведенного даташита. 0 1 2 3 4 5 - это номер канала АЦП (физическая ножка). А регистр предназначен для выбора последовательности опроса каналов в автоматическом режиме (собственно и название регистра говорящее). выходит я верно понял, однако хочу уточнить, верно ли я понял передаваемый смысл работы этого мудренного ацп если я укажу последовательность 12 7 4 9 3 6 2 13 5... - то имено в такой последовательсти будут опрашиваться все каналы, включая режим каскадирования? И именно в такой последовательности будут находиться измерения каналов в соответствующих ADCRESULTn ? И еще - как мне сделать если нужно опросить не 8 и не 16 каналов, а к примеру только 5 каналов, причем в режиме Dual Sequences, тоесть эти 5 каналов разбросаны на 2 банка АЦП как (например)3 и 2? Ограничение каналов измерения как я понял указывается значением в регистре - ADCMAXCONV, верно? Если верить примеру на стр22 то так можно но вот как, однако из написанного ниграму не ясно как, пример бы посмотреть... PS Нашел интересный сайт с примерами - http://search.pudn.com/search_read.asp?key...s320f28*&p= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 · Жалоба выходит я верно понял, однако хочу уточнить, верно ли я понял передаваемый смысл работы этого мудренного ацп если я укажу последовательность 12 7 4 9 3 6 2 13 5... - то имено в такой последовательсти будут опрашиваться все каналы, включая режим каскадирования? может, книга поможет? Глава 6. все по АЦП именно этого процессора. Ссылка на Книгу в этой ветке Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 · Жалоба может, книга поможет? Глава 6. все по АЦП именно этого процессора. Ссылка на Книгу в этой ветке не могу, у меня заблокированы на работе многие сайты с файлозашарками, и указанный вами тоже... Дома посмотрю, но толку будет мало - на работу то я её не принесу, флешки запрешены тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 (изменено) · Жалоба выходит я верно понял, однако хочу уточнить, верно ли я понял передаваемый смысл работы этого мудренного ацп если я укажу последовательность 12 7 4 9 3 6 2 13 5... - то имено в такой последовательсти будут опрашиваться все каналы, включая режим каскадирования? Вроде бы, да - в такой последовательности. Даже логично получается: если у вас на всех входах АЦП висят датчики внешние и Вам приспичило именно в такой последовательности оцифровывать, то почему бы и нет, т.е. TI тут предоставила свободу творчества, что вылилось в общем усложнении Вот что я в прошлом году натворил (хотя тогда еще зелёнее, чем сейчас был..) //функция, подключающая к питанию все внутренние блоки АЦП void PowerUpADC(void) { //Должна быть использована следующая последовательность //без ТИ не будет записи,чтения в регистры АЦП if(!SysCtrlRegs.PCLKCR0.bit.ADCENCLK) { //включаем тактирование EALLOW; SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; EDIS; //д/б задержка 2-SYSCLOCK цикла asm(" NOP"); asm(" NOP"); } //1. Разрешаем/запрещаем внешний источник опоры AdcRegs.ADCREFSEL.bit.REF_SEL = 1; //2. Power up reference/bandgap/ADC circuits together (одновременно) AdcRegs.ADCTRL3.all = 0x00E0; //3. Before performing the first conversion, a delay of 5 ms is required //сбросим WatchDog, если он включен ServiceDog(); DELAY_US(5000); } void InitializeADCmy() { if(!SysCtrlRegs.PCLKCR0.bit.ADCENCLK) { ////разрешаем тактирование АЦП от HSPCLK (HISPCP) EALLOW; SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; EDIS; //д/б задержка 2-SYSCLOCK цикла asm(" NOP"); asm(" NOP"); } // *IMPORTANT* // The ADC_cal function, which copies the ADC calibration values from TI reserved // OTP into the ADCREFSEL and ADCOFFTRIM registers, occurs automatically in the // Boot ROM. If the boot ROM code is bypassed during the debug process, the // following function MUST be called for the ADC to function according // to specification. The clocks to the ADC MUST be enabled before calling this // function. // See the device data manual and/or the ADC Reference // Manual for more information. ADC_cal(); //Включение питания PowerUpADC(); //Тактирование: прескайлеры //FCLK = HSPCLK AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x00; //ADCLK = FCLK AdcRegs.ADCTRL1.bit.CPS = 0; //Sampling Window (determines for what time duration the sampling switch is closed): //The width = (ACQ_PS + 1) times the ADCLK period. /* From 'TMS320F2812_Implementation tutorial' p.169 (6-6): "the sampling window controlled by the field ”ACQ_PS”. This group of bits defines the length of the window that is used between the multiplexer switch and the time when we sample (or ”freeze”) the input voltage. This time depends on the line impedance of the input signal. So it is hardware dependent" */ //для оцифровки максимально возможных сигналов для данного АЦП // примем Окно = 0; //т.е 1- ADCKL УВХ будет обрабатывать входной аналоговый сигнал //и в конце следующего 1-ADCKL цифровой результат появится на выходе АЦП //ПОЭТОМУ ЧАСТОТА ADCKL = 25 МГц, хотя у АЦП мах частота = 12,5 МГц!!!!!! AdcRegs.ADCTRL1.bit.ACQ_PS = 0; //Выставляем "Continious conversion mode" AdcRegs.ADCTRL1.bit.CONT_RUN = 1; //разрешаем SEQ wrap around при достижении MAXCONVn AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0; //Объединяем SEQ1 & SEQ2 -> SEQ = 16-state sequenser AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; //Режим сэмплирования: последовательный AdcRegs.ADCTRL3.bit.SMODE_SEL = 1; //выставляем глубину буффера АЦП = 16 AdcRegs.ADCMAXCONV.all = BUF_ADC_DEPTH; //Выбираем каналы для сэмплирования: везде нулевой канал ADCINA0 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x0; AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x0; AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x0; AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x0; AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x0; AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x0; AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x0; AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x0; AdcRegs.ADCCHSELSEQ3.bit.CONV09 = 0x0; AdcRegs.ADCCHSELSEQ3.bit.CONV10 = 0x0; AdcRegs.ADCCHSELSEQ3.bit.CONV11 = 0x0; AdcRegs.ADCCHSELSEQ4.bit.CONV12 = 0x0; AdcRegs.ADCCHSELSEQ4.bit.CONV13 = 0x0; AdcRegs.ADCCHSELSEQ4.bit.CONV14 = 0x0; AdcRegs.ADCCHSELSEQ4.bit.CONV15 = 0x0; //Прерывание sprufb0d p. 122 //запрещаем глобально DINT; //Разрешаем прерывание от SEQ1 при каждом достижении конца последовательности (EOS) AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0; AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; #if EXAMPLE2 //разрешаем работать SOC от ePWMxSCOA AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; #endif //Разрешаем прерывание ADCINT инициируемое EOS (концом последовательности SEQ1) // в блоке PIE: ADCINT = INT1.1 PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // группа INT1 PieCtrlRegs.PIEACK.bit.ACK1 = 1; //Разрешаем прерывание в CPU по каналу INT1 IER |= (1<<0); /* в main добавить следующие строки разрешаем глобальное прерываниe и режим отладки EINT; ERTM; */ } // InitializeADCmy(); не могу, у меня заблокированы на работе многие сайты с файлозашарками, и указанный вами тоже... Дома посмотрю, но толку будет мало - на работу то я её не принесу, флешки запрешены тоже. ну пишите в личку вашу почту - вышлю книгу И именно в такой последовательности будут находиться измерения каналов в соответствующих ADCRESULTn ? Чего - то мне кажется, что Да - в той же последовательности .. "Each sample and hold is connected to 8 multiplexed input lines. The auto sequencer is a programmable state machine and is able to automatically convert up to 16 input signals. Each state of the auto sequencer puts a measurement into its own result register. " Дома посмотрю, но толку будет мало Не надо ничего! Вот глава ( мог бы в лучшем качестве распечатать, но даже 300 dpi почему то печатает 5,8 Метров, а 600 dpi чуть больше 6 Метров, а 150 dpi - уже 2,5 М... нелинейность) TMS320F2812_Implementation_tutorial_Ch_6_ADC.pdf Изменено 23 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 · Жалоба beaRTS - Огромное Вам спасибо! Человек! :) Кое что прояснилось. Пошел читать документ что вы прицепили. За код - отдельное Спасибо! Заметил у вас использование вот этих команд в коде, раньше тоже встречал уже, специфических для этой архитектуры EALLOW; ... EDIS; ... //запрещаем глобально DINT; ... разрешаем глобальное прерываниe и режим отладки EINT; ERTM; Где есть полный их перечень? А то приходится по огрызкам гуглить и конспектировать ;) . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 (изменено) · Жалоба Заметил у вас использование вот этих команд EALLOW; ... EDIS; ... //запрещаем глобально DINT; ... разрешаем глобальное прерываниe и режим отладки EINT; ERTM; Где есть полный их перечень? А то приходится по огрызкам гуглить и конспектировать ;) . Я начал методично весь геммор записывать к себе в бложик, так сказать, конспектирую - без этого никуда.. НАсчет где почитать. Сейчас приложу файлы и кидану ссылочки, что накопаю. EALLOW, EDIS: качаем на свой проц доку "System Control and Interrupts" -> глава EALLOW-Protected Registers (в моем глава 7.2), кратко: The following registers are EALLOW-protected: • Device Emulation Registers • Flash Registers • CSM Registers • PIE Vector Table • System Control Registers • GPIO MUX Registers • Certain eCAN Registers • XINTF Registers EINT, DINT - enable/disable interrupt - для того, чтоб сделать часть Вашего кода атомарной (не прерываемой ни под каким предлогом!) качаем "TMS320C28x CPU and Instruction Set" и пользуемся поиском по документу. ERTM - не нашел в каком документе искать, но помнится, что это Enable Real-Time Mode - для средств отладки. По-любому, он вписывает какой-то бит в один из регистров специального назначения, который за отладку отвечает (вроде такой был на борту 28х ) DSP2833x_HeaderFiles_QuickStart_EALLOW_EDIS.pdf Изменено 23 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 · Жалоба вот еще нашел про Simultaneous sampling or sequential sampling modes Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться