VVlad 0 14 декабря, 2009 Опубликовано 14 декабря, 2009 · Жалоба Просьба откликнуться тем, кто пользовался конроллером-конструктором eZ430-F2013. 1) На плате установлен МК MSP430x20x1. Правда ли, что его ток потребления всего лишь 220 мкА? 2) По какой технологии выполнен этот чип (мои версии - ABT, BTL, CMOS, TTL)? В даташите на него указано " 16-Bit RISC Architecture, 62.5 ", но архитектура и технология - различные понятия или я не прав? Думаем покупать этот набор, прошу знатоков посоветуйте, пожалуйста, на что обратить внимание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 14 декабря, 2009 Опубликовано 14 декабря, 2009 · Жалоба "конроллер-конструктор" - интересный термин :) Ток потребления сильно зависит от режимов. Сморите даташит с сайта производителя на msp430f2013. Технология производства и архитектура это разные понятия. Архитектура RISC 16 бит, а технология то вам зачем? Покупать с какой целью? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zhevak 0 14 декабря, 2009 Опубликовано 14 декабря, 2009 · Жалоба Просьба откликнуться тем, кто пользовался конроллером-конструктором eZ430-F2013. 1) На плате установлен МК MSP430x20x1. Правда ли, что его ток потребления всего лишь 220 мкА? 2) По какой технологии выполнен этот чип (мои версии - ABT, BTL, CMOS, TTL)? В даташите на него указано " 16-Bit RISC Architecture, 62.5 ", но архитектура и технология - различные понятия или я не прав? Думаем покупать этот набор, прошу знатоков посоветуйте, пожалуйста, на что обратить внимание? 1. Вопрос задан не совсем корректно. Например, я использую в своих изделиях (пожарные извещатели) именно F2001. У меня микроконтроллер просыпается примерно 1000-1300 раз в секунду, делает свою работу и вновь засыпает. При этом он хавает примерно 30-40 мкА. Кроме того, следует заметить, что напряжение питания тоже очень сильно влияет на энергопотребление. 2. :( методом исключения -- остается только CMOS. Сдается мне, что Вас интересует не этот вопрос, а какой-то другой. Уровни входных сигналов, входные токи? Задавайте вопрос прямо, а технология... -- Вам ехать надо, а Вы шашечками интересуетесь? 3. Я не понял, что Вы собираетесь покупать -- eZ430-F2013 или MSP430x20x1? Если первое ("свисток"), то для радиолюбительства сойдет, но не для промышленных применений. Не надежен, прошивка слетает, бит защиты жечь не может... в общем букет. Я убил несколько штук, потом купил MSP430-UIF и все заморочки закончились. Если второе -- MSP430F20x1, то это нормальный МК. Правда, памяти у него -- кот наплакал, но ведь и задачи разные: смотря что МК должен, может под Вашу задачу он будет вокурат. Как знать! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VVlad 0 14 декабря, 2009 Опубликовано 14 декабря, 2009 (изменено) · Жалоба Если первое ("свисток"), то для радиолюбительства сойдет, но не для промышленных применений. Не надежен, прошивка слетает, бит защиты жечь не может... в общем букет. Я убил несколько штук, потом купил MSP430-UIF и все заморочки закончились. Если второе -- MSP430F20x1, то это нормальный МК. Правда, памяти у него -- кот наплакал, но ведь и задачи разные: смотря что МК должен, может под Вашу задачу он будет вокурат. Как знать! Jorikdime - ну просто интересно. to Zhevak- 1) если он так часто у вас просыпается, то сколько же времени он работает от проспался до заснул (один цикл)? Если 220 мкА при непрерывной работе, в 5 раз меньше за счёт скважности , неужто :07: за 166 мксек можно успеть 2500 команд? 2) ну просто интересно, пусть будет CMOS. Первым делом мы испортим самолёты, ну а девушек... и шашечки - потом. 3) Покупать собираемся комплект, вот поэтому и обращаюсь к добрым профессионалам за консультацией. Если так легко сломать "свисток", то на что обращать внимание в первую очередь? Статика? Или питание? Спасибо за сочувствие, но MSP430-UIF дороговат пока. Задача - измерение напряжения от электродных датчиков - они крайне чувствительны к входному сопротивлению схемы (например, для измерения рН входной импеданс должен быть порядка 10^15 Ом). АЦП хотели сначала MAX1301, но цена 2700 руб за штуку отпугнула. Не посоветуете ли недорогой АЦП 16-разрядный, с униполярным питанием 5 Вольт и приёмом сигналов +-12 (15 Вольт)? Изменено 16 декабря, 2009 пользователем rezident Излишнее цитирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 14 декабря, 2009 Опубликовано 14 декабря, 2009 · Жалоба Не посоветуете ли недорогой АЦП 16-разрядный, с униполярным питанием 5 Вольт и приёмом сигналов +-12 (15 Вольт)? Это как??? У Вас опорный источник должен быть не менее чем размах сигнала. Обычно диапазон существенно меньше +-12 (15) В. Так как Вам требуется ОЧЕНЬ большое входное сопротивление, то напрашивается нормирующий усилитель с необходимым входным сопротивлением и скорректированным под возможности АЦП диапазоном выходного сигнала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 14 декабря, 2009 Опубликовано 14 декабря, 2009 · Жалоба у АЦП подозреваю нет таких конских входных сопротивлений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VVlad 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 · Жалоба Это как??? У Вас опорный источник должен быть не менее чем размах сигнала. Обычно диапазон существенно меньше +-12 (15) В. Так как Вам требуется ОЧЕНЬ большое входное сопротивление, то напрашивается нормирующий усилитель с необходимым входным сопротивлением и скорректированным под возможности АЦП диапазоном выходного сигнала. Верно, в MSP430F2012 есть встроенный АЦП. Можно ли его использовать при размахе от -2 до +2 Вольт? Относительно MAX1301 - вот поэтому его цена и зашкаливает 2700-3100 руб. за корпус. В качестве нормирующего усилителя решили ставить AD797 ( с входным шумом в 1.2 nV/sqrt(Hz)) или 795-й с входным импедансом 10^14 Ом. Если нормирующий будет работать с коэффициентом усиления меньше 1 , то из размаха в 4 Вольта можно ужать до 3 Вольт. Но как быть с отрицательными напряжениями? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 · Жалоба Верно, в MSP430F2012 есть встроенный АЦП. Можно ли его использовать при размахе от -2 до +2 Вольт? В даташите на контроллер абсолютно четко указан диапазон допустимых входных напряжений. Он от GND до AVCC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VVlad 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 (изменено) · Жалоба Да, на плате исходно стоял МК MSP430F2013 c 16-разрядным АЦП, и его ценность навела на мысль заменить более дешевым MK MSP430F2012 c 10-разрядным АЦП. Встал вопрос, как его проверить. Поиск на форуме привёл к монографии Chrisa Nagy http://upload.caxapa.ru/mcu/msp430/Using%20MSP430.rar , где на странице 90 приведён пример программного кода для работы с АЦП от встроенного температурящего диода. Попытка компиляции его в IAR Embedded Workbench IDE ощенилась 5 ошибками и тремя предупреждениями. Ниже приведён так и недокомпилированный исправленный вариант. #include "io430.h" int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; cout << Determine_Temp(0); cout << Determine_Temp(1); return 0; } signed long Determine_Temp (unsigned char BooleanFlag) // This function returns device temperature, based on an ADC conversion // The passed parameter acts as a flag. If it is zero, the temperature is // returned in degrees Fahrenheit. If it is non-zero, it is returned in // degrees Celsius. { signed long Temperature=25; //Define and initialize working variable ADC12CTL0 = SHT0_6 + SHT1_6 + REFON + ADC12ON; // Initialize control register 0. Sets up conversion clock, internal reference ADC12CTL1 = SHP; //Conversion sample timer signal is //sourced from the sampling timer ADC12MCTL0 = INCH_10 + SREF_1; //Use internal reference with //respect to ground, Temp sensor //is on input channel 10. ADC12CTL0 |= ADC12SC + ENC; //Enable and start conversion while (ADC12CTL1 & 0x01); //Hang in loop until conversion //completes. Temperature = ADC12MEM0 & 0x00000FFF; Temperature *= 845; //These steps convert the ADC reading //to degrees Celsius Temperature = Temperature >> 13; Temperature -= 278; if (BooleanFlag) return Temperature; //Return temperature in degrees //Celsius, if required Temperature *=461; Temperature = Temperature >> 8; //Otherwise, convert to Fahrenheit and //return Temperature +=32; return Temperature; }//End Determine Temperature Function 1) Верна ли догадка о том, что в пакете IAR нет функции вывода текстовой строки по формату (cout не работает)? 2) Как правильно сформулировать вопрос, что следует изменить в тексте, чтобы он откомпилировался? Изменено 28 декабря, 2009 пользователем rezident Оформление цитаты исходника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 · Жалоба не используйте cout и все. Все что вам надо в этой программе это ф-ция Determine_Temp, она возвращает результат измерения, видимо (не вчитывался в код, но судя по названию). Можете хоть в дебаггере смотреть на результат ф-ции или выводить в порт, как вам угодно. cout пользуется такими ф-циями как put_char если не ошибаюсь и именно вы должны их реализовать, чтобы оно работало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VVlad 0 29 декабря, 2009 Опубликовано 29 декабря, 2009 (изменено) · Жалоба Спасибо за подробный и ясный ответ, Jorikdima. Первое сомнение. В приведённом со страницы коде исходно была строка " Temperature >> = 13;" Смысл её - путем сдвига вправо на 13 бит отсечь неинформативные значащие цифры и шумы, уменьшив также результат в 2^13 раз. Компилятор не принял такой орфографии и строка была заменена на "Temperature = Temperature >> 13"; Извините заранее за неумный вопрос, но зачем присваивается начальное значение 25? (Среднея комнатная температура в градусах Цельсия?). Строка "Temperature = ADC12MEM0 & 0x00000FFF;" обнуляет старшие пятьполубайт, сохраняя три младших (12 бит). Умножение на 845 (1101001101) для конверсии в градусы Цельсия добавляет 10 бит, а после сдвига на 13 имеем 9 значащих двоичных цифр, соответствующих трёхзначному десятичному числу в градусах Кельвина. Прав ли я, что строку "Temperature -= 278;" следует исправить на "Temperature -= 273;"? Относительно загадошной фразы на стр. 89 "This code is written assuming 3.35 mV/°C, as is the case with the ’149 device. If you are using a different device, check your datasheet for the correct value." думаю, что 149 - это номер серии термочувствительных диодов, встроенных в МК, а значение 3.35 должно влиять на коэффициент 845. Но смысл формулы мне найти пока не удалось (845\3.35 = 252). Поделитесь идеями, пожалуйста. По существу, на странице 28 "IAR C LIBRARY FUNCTIONS Reference Guide" есть описание функции printf (stdio.h), так что COUT не понадобилось. И на стр. 25 "MSP430 IAR Embedded Workbench® IDE User Guide" показано как создать рабочее место (workspace window), потом файл проэкта и в нем файл с кодом программы. Изменено 29 декабря, 2009 пользователем VVlad Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 30 декабря, 2009 Опубликовано 30 декабря, 2009 (изменено) · Жалоба Компилятор не принял такой орфографии и строка была заменена на "Temperature = Temperature >> 13";А какую ошибку выдал? Вполне возможно, что достаточно было привести константу к типу переменной Temperature >>= 13L; Строка "Temperature = ADC12MEM0 & 0x00000FFF;" обнуляет старшие пятьполубайт, сохраняя три младших (12 бит). Умножение на 845 (1101001101) для конверсии в градусы Цельсия добавляет 10 бит, а после сдвига на 13 имеем 9 значащих двоичных цифр, соответствующих трёхзначному десятичному числу в градусах Кельвина. Прав ли я, что строку "Temperature -= 278;" следует исправить на "Temperature -= 273;"? В данном примере используются "магические числа" для того, чтобы делать вычисления с дробными величинами, не используя арифметику "плавающих" чисел, для которой потребуется соответствующая библиотека. Библиотека обычной "плавучки" порядка 600 байт кода добавит. Умножение на 845 и затем арифметический сдвиг на 13 бит вправо эквивалентно умножению на дробь 845/8192=0,103149. Относительно загадошной фразы на стр. 89 "This code is written assuming 3.35 mV/°C, as is the case with the ’149 device. If you are using a different device, check your datasheet for the correct value." думаю, что 149 - это номер серии термочувствительных диодов, встроенных в МК, Под " ’149 device" имеется в виду тип микроконтроллера - MSP430F149. а значение 3.35 должно влиять на коэффициент 845. Но смысл формулы мне найти пока не удалось (845\3.35 = 252). Поделитесь идеями, пожалуйста.3,35мВ/°C это наклон линейной части характеристики встроенного диода, который является термочувствительным элементом в MSP430F149. Формула для расчета по этой характеристике имеется в User's Guide в разделе ADC12 operation -> Using the Integrated Temperature Sensor. VTEMP=0.00355В/°C*(TEMPC)+0.986В Из нее выводится формула для температуры T[°C]=VTEMP / 0.00355В/°C - 0.986В / 0.00355В/°C С учетом, что АЦП 12-битный, а величина опорного напряжения VREF=1,5В получается VTEMP=VREF/4096*ADC12code откуда T[°C]=ADC12code * 1,5В / 4096 / 0,00355В/°C - 0,986В / 0,00355В/°C или T[°C]=ADC12code*0,103158°C-277,7°C Здесь мы получаем те самые коэффициенты, фигурирующие в программе 845 / 2^13=0,103149 и -278. Умножение на дробный коэффициент в программе заменено на умножение на "магическое" число 845 с последующим делением путем арифметического сдвига. Дробь 845/8192 дает весьма хорошее приближение к искомому коэффициенту, достаточное для вычисления температуры с точностью до целых градусов. Для перевода в градусы Фаренгейта в программе соответственно используются другие коэффициенты. Изменено 30 декабря, 2009 пользователем rezident Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VVlad 0 30 декабря, 2009 Опубликовано 30 декабря, 2009 (изменено) · Жалоба ошибка в ответ на строку "Temperature >> = 13L;" была такой Error[Pe029]: expected an expression C:\Documents and Settings\vlad\Мои документы\IAR Embedded Workbench\temper-prj\main.c 22 ( В компиляторе Си) Error[Pe029]: expected an expression C:\Documents and Settings\vlad\Мои документы\IAR Embedded Workbench\temper-prj\main.cpp 23 ( В компиляторе Си++) За терпение и редкое в наше время серьёзное вспомоществование сердечно благодарю уважаемого rezident -а. Особое мерси за пояснение смысла формулы. У меня есть два USER Guides ( EW430_UserGuide.pdf и MSP430x2xx_Family_User's_Guide_(Rev._D)_slau144d.pdf). В обоих искал, в последнем видел передаточную функцию, идентичную приведённому графику, а подробное объяснение нашёл только здесь. Вероятно, есть ещё третий ЮзерГайд, мне пока незнакомый. Спасибо за помощь. Искренне поздравляю с Наступающим Новым Годом. Всего наилучшего. Пусть Ваши микроконтроллеры работают без ошибок и долго. Изменено 30 декабря, 2009 пользователем VVlad Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 30 декабря, 2009 Опубликовано 30 декабря, 2009 · Жалоба А на строку "Temperature >> = 13L;" ругается потому что там лишний пробел затесался, между >> и = Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 30 декабря, 2009 Опубликовано 30 декабря, 2009 · Жалоба А на строку "Temperature >> = 13L;" ругается потому что там лишний пробел затесался, между >> и =Точно! Пробел лишний. А я и не обратил внимания, скопипастив строку у VVlad. Исправил в своем сообщении. Вероятно, есть ещё третий ЮзерГайд, мне пока незнакомый.Ну вообще-то этих User's Guide как минимум пять, по одному на каждое семейство MSP430. :rolleyes: А выведенная мной формула основана всего лишь на внимательном чтении одного из них и минимальных знаниях физики и математики в объеме, преподаваемом при обучении в средней школе. Не вижу в этом какой-то доблести. :laughing: Искренне поздравляю с Наступающим Новым Годом. Всего наилучшего.И вас с Наступающим! :santa2: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться