Hадежный контроллер нужен........

Jul 27, 2006 Last reply: 19 years ago 886 Replies

DO>> если не удовлетворяет язык, иди сюда: DO>>

formatting link

DO>> захотите ШИМ на втором таймере - потеряйте ССР на первом таймере. AM>

AM> Hу так объясните мне, дураку: каким образом у _меня_ в приборе первый AM> таймер AM> используется в режиме захвата и измеряет интервалы времени, а второй - в AM> режиме AM> ШИМ и вырабатывает несущую с переменной фазой, а заодно генерирует AM> таймерные AM> прерывания? видимо ты в один ССР уложился?

PS: на одном таймере и паре CCР и немножке логики во внешней ПЛИС получается отличный трехфазный ШИМ-контроллер, но если ССР "отнято" на другой таймер заради простого ШИМ'а то и все.

да, я знаю про кристаллы с интегрированным 3-ШИМ на борту. но во первых ПЛИСки во внешней обвязке у меня встречаются часто, а во вторых цена часто играет свою рояль :)

Hello Dmitry!

13 Aug 06 16:00, you wrote to me:

DO> если не удовлетворяет язык, иди сюда: DO>

formatting link
DO> захотите ШИМ на втором таймере - потеряйте ССР на первом таймере.

Hу так объясните мне, дураку: каким образом у _меня_ в приборе первый таймер используется в режиме захвата и измеряет интервалы времени, а второй - в режиме ШИМ и вырабатывает несущую с переменной фазой, а заодно генерирует таймерные прерывания?

Anatoly

Hello Dmitry.

Сyббота Авгyст 12 2006 21:20, you wrote to Vladislav Baliasov:

VB>> 675 стоит около 70 центов в партиях. Сколько стоит tiny45 ? Штучно VB>> всяко больше бакса (где-то 1.3 в лучшем случае). DO> прикольно сравнивать штучную цену с ценой в партиях. DO> Tiny25 столько же в партиях и стоит сколько твой 670, а Tiny45 уже DO> вдвое памяти больше имеет чем твой 670. при этом оба в 4-10 раз DO> быстрее.

По сведениям из efind.ru 12F675 ~$1.5 ATtiny25 ~$2.0

DO> а в Дакполе мы mega8 покупаем дешевле доллара

Полагаю, что там же вы сможете купить 12F... дешевле $0.7

Leha

Hello Dmitry.

13 Aug 06 20:26, you wrote to me:

NM>> Ты лучше скажи какая из приведенных на рисунке NM>>

formatting link
кривых NM>> правильная?

Теперь ясно! Hасколько я понимаю в простых случаях эту корекцию можно опустить. В апноте "PICDIM Lamp Dimmer for the PIC12C508" график есть, а формул нету, Hасколько я понял - там это не используется.

А если надо, то всеравно константы придется подгонять для таблицы.

Nicolas

Привет!

Sun Aug 13 2006 13:12, Dmitry E. Oboukhov wrote to Jurgis Armanavichius:

JA>> for(int i = 0; i < N; i++) JA>> { JA>> int i = 1; // Вот эта переменная "i" будет локальной в теле цикла JA>> a[i] = 0; JA>> } JA>> return i; // Возвращаем число проходов по циклу (_первую_ "i") DEO> а разве в стандартах С++ такое допустимо? DEO> вот тест: DEO> nb:[/home/dimka]$ > test.c DEO> int foo(int N, char * str) DEO> { DEO> for (int i=0; i<N; i++) DEO> { DEO> str[i]^=0xFF; DEO> } DEO> return str[i]; DEO> }

Во, елки! Точно. Видать я был введен в заблуждение книгой по Вижуал Студии 6. Этот пример компилируется без проблем в VC++ 6, однако, при компиляции в Вижуал Студии 2005 дает ошибку:

error C2065: 'i' : undeclared identifier

Посыпаю голову пеплом, был неправ.

P.S. Черт! А что еще они намудрили, о чем я не знаю и беззаботно использую?...

Юргис

Привет!

Sun Aug 13 2006 17:07, Alexander Terlyanskii wrote to Jurgis Armanavichius:

JA>> Стpанный у тебя билдеp...В этом пpимеpе обязательно будет выдана ошибка JA>> повтоpной инициализации пеpеменной. Ведь пеpеменная "i" объявлена не JA>> внутpи цикла. Внутpи цикла находится опеpатоp "a[i] = 0;". А пеpеменную AT> Да ну!

Ага! При компиляции в VC++ 6 ;-)

JA>> "i" вполне можно пpименить после опеpатоpа цикла, напpимеp так: JA>> for(int i = 0; i < N; i++) JA>> { JA>> int i = 1; // Вот эта пеpеменная "i" будет локальной в теле цикла JA>> a[i] = 0; JA>> } JA>> return i; // Возвpащаем число пpоходов по циклу (_пеpвую_ "i") AT> Кpитеpий теоpии - пpактика. Hе обломился, набpал втоpой твой пpимеp. AT> По окончании цикла пеpеменная уничтожилась, поэтому на pетуpн билдеp AT> заpугался. Точно не скажу но, по-моему, и в дpугия компилятоpах, в AT> котоpых я pаботал та же песня.

Я уже посЫпал голову пеплом в письме коллеге Dmitry E. Oboukhov... Прокололся я на VC++ 6. При компиляции в Вижуал Студии 2005 все, как ты говоришь. Прости, пожалуйста.

Юргис



Hello, Nicolas Minakov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 14 Aug 2006 07:57:00

+0400:

NM>>> Ты лучше скажи какая из приведенных на рисунке NM>>>

formatting link
NM>>> кривых правильная?

NM> Теперь ясно! Hасколько я понимаю в простых случаях эту NM> корекцию можно опустить.

Ага, особенно если не весь диапазон используется. Я этим занимался для разомкнутой системы, хотя в конце концов аналитическое решение не потребовалось, все равно пришлось подбирать корректирующую таблицу. Но там-то разомкнутая система - то есть неким образом меряется входное напряжение и на основании этого измерения формируется угол управления. Если система замкнута, это не нужно.

NM> А если надо, то всеравно константы придется подгонять для NM> таблицы.

Ага.

dima

formatting link

ðÒÉ×ÅÔ, óÅÒÇÅÊ!

SP> óËÁÎÉÒÏ×ÁÎÎÁÑ ËÎÉÇÁ "íÉËÒÏËÏÎÔÒÏÌÌÅÒÙ 16-ÒÁÚÒÑÄÎÙÅ Flash ÓÅÍÅÊÓÔ×Á 16LX ÓÄÅÒÎÕÌ ÜÔÕ ËÎÉÇÕ, ÐÒÏÓÍÏÔÒÅÌ ÂÅÇÌÏ....., ÈÏÒÏÛÁÑ ËÎÉÇÁ, ÓÐÁÓÉÂÏ ÚÁ ÓÓÙÌËÕ! ÔÏÌØËÏ ×ÏÔ ÐÒÏÂÌÅÍÁ ×ÓÅ ÔÁ ÖÅ..... ÎÅÔ ÐÏËÁ ÐÒÏÃÏ×..... ÔÁË ÞÔÏ ÕÇÌÕÂÌÑÔØÓÑ × ÔÏ, ÞÅÇÏ ÎÅÔ ÐÏËÁ ÎÅ ÈÏÞÕ...... ÏÔÌÏÖÕ ÄÏ ÌÕÞÛÉÈ ×ÒÅÍÅÎ..... ÄÁ, ×ÏÔ ÞÔÏ ÅÝÅ ÈÏÔÅÌ ÓÐÒÏÓÉÔØ..... × ÐÒÏÇÒÁÍÍÁÔÏÒÅ ISP_MB9X v2.12 ÎÅÔ ÎÁ ×ÙÈÏÄÅ ÓÉÇÎÁÌÁ SCK..... ËÁË ÜÔÏ ÐÏÎÉÍÁÔØ?

ó Õ×ÁÖÅÎÉÅÍ, P.S.

Hello Jurgis.

Mon Aug 14 2006 12:50, Jurgis Armanavichius wrote to Dmitry E. Oboukhov:

DEO>> а разве в стандартах С++ такое допустимо? DEO>> вот тест: DEO>> nb:[/home/dimka]$ > test.c DEO>> int foo(int N, char * str) DEO>> { DEO>> for (int i=0; i<N; i++) DEO>> { DEO>> str[i]^=0xFF; DEO>> } DEO>> return str[i]; DEO>> }

JA> Во, елки! Точно. Видать я был введен в заблуждение книгой по Вижуал JA> Студии 6. Этот пример компилируется без проблем в VC++ 6

Видимо, тут файл с расширением .c компилируется, например, по стандарту ANSI C.

JA> однако, при компиляции в Вижуал Студии 2005 дает ошибку: JA> error C2065: 'i' : undeclared identifier

А это уже плюсовое поведение, или по C99.

JA> Посыпаю голову пеплом, был неправ.

Hе был ты ни прав, ни неправ. :) Просто не надо путать старые стандарты C, C99 и C++.

JA> P.S. Черт! А что еще они намудрили, о чем я не знаю и беззаботно JA> использую?...

В плюсах, кстати, есть немало вкусностей, не связанных с ООП. :)

Dimmy.

Hello Michael.

Sun Aug 13 2006 17:07, Michael Mamaev wrote to me:

AB>>> Вот поэтомy компилятоp, даже и не пытается это делать. DT>> А вот в Аде - есть! ;)

MM> Hе совсем только понятно, под что эхотажное этот ваш язык Ада MM> сyществyет...

Под восьмибитки точно нет. :) Впрочем, глянул гуглом и увидел такую ссылку:

formatting link
MM> И как y него с эффективностью, полный ой?

Hу почему? Думаю, ненамного хуже C++. Тут, как и там, многое от стиля программирования зависит. Просто компилятор написать намного сложнее. Особенно соответствующий стандарту.

Dimmy.

AB> А то, что ты там с foo() сделал, это правильно ? да :) куча функций работает со статическими переменными внутри и это нормально :)

DO>> придерживаясь правила о том, что средняя глубина вложений вызовов в DO>> одном можуле должна быть 2-3 AB> Это еще почему ? это потому что бы другому человеку или тебе самому через продолжительный промежуток времени было легко разгребать написанное.

попробуй руками потрассировать trm.c это жуть как непросто будет ;)

AB>>> и между собой они сильно ветвяться, можно что-то упустить. DO>> это дебил-программист скорее всего такое написал, сильное ветвление DO>> бывает оправдано край как редко AB> Если тебе приходится писать только проекты не сложнее холло ворд, AB> это не значит, что все остальные дебилы. если в модуле требуются ветвления 3-4 степени, очевидно просто пора ввести еще один модуль. хеловорды тут не при чем

AB>>> А потом долго искать глюки, появляющиеся очень редко и асинхронно AB>>> режимам работы девайса. DO>> глюки будут не от реентабельности, а от стиля программирования AB>

AB> А он, как известно не зависит от МК или языка. Или для асма тоже 2-3 AB> уровня вложности ? имено так! макросы за уровень вложенности не считаем ;)

AB> Hу приведи, хоть то что тебе древний компилятор накомпилил, посмотрим. надо будет подумать поставить чтоли эмулятор dos, чтобы его запустить? хм

DO>>>> что межпроцессное взаимодействие уже в стандарте С появилось? DO>>>> насколько я помню его даже в С++ отродясь не было. AB>>> Вот поэтому компилятор, даже и не пытается это делать. DO>> а с какого фига не компилируется вышеприведенный пример? AB> А кто тебе сказал, что он не компилиться ? сходил поглядел, в версии 7.85 еще не компилился

сейчас что-то изменилось? я собственно об этом и спросил

DO>>>> что межпpоцессное взаимодействие yже в стандаpте С появилось? DO>>>> насколько я помню его даже в С++ отpодясь не было. AB>>> Вот поэтомy компилятоp, даже и не пытается это делать. DT>> А вот в Аде - есть! ;) MM>

MM> Hе совсем только понятно, под что эхотажное этот ваш язык Ада сyществyет... MM> И как y него с эффективностью, полный ой? у пендосов вроде в космос много чего летает на Аде написанного куда эхотажнее по идее? а так из доступного Аду можно разве что на промконтроллере пустить каком :)

на icop-6080 например уже пойдет :)

RM>> в hitech для этого специальная прагма есть для желающих вызывать один RM>> и тот же код и из прерывания и из основной программы. AB>

AB> Hу товарищ не запаривается такими тонкостями, а мне как-то и не разу AB> не приходилось этого делать. прикольно: добавьте прагму в ваш, соответствующий стандарту код, чтобы он стал компилироваться (при этом перестанет компилироваться на другом компиляторе)

DT> Hе был ты ни прав, ни неправ. :) Просто не надо путать старые стандарты C, C99 DT> и C++. я же привел пример теста компиляции именно в режимах С/С++/С99 нигде этот тест не работает. вот не помню у кого из классиков именно про этот код читал что решили уточнить о нем в стандартах, что только на сам цикл объявление распространяться будет, только не помню у кого :)

Hello Dmitry.

Mon Aug 14 2006 18:44, Dmitry E Oboukhov wrote to me:

DT>> Hе был ты ни прав, ни неправ. :) Просто не надо путать старые DT>> стандарты C, C99 и C++.

DEO> я же привел пример теста компиляции именно в режимах С/С++/С99 DEO> нигде этот тест не работает.

А, ну да, верно! Либо должно быть ошибкой определение переменной в заголовке цикла, либо, если это разрешено, то область действия этой переменной должна быть ограничена оператором цикла.

DEO> вот не помню у кого из классиков именно про этот код читал что решили DEO> уточнить о нем в стандартах, что только на сам цикл объявление DEO> распространяться будет, только не помню у кого :)

В Аде переменная цикла жёстко определяется самим оператором (не может быть внешней), в цикле является read-only, и её область действия ограничена оператором цикла.

Dimmy.

DEO>> вот не помню у кого из классиков именно про этот код читал что решили DEO>> уточнить о нем в стандартах, что только на сам цикл объявление DEO>> распространяться будет, только не помню у кого :) DT>

DT> В Аде переменная цикла жёстко определяется самим оператором (не может быть DT> внешней), в цикле является read-only, и её область действия ограничена DT> оператором цикла. а как же быть когда хочется "шагнуть" вперед на несколько итераций цикла?

вот например в C пишем просто i+=N (с проверкой условий разумеется) а дальше цикл продолжается с обычным i++'ом :)

PS: а все равно, самый красивый язык это Perl, жаль не для эхотага :) имхо разумеется

Привет Dmitry!

14 Авг 06 года (а было тогда 18:26) Dmitry E. Oboukhov в своем письме к Andrey Bivshih писал:

AB>> А то, что ты там с foo() сделал, это правильно ? DO> да :) DO> куча функций работает со статическими переменными внутри DO> и это нормально :)

Мы говорим о функции, выполнение которой прерывается и вывызывается снова, причем не рекурсивно, а совершенно асинхронно, например посередине команды обрабатывающей двухбайтовую статическую переменную. И что с этой переменной будет после этого ?

DO>>> придерживаясь правила о том, что средняя глубина вложений DO>>> вызовов в одном можуле должна быть 2-3 AB>> Это еще почему ? DO> это потому что бы другому человеку или тебе самому через DO> продолжительный промежуток времени было легко разгребать написанное.

Разгребать простую рекурсию не просто, а то как ты предлагаешь писать вообще глухо. Это даже не плохой стиль, это прям не чистоплотность. :-)

AB>>>> и между собой они сильно ветвяться, можно что-то упустить. DO>>> это дебил-программист скорее всего такое написал, сильное DO>>> ветвление DO>>> бывает оправдано край как редко AB>> Если тебе приходится писать только проекты не сложнее холло ворд, AB>> это не значит, что все остальные дебилы. DO> если в модуле требуются ветвления 3-4 степени, очевидно просто пора DO> ввести еще один модуль. хеловорды тут не при чем

Во-во, напиши две копии этой функции и вызывай на здоровье одну из основного кода, другую из прерывания. А если уж такого изврата хочешь, пиши прагму. И о стандарте (как ты сказал) тут речь не идет, поэтому про переносимость на другой компилятор не надо. Что он накомпилит, не известно тоже.

AB>>>> А потом долго искать глюки, появляющиеся очень редко и AB>>>> асинхронно AB>>>> режимам работы девайса. DO>>> глюки будут не от реентабельности, а от стиля программирования AB>>

AB>> А он, как известно не зависит от МК или языка. Или для асма тоже AB>> 2-3 уровня вложности ? DO> имено так!

Т.е. вложные прерывания в 18 пиках - это уже плохой стиль ?

DO> макросы за уровень вложенности не считаем ;)

Понятно, более 2-3 уровней вложности в макросах - плохой стиль написания макросов. Эх нету GS, он специалист по макросам, объяснил бы тебе. :-)

AB>> Hу приведи, хоть то что тебе древний компилятор накомпилил, AB>> посмотрим. DO> надо будет подумать поставить чтоли эмулятор dos, чтобы DO> его запустить? хм

Hайду, GCC под атмел версии 0.0.0.00.1b , скомпилю что-нить и буду говорить, какие у него (а за одно и у всего GCC и атмела) глюки жуткие.

DO>>> а с какого фига не компилируется вышеприведенный пример? AB>> А кто тебе сказал, что он не компилиться ? DO> сходил поглядел, в версии 7.85 еще не компилился

Hадо говорить - "уже" не компилит, т.к. это правильно.

DO> сейчас что-то изменилось? я собственно об этом и спросил

Hадеешся на ухудшение качества продукта ? :-)

С уважением, Andrey 15 Авг 06 года

formatting link
E-Mail:a_biv<саба>list,ru Jabber:Andrey_B@jabber,ru |СQ:226793191

Hello Dmitry.

Mon Aug 14 2006 22:13, Dmitry E. Oboukhov wrote to me:

DT>> В Аде переменная цикла жёстко определяется самим оператором (не может DT>> быть внешней), в цикле является read-only, и её область действия DT>> ограничена оператором цикла.

DEO> а как же быть когда хочется "шагнуть" вперед на несколько итераций DEO> цикла?

Использовать другой тип цикла, с "ручным" контролем.

DEO> вот например в C пишем просто i+=N (с проверкой условий разумеется)

При которой так легко ошибиться.

Hет, в Аде компилятор старается проконтролировать всё, что возможно. А язык устроен так, чтоб для разной семантики и синтаксис различался.

DEO> PS: а все равно, самый красивый язык это Perl, жаль не для эхотага DEO> :) имхо разумеется

Очень уж разгильдяйский. Hа нём можно писать красиво, а можно - кошмарно.

Dimmy.

Hi Dmitry !

Совсем недавно 14 Aug 06 18:37, Dmitry E. Oboukhov писал к Andrey Bivshih:

RM>>> в hitech для этого специальная прагма есть для желающих вызывать RM>>> один и тот же код и из прерывания и из основной программы. AB>>

AB>> Hу товарищ не запаривается такими тонкостями, а мне как-то и не AB>> разу не приходилось этого делать. DO> прикольно: добавьте прагму в ваш, соответствующий стандарту код, чтобы DO> он стал компилироваться (при этом перестанет компилироваться на другом DO> компиляторе) Как ты в соответствующем стандарту коде делаешь, например, обработчики прерываний? Работаешь с какой-нибудь еще памятью (ну хоть EEPROM данных, память программ и RAM данных)? Определяешь FUSE? Указываешь тип процессора? Любопытно. Я тоже хочу все это по стандарту писать, но пока не знаю как. Просвяти.

WBRgrds Ruslan

Hi Dmitry !

Совсем недавно 12 Aug 06 22:04, Dmitry E. Oboukhov писал к Vladislav Baliasov:

VB>> Вот мне только что житель Италии жаловался, что PIC он еще сумел VB>> заказать с Украины, а AVR - вообще нигде.. DO> житель Италии PIC на Украине заказывает? DO> кошмары прям какие-то рассказываете Hу вот тебе еще кошмар: рассказывали, как в Молдову ARM от Атмеля привозили поездом из России, потому что в Штатах сказали, что их нет и сроки поставки- 5 недель. Крутые украинцы, которые все остальное тащат без проблем (в том числе и со складов в Польше), тоже не взялись поставить. :)

DO> ну я еще понимаю что мы польского дилера юзаем заради того что цены DO> там ниже, но чтобы тут нельзя было процессор купить это перебор :-\ Честно говоря, цена камня интересует лишь как развлечение и отвлечение от процесса разработки. Hа стоимость моих поделок цена процессора не влияет абсолютно. Hу вообще никак. А вот то, что я, не вставая со стула, могу заказать штучку-две мелкочип(любой), но не могу заказать Атмел(некоторые позиции) - это напрягает.

И еще раз по документации. Атмеловская и рядом не лежала с мелкочиповской. Hу вообще. Руки-ноги-все_выступающее нужно поотрывать тем, кто _так_ пишет документацию. Это ж надо ухитриться заставить меня полмануала пролистать, чтобы понять, что еще где нужно установить, чтобы этот бит этого порта в этом режиме заработал.... :(

WBRgrds Ruslan

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required