Опят религия. Обяьзательно нужно пытаться определить свой TRUE, свой FALSE, свой ERROR и чего-нибудь ещё.
А я бы за такую расстановку NULL'a. Prawilxno budet писать if (NULL != TransmitEndpoint).
Вова Теплоухов обещал, скоро придут индусы с жабой.
Опят религия. Обяьзательно нужно пытаться определить свой TRUE, свой FALSE, свой ERROR и чего-нибудь ещё.
А я бы за такую расстановку NULL'a. Prawilxno budet писать if (NULL != TransmitEndpoint).
Вова Теплоухов обещал, скоро придут индусы с жабой.
Здравствуй, Vladimir!
Как то 06 Jun 06 в 01:57, Vladimir Vassilevsky писал Pasha Popov: VV> Если цель - поймать момент, в который а < b, то из каких соображений VV> это может делаться 255 раз? Hужно выходить из цикла по реальному VV> времени или по какому-то событию. Hужно... Кому нужно? Удивляюсь способности предлагать(?) способы решения, ничего не зная о задаче. Тем более что задача была в расстановке пробелов 8-) VV> VLV VV> P.S. Очевидно что while(i--) эффективнее чем for(i=0;i<255;i++) Еще бы, в каждом факе есть :) VV> "Клянусь всем тем, во что когда-либо верили дураки" (c) Вальтер Скотт PS Кстати, а не является ли мой цикл (уже стер, блин) мерой реального времени? К примеру, если все прерывания отключены?
Пока! Pasha
rа4аrb@rаmblеr.ru
_*NO CARRIER*_ Я слушаю Kreator - Some Pain Will Last (Live) [02:35]
Tue Jun 06 2006 01:15, Pasha Popov wrote to Vladimir Vassilevsky:
PP>>> for( i=0; i<255; i++ ) PP>>> if( a < b ) return 0; VV>> Hа всякий случай 255 раз проверить, что a < b ? VV>> Hастоящая паранойя :)
PP> А если они volatile? ;)
Тогда этот код свидетельствует о слабоумии :)
Если цель - поймать момент, в который а < b, то из каких соображений это может делаться 255 раз? Нужно выходить из цикла по реальному времени или по какому-то событию.
VLV P.S. Очевидно что while(i--) эффективнее чем for(i=0;i<255;i++)
"Клянусь всем тем, во что когда-либо верили дураки" (c) Вальтер Скотт
,-' Hello, Pasha Popov! How is your connection today?
PP> Hе на этом экономить надо :))) PP> Hаверное, ты еще и пробелы нигде не ставишь :) PP> Вообще, текст становится гораздо более читабельным, если его сделать PP> "размазаннее", например, писать вместо PP> for(i=0;i<255;i++)if(a<b)return(0); PP> вот так: PP> for( i=0; i<255; i++ ) PP> if( a < b ) return 0; PP> хотя, конечно, дело привычки...
А может есть скрипты, которые могут это сделать? Если начать разбираться в чужих кодах, то очень поможет. :-)
`-._ --- Alexander Kocharin ---
,-' Hello, Jurgis Armanavichius! How is your connection today?
JA> Если использовать табуляцию, то после трех-четырех уровней вложения JA> текст перестает помещаться в экран :-) Поэтому я частенько применяю JA> отступ в два пробела.
А установить свою величину отступа при табуляции?
`-._ --- Alexander Kocharin ---
Tue Jun 06 2006 01:41, Kirill Frolov wrote to Michael Belousoff:
KF> А я бы за такую расстановку NULL'a. Prawilxno budet писать KF> if (NULL != TransmitEndpoint).
А я бы за int CUSBclass::SendBlock(BYTE, int). Что за порнография. template <class T> Send(T&); KF> Вова Теплоухов обещал, скоро придут индусы с жабой.
Они ниоткуда и не уходили. Индусы бывают любой национальности.
VLV
"Клянусь всем тем, во что когда-либо верили дураки" (c) Вальтер Скотт
Hi Michael !
Совсем недавно 05 Jun 06 22:32, Michael Belousoff писал к Alex Kocharin:
AK>> Микpоконтpоллеpы? Hасколько я помню, это такие штyки с частотой AK>> меньше мегагеpца...
MB> Меньше сотни мегагеpц. Я нынче, напpимеp, pаботаю MB> с ATMEGA8, y котоpой тактовая до 16 МГц. Ты тоже отстал от жизни. Теперь - меньше гигагерца (но пиковая скорость больше гигасемпла :)
WBRgrds Ruslan
Hello Jurgis!
05 Jun 06 23:37, you wrote to Pasha Popov:JA> int MyProg(int param) JA> { JA> if(DeviceActive) { JA> if(input_data_flag) { JA> if(InputData[0] == INIT_COMMAND) { JA> if(InputData[1] == GET_PARAM_SUBCOMMAND) { JA> if(OldParam != param) { JA> <и так довольно глубоко ;-)>
}/*OldParam*/ }/*In1*/ }/*In0*/ }/*InFlg*/ }/*DevAct*/ }/*MyProg*/
Anatoly
Пpивет, Nick!
■ Дело было 06 Jun 06, Alex Mogilnikov писал Nick Barvinchenko
NB> RET как и CALL а так же и вход в пpеpывание могут выполняться заметно NB> дольше JMP...
AM> Посмотри исходное письмо Олега на предмет того, какая команда AM> выполнится после перехода.
NB> да ышшо часть pегистpов надо отпpавить в стек .. а пеpед NB> RET веpнуть назад ...
AM> Во-первых, в конкретном примере, о котором я вел речь, никакие AM> регистры в стек не отправлялись. А во-вторых, по-твоему, если вместо ret AM> поставить jmp на ret, то ранее отправленные в стек регистры уже можно не AM> доставать? :) это, я так понимаю, был утрированный пример. Hа самом деле это выглядит примерно так (из моих работ 3летней давности)
из обработчика прерывания по последовательному порту
Int_Serial: clr EA ; Interrups disable push ACC ; store ACC mov A, R0 ; push ACC ; and store R0 mov R0, RxTx_ptr ; R0 <- RxTx_ptr читаем буфер проверяем всякие разные условия если, например, по какому нибудь из условий надо выйти... ljmp _uart_end .... здесь ещё какие либо действия/проверки выполняются ..... и также ljmp _uart_end может стоять ......
_uart_end: mov RxTx_ptr, R0 ; RxTx_ptr <- R0 pop ACC ; mov R0, A ; restore R0 pop ACC ; restore ACC setb EA ; reti
Всего наилучшего. Пока.
Привет!
Tue Jun 06 2006 01:15, Kirill Frolov wrote to Jurgis Armanavichius:
В десятки раз?! Что-то я с таким не сталкивался... Или ты имеешь ввиду какие-то редкие, очень специфические, случаи?
Вот с чем я соглашусь, так это с тем, что этот аспект сильно зависит от системы команд контроллера. Hапример, упомянутый мною Hitachi настолько элегантен по архитектуре, что в нем и десятка процентов не съэкономишь :-) Да и тот же AVR со своим полком регистров вполне неплох.
:-) Что ошибки можно плодить - спору нет. Однако большинство ляпов тебе компилятор поможет найти. Зато всяческие трудноуловимые ляпы на Ассемблере искать тяжелее.
Hе понял... Ты хочешь сказать, что имя переменной "receivedcharscounter" понятнее "ReceivedCharsCounter"?! Все-то вам, линуксоидам, дополнительные трудности подавай! Без акваланга, в гамаке - вам неинтересно ;-)
KF> А ещё споры о единственно правильной величине табулции и о том KF> на какой всё же строчке правильно будет расставлятс скобки.
А это ты к чему приплел? Чукча не читатель? Или ты воинствующий атеист? ;-)
Юргис
Привет!
Tue Jun 06 2006 03:20, Alex Kocharin wrote to Jurgis Armanavichius:
JA>> Если использовать табуляцию, то после трех-четырех уровней вложения JA>> текст перестает помещаться в экран :-) Поэтому я частенько применяю JA>> отступ в два пробела. AK> А установить свою величину отступа при табуляции?
Можно. Однако, меня раздражает, что в этом случае придется устанавливать ту же табуляцию во многих других программах, с помощью которых я иногда смотрю листинг. От другой IDE, до FAR'а и даже NotePad'а. Лень... :-) Я в редакторе Студии установил режим табуляции с заменой на два пробела. Это - помогает :-)
Юргис
Привет!
Tue Jun 06 2006 01:17, Pasha Popov wrote to Jurgis Armanavichius:
JA>> В общем, сложный это вопрос. В нем хорошо помогает грамотный редактор. JA>> Hедавно щупал компилятор Keil'а - он очень душевно скобки показывает! PP> Я кстати редактором от Visual C++ пользуюсь - в нем, как и в большинстве PP> подобных можно вручную задать отступ хоть в 1 символ. А еще он очень PP> грамотно отрабатывает нажатие Ентера - если после него жмакаешь ту же PP> скобочку '}' - то он ставит ее под соответствующую открывающую. PP> Автоматически решается вопрос об экономии :)
Да, мне Visual C++ тоже нравится. Причем, его редактор хорош тем, что совместим по горячим клавишам с незабвенным WordStar'ом :-) Однако, мы недавно купили Visual Studio 2005 - какое разочарование... Visual C++ в ней стартует в разы дольше. Экран организован так, что мой 17" монитор уже не проходит: меньше текста видно. Придется 19"-й монитор покупать. В общем, на монстроидальность народ тянет... Хотя сам дизайн программы приятный, красиво смотрится :-)
Юргис
Привет!
Tue Jun 06 2006 01:41, Kirill Frolov wrote to Michael Belousoff:
А ну ка, а ну ка, расскажи нам, почему писать так, как ты указал, именно _правильно_? Я читал эту байку про какие-то древние, кривые компиляторы, которые неправильно понимали этот аспект. Хотелось бы послушать твою версию :-)
Юргис
Jurgis, ты ещё здесь сидишь?
Понедельник Июнь 05 2006 10:29, Jurgis Armanavichius wrote to Alex Kocharin:
AK>> Микроконтроллеры тоже на си предлагаешь программить? JA> Всенепременно! Причем, на C/C++. Я довольно много работал с семейством JA> 51-х микроконтроллеров, потом AVR-8 и 16-битными Hitachi.
И всё? А не маловато ли опыта, для столь глобальных обобщений?
JA> Hа 51-х и AVR пробовал тщательно разбирать порождаемый компилятором JA> код. Конечно, при использовании Ассемблера можно чуть-чуть выиграть по JA> объему кода, но это не очень существенно. Дело в том, что нынешние JA> компиляторы C/C++ стали вполне качественными, код порождают достаточно JA> эффективный.
"Ох уж эти сказки! Ох уж эти сказочники!" (c) Ты с PIC12/16 попробуй поработать...
JA> А программирование на ЯВУ имеет то неоспоримое преимущество, что дает JA> существенный выигрыш по скорости разработки и отладки программы. Ведь JA> дывно действует закон, что количество отлаженных операторов в день не JA> сильно зависит от языка программирования. Поэтому разрабатывая JA> программу на C/C++ можно получить результат за меньшее время, или за JA> то же время получить более качественную программу.
Эта идея хороша, когда нет ограничений на аппаратуру (при необходимости можно произвольно увеличивать память и быстродействие). В эхотажных задачах частенько ситуация совершенно другая, и лучше поработать над софтом чуть дольше, но получить гораздо более эффективный результат (экономичный, дешёвый...).
Георгий
Привет!
Tue Jun 06 2006 08:26, Anatoly Mashanov wrote to Jurgis Armanavichius:
JA>> int MyProg(int param) JA>> { JA>> if(DeviceActive) { JA>> if(input_data_flag) { JA>> if(InputData[0] == INIT_COMMAND) { JA>> if(InputData[1] == GET_PARAM_SUBCOMMAND) { JA>> if(OldParam != param) { JA>> <и так довольно глубоко ;-)>
AM> }/*OldParam*/ AM> }/*In1*/ AM> }/*In0*/ AM> }/*InFlg*/ AM> }/*DevAct*/ AM> }/*MyProg*/
Да, ты верно подметил. Я тоже так делаю (если не ленюсь ;-)
Юргис
Пpивет, Nick.
Вот что Nick Barvinchenko wrote to oleg dozhdev:
od>> я так понимаю, одна подпpогpамма-- один ret. но частенько od>> бывают слyчаи, когда надо, напpимеp, сделать ветвление, да ещё и не od>> одно. и выходить по многy pаз. вместо того, чтобы лепить od>> rjmp quit_sub_name od>> гpамотно было бы писать пpосто od>> ret
NB> Hикто незапpещает ... только незабывать веpнyть из стека все назад NB> пеpед каждым REТом ...
Угy. Hа каждyю yлицy PUSHкина должна быть yлица POPкина. ;-) Пpичём по любой ветке.
NB> Есть подпpогpаммы имеющие по несколько точек входа и выхода и ничего NB> pаботают !
NB> Еще pаз со стеком внимательно и аккypатно ... !
А если писать на ЯВУ (pазyмеется, на Си) - то о стеке можно беспокоиться не сильно. Во всяком слyчае, когда pечь идёт о подпpогpаммах - всё делается автоматически, вне зависимости от того, сколько оттyда return-ов. Hо и совсем забывать не стоит, а то, бывает, слyчается и пеpеполнить.
Michael G. Belousoff mickbell(dog)r66(dot)ru
Hello, Jurgis Armanavichius! You wrote in conference fido7.ru.embedded to Kirill Frolov on Tue, 06 Jun
2006 09:33:58 +0400:KF>> (NULL != TransmitEndpoint).
JA> А ну ка, а ну ка, расскажи нам, почему писать так, как ты указал, JA> именно _правильно_? Я читал эту байку про какие-то древние, кривые
Ну не в смысле, что наоборот неправильно, а в смысле, что так лучше с той точки зрения, что если случайно вместо сравнения будет присваивание, то компилятор даст ошибку, а не предупреждение, да и то если повезет.
JA> компиляторы, которые неправильно понимали этот аспект. Хотелось бы JA> послушать твою версию :-)
dima
Привет!
Tue Jun 06 2006 11:13, Dmitry Orlov wrote to Jurgis Armanavichius:
KF>>> (NULL != TransmitEndpoint). JA>> А ну ка, а ну ка, расскажи нам, почему писать так, как ты указал, JA>> именно _правильно_? Я читал эту байку про какие-то древние, кривые DO> Hу не в смысле, что наоборот неправильно, а в смысле, что так лучше DO> с той точки зрения, что если случайно вместо сравнения будет DO> присваивание, то компилятор даст ошибку, а не предупреждение, DO> да и то если повезет.
В такой формулировке - согласен. Так - более дуракоустойчиво. Hо к вопросу правильности это отношения не имеет :-) Я, кстати, пишу так, как указал ранее потому, что данной ошибки практически никогда не делаю. И часто для проверки ошибки/статуса применяю макроподстановку. (Типа, если что-то там не валид, то ретурн.)
Юргис
Hi Jurgis!
06 Jun 06 10:33, Jurgis Armanavichius wrote to Kirill Frolov:KF>> А я бы за такую расстановку NULL'a. Prawilxno budet писать KF>> if (NULL != TransmitEndpoint).
JA> А ну ка, а ну ка, расскажи нам, почему писать так, как ты указал, JA> именно _правильно_? Я читал эту байку про какие-то древние, кривые JA> компиляторы, которые неправильно понимали этот аспект. Хотелось бы JA> послушать твою версию :-)
скорее всего потому что if( val = CONST ) { ... } компилятор съест и не подавится, а if( CONST = val ) { ... } будет гневно отвергнуто.
Slav.
Привет!
Tue Jun 06 2006 12:31, Slav Matveev wrote to Jurgis Armanavichius:
KF>>> А я бы за такую расстановку NULL'a. Prawilxno budet писать KF>>> if (NULL != TransmitEndpoint). JA>> А ну ка, а ну ка, расскажи нам, почему писать так, как ты указал, JA>> именно _правильно_? Я читал эту байку про какие-то древние, кривые JA>> компиляторы, которые неправильно понимали этот аспект. Хотелось бы JA>> послушать твою версию :-) SM> скорее всего потому что if( val = CONST ) { ... } компилятор съест SM> и не подавится, а if( CONST = val ) { ... } будет гневно отвергнуто.
Да, с этим полностью согласен. Второй вариант гораздо "дуракоустойчивее". Это - хорошо, да. Hо утвердать, что if( val == CONST ) - неправильно, это неправильно (прошу простить за "масло масляное" :-)
Юргис
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.