Да... одна вода... и ни о чём...Goldsmith писал(а):Ох и дофигища получилось...
CodeVisionAVR vs AVR Studio
"Я не даю готовых решений, я заставляю думать!"(С)
- Реклама
Угу... "Как правильно кормить лошадь для преодоления межгалактического пространства"...Goldsmith писал(а):Основные навыки, которыми должен владеть специалист в области программной инженерии, весьма четко определены в SWEBOK. IEEE Computer Society - достаточно авторитетная организация, чтобы хотя бы обратить внимание на ее образовательный стандарт, да и участие в его разработке таких фирм, как Boeing, Rational, SAP, Construx Software и других кое-о чем говорит.
"Я не даю готовых решений, я заставляю думать!"(С)
urry, девочка тестеровщица для того и сидит. А голову пеплом, если вместо девочки тестеровщицы окажется пользователь.
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Опять мы с Вами не совсем друг друга понимаем. Я говорил не о соотношении в конечном продукте, а о соотношении навыков. Возвращаясь к приведенному Вами примеру, можно пояснить, что мне вряд ли придет в голову браться за написание самой обработки звука, зато я смогу разработать и вывести в производство железо, а также дать программисту-прикладнику HAL API для чтения того же АЦП и вывода в ЦАП, написать каркас, обеспечивающий работу аппаратуры и вызов функций из модуля обработки, написанного программистом.(именно такая пропорция вытекает из соотношения "80% аппаратура / 20% код, не так ли?)
Так вот, при этом можно до определенной степени забыть, что обработка выполняется не на ПК - программист может руководствоваться моими рекомендациями (например, использовать только фиксированную точку, ограничения по памяти) и использовать API, тестируя код на ПК с применением любого арсенала средств. Но вот сам низкоуровневый API следует отлаживать только в железе. ICD придумали далеко не зря.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Я же специально указал размер pdf - 26 Мб, перед открытием он должен закачаться. Вот ссылка на оригинал: avr course book.Увы, не открывается... Возможно, временные трудности. Не подскажете автора и точное название? Может, у меня уже есть такая, я их давно собираю.
Это мануал, по которому обучает школьников и студентов один товарищ из Новой Зеландии:
This is a textbook that I have written to support my high school students learning using the AVR for their technology projects. We have 300 students who learn to program the AVR and some do neat things.
The book is no charge, its almost 1000 pages of learning.
It starts with Bascom and does some C and C++
(I am interested in any C++ gurus feedback on what I have written)
The complementary software I have written is also free.
And there are a lot of students projects on my website as well.
Bill
Auckland
New Zealand
http://www.techideas.co.nz
Россия навсегда!
- Реклама
Смотря как гасить. Про исключения - это о программах для ПК насколько я понял? Если без уведомления каким-то способом, то плохо, а если с умом, то очень даже хорошо. Я, к примеру, так и делаю. "Гашу" все исключения какие могу, но при этом пишу их очень подробно автоматически в журнал ошибок, а ссылку на журнал завожу в меню. Если что-то не так, то прошу мне показать этот журнал (простой текстовой файл с логом). Я считаю ненормальным, когда пользователю выскакивает окно с ошибкой, все ошибки должны быть "тихими", а если что-то не так работает, то нужно обратиться к журналу ошибок (логу) или показать этот лог разработчику.Интересная ситуация - в этом случае возникает соблазн перехватить все ексепшены и погасить их внутри. Как бы наверх ничего показываться не будет, но хорошо ли это ? Не думаю.
Мне это очень помогает, где бы и на чём бы я не писал. Нужно просто завести себе простые модули для удобного логирования и набор вариантов кодов обработчиков исключений.
Вот пример. Даже, когда я пишу простой командный скрипт, он у меня тоже пишет лог (в консоль) при помощи простого логгера:
Спойлер
Код: Выделить всё
// Пространство ClassLogger.
function ClassLogger() {
// Метод getTimeStamp().
this.getTimeStamp = function( date ) {
var Day = date.getDate();
var Month = date.getMonth();
var Year = date.getYear();
var Hour = date.getHours();
var Minutes = date.getMinutes();
var Seconds = date.getSeconds();
return ( ( Day > 9 ) ? Day : "0" + Day ) + "." +
( ( Month > 9 ) ? Month : "0" + Month )+ "." +
Year + " " +
( ( Hour > 9 ) ? Hour : "0" + Hour ) + ":" +
( ( Minutes > 9 ) ? Minutes : "0" + Minutes ) + ":" +
( ( Seconds > 9 ) ? Seconds : "0" + Seconds ) + "." +
date.getMilliseconds();
}
// Метод info().
this.info = function( str ) {
WScript.StdOut.WriteLine( this.getTimeStamp( new Date() ) + " [INFO ]: " + str );
}
// Метод error().
this.error = function( str ) {
WScript.StdOut.WriteLine( this.getTimeStamp( new Date() ) + " [ERROR]: " + str );
}
}
Россия навсегда!
Я когда-то начинал с ассемблера AVR, потом перешёл на С, а когда поработал в одной фирме, где всё пишется на C++, в том числе и ядро прошивки для МК, перешёл на C++. Сейчас пропагандирую этот подход (с разумными ограничениями). Как это я делаю? Я показываю исходный код с примерами и шаблонами (они есть у меня в подписи) и мне не нужно при этом ссылаться на какие-то с кем знакомства. Если человеку это надо, то мне не нужно его уговаривать, он может просто взять и скачать шаблонный проект и посмотреть как это работает живьём. Ещё я делаю сопровождающие ролики на youtube, где показываю тестовые примеры в работе. Вот, к примеру, простой файловый менеджер на ATmega16@16МГц: ATmega16 File Manager . Написать такое на асме или Си, чтобы было удобно сопровождать, очень трудно (для асма, я думаю, даже невозможно). Если кого интересует размеры кода, то весь менеджер уложился в 14,5 кб флеша и где-то 800-900 байт ОЗУ (последняя ревизия). При этом там есть простой просмотрщик текстовых файлов и заготовка для проигрывания wav-файлов (ещё не доделана). После этого любой желающий может прикинуть как бы похожий проект выглядел в его интерпретации на асме или Си и сделать соответствующие выводы. Этот проект демонстрирует модуль для работы с удалённым терминалом при помощи ESC-последовательностей.Давайте все же говорить о художниках, которые умеют рисовать. Хотя бы буквы. А то мы как-то все больше о всякой мелочи для дошколят - дребезг, резисторы подтяжки, корпуса... Максимум два дня помотаем, но потом ведь как пить дать выкинут.
Тут на форуме есть тема, где я предлагал всем желающим ознакомиться с данным вопросом (C++ в МК): Шаблоны проектов на C++ для AVR [GCC, IAR] .
Самое простое убеждение - это собственный практический пример.
Россия навсегда!
То есть, если я правильно понял, основная задача труъ эмбеддера в данном случае - припаять MOSI к MOSI, MISO к MISO ("и смотри не перепутай, Кутузов!" (С)), затем свистнуть программера, дать ему пример в пять строчек из даташита, как с этим интерфейсом работать, и на этом все? И пока тот будет корпеть над кодом, на досуге жаловаться всем вокруг, как тот тупит со своими double'ами и printf'ами, которые бездумно сует куда ни попадя?YS писал(а):Возвращаясь к приведенному Вами примеру, можно пояснить, что мне вряд ли придет в голову браться за написание самой обработки звука, зато я смогу разработать и вывести в производство железо, а также дать программисту-прикладнику HAL API для чтения того же АЦП и вывода в ЦАП, написать каркас, обеспечивающий работу аппаратуры и вызов функций из модуля обработки, написанного программистом.
Если да, тогда я тоже хочу такую работу, где эти волшебные вакансии?
Эмммм... как бы это помягче выразиться... Я уже читал "Windows для чайников", представляю, что такое "файл" и как с ним работать. И pdf'ы ранее уже читал, честное слово.uni писал(а):Я же специально указал размер pdf - 26 Мб, перед открытием он должен закачаться.
Ссылка нерабочая, выдает Error 404. Знание, что там лежит (точнее, когда-то лежало) 26 Мб, лишь умножает скорбь, но никак не помогает в деле.
(выделение мое - Goldsmith)uni писал(а):Это мануал, по которому обучает школьников(!) и студентов один товарищ из Новой Зеландии
Понятно, большое спасибо, что вовремя предупредили. Сэкономили мне 26 Мб трафика
Когда (если вообще когда-нибудь) дорасту до уровня школьника из Новой Зеландии, возможно, пойму, как на самом деле сложна проблема дребезга контактов и как сильно программирование микропроцессора в одном ящике с периферией (сиречь микроконтроллера) отличается от программирования другого микропроцессора, засунутого в жестяную коробку побольше и называемого ПК. Хотя, учитывая ориентацию на Bascom, возможно, автор действительно прав, а я заблуждаюсь.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Я проверил обе ссылки и обе рабочие, проблема на вашей стороне.Ссылка нерабочая, выдает Error 404. Знание, что там лежит (точнее, когда-то лежало) 26 Мб, лишь умножает скорбь, но никак не помогает в деле.
Вот увидите пособие, то поймёте когда именно достигните их уровня, а пока загадывать рано.Когда (если вообще когда-нибудь) дорасту до уровня школьника из Новой Зеландии...
Самое банальное отличие - на МК нет соглашений по обработке исключений (ошибок). Это очень, очень большое отличие от программирования на любых больших ПК, я уж не говорю про то, что отсутствие ОС - это тоже нормальное явление.как на самом деле сложна проблема дребезга контактов и как сильно программирование микропроцессора в одном ящике с периферией (сиречь микроконтроллера) отличается от программирования другого микропроцессора, засунутого в жестяную коробку побольше и называемого ПК.
Россия навсегда!
Отличается... и сильно...Goldsmith писал(а):Когда (если вообще когда-нибудь) дорасту до уровня школьника из Новой Зеландии, возможно, пойму, как на самом деле сложна проблема дребезга контактов и как сильно программирование микропроцессора в одном ящике с периферией (сиречь микроконтроллера) отличается от программирования другого микропроцессора, засунутого в жестяную коробку побольше и называемого ПК. Хотя, учитывая ориентацию на Bascom, возможно, автор действительно прав, а я заблуждаюсь.
Вот такие понтовитые говнокодеры и создают потом темы... типа... "у NXP неправильно прерывания сделаны, не могу привязать к своей проге"... или "у STM самая отстойная документация"... как недавно на элхе было...
Нет ума - нехрен вообще за МК браться... продолжайте втирать заказчику "эта прога не под AMD, а только под Intel", "у вас памяти мало, надо 32гигабайта минимум", "с видеокартой Radeon работать не будет" и т д. ...
"Я не даю готовых решений, я заставляю думать!"(С)
Не увидел логической связи. То есть в процессорах с архитектурой 80x86, на которых строятся PC, обработка исключений изначально присутствует, а на МК ее не может быть, потому что не может быть никогда?uni писал(а):Самое банальное отличие - на МК нет соглашений по обработке исключений (ошибок). Это очень, очень большое отличие от программирования на любых больших ПК
Обработка исключений - функция исключительно программной среды, в которой выполняется приложение. Например, в языке C она отсутствует, хотя в конкретных реализациях средства для этого могут быть (разумеется, нестандартные и непортируемые): например, в MS Visual C под Windows поддерживаются ключевые слова __try, __except и __finally для использования SEH, но другие компиляторы их не понимают, поэтому это не лучший вариант. В общем случае программа, написанная на ANSI C для PC, никаких специальных средств для обработки исключений не имеет.
В C++ исключения уже встроены в язык (хотя еще кривоваты, но по крайней мере уже юзабельны), в Java и C# более отшлифованы; но в любом случае это никак не заслуга микропроцессора, на котором они выполняются.
С другой стороны, имеется продукт под названием CException, написанный все той же командой из Atomic Objects для ANSI C; он позволяет использовать механизм исключений в программах, написанных на стандартном C, в любой среде. Он, конечно, уступает по мощности реализации C++ (поскольку все-таки "настоящие" исключения используют объектные средства, которых нет в ANSI C), но вполне функционален и, главное, не тащит за собой особых накладных расходов; я без проблем применял его даже на младших моделях МК (разумеется, кроме тех случаев, когда любое применение исключений противопоказано в принципе, что тоже бывает).
Судите сами, действительно ли это банальное отличие имеет место быть: далеко не всякая программа для PC обязательно имеет механизм обработки исключений, и далеко не всякая программа для МК его непременно лишена (даже для C, не говоря о C++).
Ну как сказать... На Tiny все-таки свет клином не сошелся, есть модели и пожирнее, да и задачи, которые требуют именно таких кристаллов, тоже существуют. Я бы не рискнул утверждать, что отказ от RTOS в тех случаях, когда она уместна, - это очень уж нормально (и разумно). Каждый раз организовывать многопоточность, управление потоками и обмен сообщениями между ними вручную - удовольствие ниже среднего, по крайней мере для меня. А программировать в один поток реактивное приложение - тоже задача на большого любителя. Так что тоже аргумент слабоват.uni писал(а):я уж не говорю про то, что отсутствие ОС - это тоже нормальное явление.
Я даже не упоминаю про тот же Embedded Linux... Да, среда не для елочной мигалки, согласен. Но приложения для домашних маршрутизаторов или медиа-центров - это тоже эмбеддинг. Да и новомодные платы на ARM размером с кредитную карту попадают больше в сегмент встраиваемых систем, нежели персональных компьютеров.
Мне эти отличия не представляются столь убедительными, за исключением самых младших моделей МК, где и сама возможность программирования на C под большим вопросом...
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Занавес...Goldsmith писал(а): Мне эти отличия не представляются столь убедительными, за исключением самых младших моделей МК, где и сама возможность программирования на C под большим вопросом...
Все медленно, не толкаясь, переползают на АСМ...
"Я не даю готовых решений, я заставляю думать!"(С)
Goldsmith, интересный подход, я такого не знал. Привык видеть в C проектах стандартный приём с HRESULT или его аналогах. Как же это программисты Windows оказались настолько тупыми, что использовали какой-то мутный HRESULT с его битовыми полями вместо такого изящного try-catch блока? Стандарт Си вроде не вчера придумали? Вы что-то от нас скрываете?
При любом усложнении каких-либо методов всегда идут на компромисс - что-то находим, а что-то теряем. Так где те проекты на C, который должен выдавать Гугл при запросе об этом подходе? У меня практика критерий и в этом сила 
Логическая связь очень простая. Я специально указал эту болевую точку любого проекта, который состоит из многих частей. Вы, как я понял, пишите всё лично и сами, каждый модуль, каждый драйвер и каждую ОС под свой проект, иначе никак не объяснить такую недальновидность. Я же использую части от разных проектов, которые нахожу в сети. Первое, что бросается в глаза - это несовместимость методов обработки ошибок. Хотя они все в общем исповедуют а-ля HRESULT, но выглядит это как самопал в каждом отдельном случае. При этом, если я хочу иметь от системы какую-то степень надёжности, я должен обработку ошибок всего программного комплекса сделать единообразной. Вот в чём фишка. Если проект состоит из множества частей, то обработка ошибок или исключения являются системной скрепой, которая влияет на проект в целом. Если нет единообразия, как я указал, то проект выглядит как Франкенштейн. Нарушение целостности, отсутствие единообразия влияет на сопровождение проекта. Очевидно, что я не первый, кто это заметил, иначе бы этот CException и не появился, так ведь?
На больших ПК есть ресурсы для поддержки работы с исключениями, на МК в общем случае их нет. Её нет не потому, что не может быть никогда, а потому что, если взять конкретные мк и конкретные компиляторы, то можно увидеть, что обработка исключений там не поддерживается, а сферических коней в вакууме мы не обсуждаем. Вам правильно указывают спуститься с небес на землю.
Логическая связь очень простая. Я специально указал эту болевую точку любого проекта, который состоит из многих частей. Вы, как я понял, пишите всё лично и сами, каждый модуль, каждый драйвер и каждую ОС под свой проект, иначе никак не объяснить такую недальновидность. Я же использую части от разных проектов, которые нахожу в сети. Первое, что бросается в глаза - это несовместимость методов обработки ошибок. Хотя они все в общем исповедуют а-ля HRESULT, но выглядит это как самопал в каждом отдельном случае. При этом, если я хочу иметь от системы какую-то степень надёжности, я должен обработку ошибок всего программного комплекса сделать единообразной. Вот в чём фишка. Если проект состоит из множества частей, то обработка ошибок или исключения являются системной скрепой, которая влияет на проект в целом. Если нет единообразия, как я указал, то проект выглядит как Франкенштейн. Нарушение целостности, отсутствие единообразия влияет на сопровождение проекта. Очевидно, что я не первый, кто это заметил, иначе бы этот CException и не появился, так ведь?
На больших ПК есть ресурсы для поддержки работы с исключениями, на МК в общем случае их нет. Её нет не потому, что не может быть никогда, а потому что, если взять конкретные мк и конкретные компиляторы, то можно увидеть, что обработка исключений там не поддерживается, а сферических коней в вакууме мы не обсуждаем. Вам правильно указывают спуститься с небес на землю.
Россия навсегда!
хз, что здесь разнообразного
Код: Выделить всё
try
{
if (!registrator.GetCount())
throw new CLazyException(_T("delete"));
if (strDictionaryID.IsEmpty())
throw new CLazyException(_T("delete"));
}
catch (CException* e)
{
e->GetErrorMessage(m_strError.GetBuffer(MAX_PATH), MAX_PATH);
m_strError.ReleaseBuffer();
e->Delete();
return FALSE; //RESULT_ERROR;
}
//-------------------------------------
TRY
{
n = cfile.Read(buf,(int)st.m_size);
}
CATCH(CFileException, pEx)
{
cfile.Close();
LOG ("не могу открыть файл base.ini!");
strBuffer.ReleaseBuffer();
return FALSE;
}
END_CATCH
//--------------------------------------
try
{
ADOX::_CatalogPtr m_pCatalog = NULL;
m_pCatalog.CreateInstance(__uuidof (ADOX::Catalog));
strTest.Format(ConnectData.Defaul_cs,ConnectData.Defaul_path);
m_pCatalog->Create(_bstr_t(strTest));
dbReport->Open(strTest,"admin");
}
catch(CADOException& e)
{
strError=e.GetErrorMessage();
LOG(strError);
}
//--------------------------------------
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Ну, во-первых, думаю, Вы в курсе, что разработка и выведение в серию железа реальной системы не заканчивается припаиванием четырех ножек.То есть, если я правильно понял, основная задача труъ эмбеддера в данном случае - припаять MOSI к MOSI, MISO к MISO ("и смотри не перепутай, Кутузов!" (С)), затем свистнуть программера, дать ему пример в пять строчек из даташита, как с этим интерфейсом работать, и на этом все? И пока тот будет корпеть над кодом, на досуге жаловаться всем вокруг, как тот тупит со своими double'ами и printf'ами, которые бездумно сует куда ни попадя?
В-третьих, предполагается совместная работа над проектом. О каком "досуге" речь?
Могу скинуть в личку адрес конторы, в которой работаю, если интересно.Если да, тогда я тоже хочу такую работу, где эти волшебные вакансии?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Наоборот - отвечу на любые вопросы, на какие смогу. Но часто даже спросить ленятся.uni писал(а):Стандарт Си вроде не вчера придумали? Вы что-то от нас скрываете?
Стандарт C, к сожалению, придуман даже не позапозавчера, это очень архаичный язык с более чем 40-летней историей. Для своих 1970-х вполне современный, сегодня не вполне отвечает требованиям времени. В развитии очень консервативен, поскольку гарантирует очень хорошую совместимость с прежними версиями. Отсюда и нехватка многих востребованных сегодня средств вроде исключений. Керниган и Ритчи не смогли заглянуть так далеко вперед, а сегодня уже поздно махать кулаками после драки. Поэтому приходится применять внешние "костыли и подпорки" для поддержки тех же исключений. Кстати, Cexception - не единственный инструмент такого рода, есть и аналогичные.
Я не могу ответить за Гугл, могу лишь высказать свое предположение.uni писал(а):Так где те проекты на C, который должен выдавать Гугл при запросе об этом подходе? У меня практика критерий и в этом сила
Попробуйте ввести в Гугл слово "извЕни", получите: "Результатов: примерно 13 700 000 (0,21 сек.)". И виноват не Гугл, а те, кто засоряет интернет. Спросите у Гугла про учебник по программированию микроконтроллеров - получите Шпака и подобных. Учит Шпак подобным вещам? А ведь многие относятся к этой книге чуть не как к священному писанию. Вот Вам и ответ.
Как говорится, "каков вопрос - таков ответ". Я же нашел и CException, и среду для автоматического модульного тестирования, и автоматический генератор мок-объектов, и фреймворк "квантового программирования", и еще прорву полезнейших инструментов, очень облегчающих программирование МК и повышающих качество кода (вроде тех же исключений). Что читаешь - о том и знаешь.
Совершенно верно. Но только я его целенаправленно искал, чтобы решать эту и подобные проблемы, он был мне реально нужен, равно как и прочие перечисленные инструменты. Без них я вообще не взялся за программирования МК, поскольку основная работа у меня на противоположном "полюсе" - разработка распределенных многосерверных систем, а к комфорту быстро привыкаешь, и аскетизм стандартного C сильно напрягает. Оказалось, для эмбеддинга тоже есть все необходимое, нужно только хорошенько поискать (разумеется, не запросом "хочу всего побольше и сразу" в Гугле, это заняло некоторое время.uni писал(а):Очевидно, что я не первый, кто это заметил, иначе бы этот CException и не появился, так ведь?
Вы ведь только что своими собственными глазами увидели обратное - есть, причем именно в общем случае (ANSI C частным решением назвать трудно). Лежит себе-полеживает в интернете, доступный всем желающим безвозмездно, то есть даром. Более корректный ответ на самом деле другой:uni писал(а):На больших ПК есть ресурсы для поддержки работы с исключениями, на МК в общем случае их нет.
Но это скорее субъективная причина. Теперь знаете.uni писал(а):Goldsmith, интересный подход, я такого не знал.
Кто указывает-то? Вроде в нашей беседе таких нравоучений пока еще не проскакивало. И еще немаловажно: откуда конкретно указывают? Если из болота, я вежливо, но твердо откажусь от этого радушного приглашения. Я вряд ли впишусь в тамошнюю экосистему.uni писал(а):Вам правильно указывают спуститься с небес на землю.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Ну само собой, это была лишь шутка.YS писал(а):Ну, во-первых, думаю, Вы в курсе, что разработка и выведение в серию железа реальной системы не заканчивается припаиванием четырех ножек.
Я в несколько утрированной форме лишь показал, что можно позволить себе 80/20 лишь в том случае, если за спиной есть поддержка в виде достаточно подготовленного программиста, который напишет проблемно-ориентированную часть на основе грамотно подготовленного HAL. Лично у меня такой поддержки нет, я един во всех лицах - и паять, и кодить. Второй компаньон по бизнесу - машиностроитель-конструктор, занимается другим "железом", более железным и тяжелым. Поэтому "скилл 20-го уровня" попросту не позволит мне решать подобные задачи.
По моему глубокому убеждению, идеальное соотношение для эмбеддера должно быть иным: 100% схемотехники / 100% программирования. Одно другому ну никак не помеха (разве что нехватка времени, но кому сейчас легко?). Тем более в наше-то время качай из интернета хоть черта лысого бесплатно, не нужно шарить по библиотекам, как в еще недавнем прошлом.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Мда, столько мудрствований, а простой pdf по двум разным ссылкам скачать не можете. И как после этого ко всему этому написанному относится? Может начнёте с простого - скачивания файлов из сети? Потом, к примеру, расскажите о минусах этого подхода с CException. Можно ли этот блок использовать в ISR? Да, нет, почему?
Россия навсегда!
ОтноситЬся лучше философски, с учетом того, что ресурсы сети бывают-таки временно недоступны, и в этот момент даже Тим Бернерс-Ли вряд ли что-нибудь скачает, да и ссылка на тот момент была единственной. Сегодня файл доступен, проверил из спортивного интереса (мало ли, а вдруг и правда разучился?). Другое дело, что теперь я доподлинно знаю, что там находится, и необходимость в скачивании отпала.uni писал(а):Мда, столько мудрствований, а простой pdf по двум разным ссылкам скачать не можете. И как после этого ко всему этому написанному относится? Может начнёте с простого - скачивания файлов из сети?
"Может, начнете с простого (C)" - к примеру, скачаете (Вы ведь умеете, не так ли?) и прочтете документацию, которую разработчики предоставляют вместе с продуктом?uni писал(а):Потом, к примеру, расскажите о минусах этого подхода с CException. Можно ли этот блок использовать в ISR? Да, нет, почему?
Скорее всего, необходимость в импровизированной лекции тут же отпадет.When you download the package, you also get some docs and some tests that we have used to verify that everything is working peachy.
Если с чтением дело обстоит еще хуже, чем у меня со "скачиванием файлов из сети", могу намекнуть: переход из точки, где возникло исключение, в обработчик реализован через стандартный механизм setjmp/longjmp (собственно, а как иначе это сделать в ANSI C?); представьте, как это будет работать в ISR (в зависимости от того, в каком блоке находится обработчик исключения).
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
идеальное соотношение для эмбеддера должно быть иным: 100% схемотехники / 100% программирования.
У-у-у, это Вы загнули.
Здесь все упирается не в доступность информации, а в человеческие возможности. Возможно, есть волшебные гении, которые могут идеально знать и то, и то. Но я явно не из них и мне такого не представить.
Разница между теорией и практикой на практике гораздо больше, чем в теории.


