WINAVR

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 15 Oct 2005 12:54:29

+0400:

IM>>>>> У меня на работе один студент пишет программу по IM>>>>> обслудиванию работы всего двух чипов. Так он уже на 11 IM>>>>> кбайт кода умудрился написать, пишет на Си.

DT>>>> Так чего ты хочешь от x51? Эта архитектура для C DT>>>> категорически не приспособлена.

DO>> Ерунда. Прекрасно все пишется на С для i51, я уже лет 10 DO>> назад вполне успешно это делал.

DT> Так чего бы не писаться. Я говорю, что _архитектура не DT> приспособлена_. Прямо адресуемой памяти 128 байт, под стек -

Для чего не приспособлена?

DT> ещё 128,

Ну да, мелкий кристалл с мелкими возможностями.

DT> а если "хочешь большего", то всё делается через DPTR, крайне неэффективно.

Причем на любом языке.

DT> Хорошо ещё, если их два. С другой стороны, например, битовые переменные: DT> удобная и эффективная вещь, но в C даже типа bool нет, чтобы их поддержать...

Для битовых переменных не нужен тип bool, но конкретно в C для i51 есть расширения для работы с битами.

DT> А на ассемблере можно извернуться. Особенно если проект несложный.

Тогда тем более писать на С, пусть он и изворачивается.

dima

formatting link

Reply to
Dmitry Orlov
Loading thread data ...
Reply to
Alex Mogilnikov
Reply to
Alex Mogilnikov
Reply to
Alex Mogilnikov
Reply to
Nickita A Startcev
Reply to
Nickita A Startcev
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
George Shepelev
Reply to
George Shepelev
Reply to
George Shepelev
Reply to
George Shepelev
Reply to
Alex Mogilnikov

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Alex Mogilnikov on Sun, 16 Oct 2005 05:46:53

+0400:

DT> За исключением параметра цикла. Придётся окружать for DT> скобками и объявлять параметр перед оператором, что захламляет DT> текст и снижает читаемость.

Ну в Паскале такого тоже нет...

DT>>> А вот паскалевских строк, оператора with, диапазонов, set-ов DT>>> явно не хватает.

AM>> Что такое with я не знаю,

DT> А! Зря не знаешь. :) Это задание контекста при использовании DT> структур (в паскале они называются records):

Штука безусловно удобная и оптимизатору лишняя подсказка, но без нее жить вполне можно.

AM>> а остальное можно в C++.

DT> Можно, но оно не интегрировано в язык. Hапример, в паскале DT> размерности массивов задаются диапазонами,

Толку-то. Сомнительное преимущество.

DT> Для сетов есть специальный оператор in. Кстати, в дельфи

Сеты тянут за собой некислый такой код из RTL. И сами переменные тоже по 32 байта. На мелкой восьмиразрядной однокристаллке не разгонишься реализовывать.

DT> добавили ещё удобную фичу: использование in в операторе for DT> таким образом:

DT> for c in SomeString do ...

DT> Содержимое строки сканируется посимвольно.

Дельфи - вообще весьма эклектичная вещь...

DT>>> Синтаксис, опять же, местами ОЧЕHЬ невнятный.

AM>> Да, C позволяет писать невнятно. Hо можно этой возможностью AM>> не пользоваться.

DT> Попробуй внятно написать декларацию/дефиницию чего-нибудь, DT> содержащего указатели. Для этого даже специальные программы DT> придумали, cdecl и cundecl. :)

На паскале подобной сложности объявления тоже внятностью не отличаются.

AM>> Так C не запрещает тебе этого делать. Пиши

AM>> short s = (short)0; AM>> long l = (long)s;

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

Пишешь

short s; char a, b;

s = (short)a+b;

Что тут не очевидно? Более того, в паскале та же проблема с тем же решением (правда нестандартным).

dima

formatting link

Reply to
Dmitry Orlov

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 16 Oct 2005 05:37:00

+0400:

DT>>> Так чего бы не писаться. Я говорю, что _архитектура не DT>>> приспособлена_. Прямо адресуемой памяти 128 байт, под стек DT>>> -

DO>> Для чего не приспособлена?

DT> Для создания эффективных компиляторов с ЯВУ. Вот на том же

Вполне приличные компиляторы созданы.

DT> MSP430 IAR компилит так, как я бы сам на ассемблере написал, а

Для i51 - тоже самое. Если конечно не писать на С вещи, которые на этой архитектуре реализуются громоздко (например вызов функции по указателю).

DT> то и эффективнее. :) Потому что ему структурность-читаемость DT> сохранять не надо.

Именно. Только какая тут связь с архитектурой?

DT>>> Хорошо ещё, если их два. С другой стороны, например, DT>>> битовые переменные: удобная и эффективная вещь, но в C даже DT>>> типа bool нет, чтобы их поддержать...

DO>> Для битовых переменных не нужен тип bool, но конкретно в C DO>> для i51 есть расширения для работы с битами.

DT> Битовые переменные - это эффективная реализация именно DT> абстракции булевых чисел.

Да нет, это прямого отношения к манипуляции битами портов/памяти не имеет.

DT> И в 51-м эта реализация очень удачная. Единственное, чего не хватало - DT> это xor двух бит.

DT> Hо если, действительно, есть что-то вроде встроенного типа DT> bit, то это тоже неплохо.

Есть, там есть форма porta.5, подробности я уже не помню, так как уже много лет с i51 не работаю.

DT>>> А на ассемблере можно извернуться. Особенно если проект DT>>> несложный.

DO>> Тогда тем более писать на С, пусть он и изворачивается.

DT> Тогда почему не взять более уместный кристалл?

Выбор кристалла - дело совсем другое. Последний раз мы выбрали 51 кристалл по желанию заказчика. Сами мы PIC'и применяем, они куда приятнее по своим возможностям.

DT> Сейчас их масса, подходящих по любым параметрам. Те же AVR-ы, при всей DT> их кривоватости :), под C заточены неплохо.

Да по-фигу как оно под С заточено. Мы неоднократно прицеливались на AVR и неоднократно от Микрочипа получали больше или дешевле. Аналоги тех же pic16f73,

16f819, 16f88, 12f675 у Атмела есть, но они дороже. Да, у них может быть при этом больше памяти, но на кой она мне нужна,если я влажу в имеющуюся? Кроме того, что куда важней, с PIC'ами есть опыт их применения в тяжелейших помеховых условиях. Набирать его с атмеловскими кристаллами (даже если предположить что у них с этим не хуже, хотя есть обратные данные) - это лишие расходы и лишняя работа ради весьма призрачных преимуществ.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Alex Mogilnikov
Reply to
Dimmy Timchenko

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.