Выбор 16-ти разрядного контроллера

Thu Nov 18 2004 23:20, Alexey Kovalev wrote to Yuriy K:

YK>> Freescale HC12, 9S12 - Codewarrior.

AK> А где его взять? AK> Или хотя бы почитать описание?

formatting link

formatting link
formatting link
Limited to 12Kbyte of code - free, если я правильно понял.

WBR, Юрий.

Reply to
Yuriy K
Loading thread data ...

Thu, 18 Nov 2004 15:27:59 +0000 (UTC) Alexey Kovalev wrote to Harry Zhurov:

AM>>>> Он не "полный" С++, но yже и не EC++, т.к. в нем есть шаблоны. AK>>> А чего, к примеру, нет? HZ>> Так ты не знаешь? А с чего тогда замечания "Там от ++ чуть"?

AK> MSP430 не пользовался.

Для АРМа там раньше всех появилось - уже больше года точно. Почти год, как есть для MSP430 и должно появиться в версиях 4.хх для AVR, которые как обычно задерживаются с выходом.

HZ>> Докладываю: там нет трех вещей 1) исключений, 2) информации о HZ>> типе во время выполнения, 3) множественного наследования.

HZ>> По первым двум вещам - однозначно правильно. Это вещи толстые, HZ>> накладные, из-за чего их полезность в ембеддед очень сомнительна. HZ>> Множественное наследование можно было бы и включить. Почему этого HZ>> (пока) нет, думаю, из-за усложнения компилятора. Думаю, со временем HZ>> включат и это.

AK> 3) как раз и не нужно. От него избавляются в новых ЯВУ даже для ПК.

Новые ЯВУ для ПК - это инструменты в большинстве для "мальчиков", вчерашних студентов/школьников. Для них чем проще, тем лучше. Чтобы они быстренько лабали веб и не грели себе голову высокими концепциями. :))

AK> 2) согласен. 1) не согласен. Ограниченный вариант был бы полезен. Например, AK> в throw только целочисленное выражение (или даже константа).

Без разницы. Раскрутка стека все равно понадобится. Усложнение как компилятора, так и сгенеренного кода большое и неоправданное.

AK>>> Да и обработка исключений - как реализована. По сути это просто AK>>> выход сразу из многих уровней вложенности (упрощённо).

AK> ^^^^^^^^^ HZ>> У ты какой! Обработка исключений - это далеко не "просто выход HZ>> сразу из многих уровней вложенности". Это довольно нетривиальный в HZ>> реализации механизм раскручивания стека

AK> за который голова у компилятора болит. И пусть болит - лишь бы код AK> создал.

Он создаст. Ему-то чего переживать, когда у тебя вместо 4 килобайт прошивка будет 10. И зависать на возбуждении исключения будет на долгие тысячи тактов - так, что даже и не знаешь реально сколько оно там болтается.

HZ>> - нужно на каждом уровне вызвать деструкторы всех созданных на этом HZ>> уровне объектов. Это тянет приличные накладные расходы по памяти, коду AK> и

AK> какие деструкторы вызывать известно на этапе компиляции. Их столько же AK> сколько и при обычном выходе из блока/ф-ии.

Да? Ну-ка скажи-ка, известно это в таком случае:

class A; class B; class C;

extern int x; extern B eb;

void f() { case(x) { 1: A* pA = new A; break;

2: if(!eb.IsEmpty()) { B* pB = new B; pB->Copy(eb); } break; ... } ... }

Ну, и как ты и твой компилятор будете узнавать, какие объекты созданы, а какие нет?

AK> Другое дело, что в ембеддед не стОит (часто) использовать виртуальные AK> функции

А виртуальные функции-то причем? Какое они отношение имеют к механизму исключений? И потом, виртуальные функции - это один из основных рулезов языка! Он позволяет стройно и компактно писать программы без нагромождения артефактов из case'ов или массивов указателей на функции и риска сделать на этом глупую ошибку.

AK> да нетривиальные деструкторы - вот от них как раз и происходит AK> "нетривиальный в реализации механизм ". Без них и throw и return AK> реализуются

А return-то тут причем? :-|

AK> просто, а с ними и без исключений тормоза. AK> В альтернативе "голый С" и С++ но virtual не злоупотребляем понятно что AK> лучше.

Еще раз. Виртуальные функции - это большое удобство (к месту, конечно). Реализация их несложна и эффективна. Например, на том же MSP430 вызов виртуальной функции по сравнению с обычной функцией-членом - это всего две быстрых регистровых операции по 1 такту каждая. Это по скорости. И по памяти - один указатель vptr в объекте класса. Все. Отказываться от виртуальности и полиморфизма в пользу исключений никому в здравом уме не придет, не жди.

HZ>> ситуации не те. Обработка исключений - это, пожалуй, самое "тяжелое" HZ>> средство С++, и даже программисты, пишущие для больших машин, HZ>> стараются не злоупотреблять этим.

AK> не правда. на больших машинах все нормальные библиотеки широко AK> используют AK> исключения - обратное признак непрофессионализма.

Никакой это не признак. Признак непрофессионализма - это использовать средства не по назначению.

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

В остальных случаях можно обойтись более простыми, быстрыми и эффективными методами, чем и пользуются. И в ембеддед нет такой ситуации, как в мире больших машин, где очень интенсивное использование больших и сложных библиотек. В ембеддед такие случаи единичные. Особенно на 8/16 битных МК. Если народ и пользуется библиотеками, то это в 90% случаев RTL, а остальное собственного производства.

AK> Оставим сложные механизмы исключений. Что удобней:

AK> bool stop=false; for(){for(){for(){if(){stop=true; AK> break;}}if(stop)break;}if(stop)break;} AK> или try{for(){for(){for(){if()throw 1;}}}catch(...){;}

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

AK> При учете что все известно на этапе компиляции и затраты по коду и AK> памяти AK> будут меньше во втором случае (если компилятор не соптимизирует 1 в 2)

В этом и подобных случаев проще всего, эффективнее всего и разумнее всего использовать goto.

HZ>> От себя: ты, я вижу, не слишком-то знаком с языком

AK> наоборот :)

Может быть. Но по твоим постам на тему С++ впечатление складывается другое.

HZ>> фоне обзывки в адрес автора

AK> Укажи где были "обзывки" мылом. Я их не вижу.

Отмотай немного назад и увидишь.

Reply to
Harry Zhurov

Привет!

Я не применял F352 поэтому точно не скажу, но принципиальных трудностей не вижу. Лучше всего позвонить в INELTEK и пообщаться Дмитрием Гаврилюком, координаты см. там ->

formatting link
Или узнать в ЕвроСтандарте
formatting link
_______ Сергей.

Reply to
Sergey Pinigin

Hello, Harry! You wrote to Alexey Kovalev on Fri, 19 Nov 2004 04:34:59 +0000 (UTC):

AK>>>> Да и обработка исключений - как реализована. По сути это AK>>>> просто выход сразу из многих уровней вложенности (упрощённо).

^^^^^^^^^

AK>> за который голова у компилятора болит. И пусть болит - лишь бы AK>> код создал.

HZ> Он создаст. Ему-то чего переживать, когда у тебя вместо 4 HZ> килобайт прошивка будет 10. И зависать на возбуждении исключения

Это если ему в рантайме нужно определять какая же в действительности вирт. ф-ия вызвана (тесно связано с RTTI). В противном случае для каждого throw всё извесно на этапе компиляции и throw сводится к сдвигу стека и jmp-у.

HZ> Да? Ну-ка скажи-ка, известно это в таком случае: HZ> 1: A* pA = new A; break; HZ> 2: if(!eb.IsEmpty()) HZ> { HZ> B* pB = new B; HZ> pB->Copy(eb); HZ> }

HZ> Ну, и как ты и твой компилятор будете узнавать, какие объекты HZ> созданы, а какие нет?

У тебя тут в любом случае меморилики. С жабой спутал или Managed C ? (см. свой пассаж про web)

У меня бы была обязательная в любом случае инициализация указателей на NULL и catch(){if(global_pA){delete global_pA;global_pA=NULL;}....}

[флейм остановлен]

With best regards, Alexey Kovalev

Reply to
Alexey Kovalev

Hello, Yuriy! You wrote to Alexey Kovalev on Fri, 19 Nov 2004 01:37:29 +0300:

YK>

formatting link

У них такая фирменная "изюмина" - один таймер у всех? (Несмотря на тучу к нему compare/capture). Неудобно же: ни режимов счётчика ни некратных др-другу интервалов организовать. Или я не понял и там, вглубине, это всё делается но очень по мотороловски?

With best regards, Alexey Kovalev

Reply to
Alexey Kovalev

Fri Nov 19 2004 08:36, Alexey Kovalev wrote to Yuriy K:

YK>>

formatting link

AK> У них такая фирменная "изюмина" - один таймер у всех? AK> (Hесмотря на тучу к нему compare/capture). AK> Hеудобно же: ни режимов счётчика

Счетчиков 4-8 штук.

AK> ни некратных др-другу интервалов организовать.

Compare вполне достаточно.

Reply to
Yuriy K

Thu Nov 18 2004 22:27, Alexey Kovalev wrote to Dima Orlov:

DO>> А в чем?

AK> В наличии встроенной периферии. У проца её нет или почти нет, AK> обычно даже тактовый генератор требуется внешний.

Так по твоему, 80188 - это микроконтроллер? У него периферия на борту, хоть памяти и нет. А Юбикомы/Синиксы, если по твоему считать, микропроцессоры, бо периферии у них, как раз по твоему определению, "почти нет" (с)? "А мужики-то и не знают" (с), ты им черкани письмецо, поправь, мол, неправильно вы все назвали ;-)

Пока, Алексей

Reply to
Alex Kouznetsov

Hello, Yuriy! You wrote to Alexey Kovalev on Fri, 19 Nov 2004 10:28:04 +0300:

YK> Счетчиков 4-8 штук.

Кажется понимаю почему фиджики популярнее моторов ;)

На сайте в таблицах только таймер "одын штюк". Это уже отвращает. Скачал даташит по MC9S12DJ64, читаю

Enhanced Capture Timer ....

- Four 8-bit or two 16-bit pulse accumulators

Это и есть счётчики (таймеры с внешним тактированием) ?

Радостно лезу в "Section 9 Enhanced Capture Timer (ECT) Block" но там "Consult the ECT_16B8C Block User Guide for information about the Enhanced Capture".

Ладно, скачал и его. А там:

This timer contains 8 complete input capture/output compare channels and ___one____ pulse accumulator.

Так можно на него (или другой мотор) подать 2/4/8 импульсных сигналов что бы они считались независимо? На какие хоть ноги, для определенности?

With best regards, Alexey Kovalev

Reply to
Alexey Kovalev

Fri Nov 19 2004 10:55, Alexey Kovalev wrote to Yuriy K:

AK> Enhanced Capture Timer AK> .... AK> - Four 8-bit or two 16-bit pulse accumulators AK> Это и есть счётчики (таймеры с внешним тактированием) ?

Да.

AK> Так можно на него (или другой мотор) подать 2/4/8 AK> импульсных сигналов что бы они считались независимо?

2/4 сигнала.

"ECT_16B8C Block User Guide V01.03"

1.2 Features

 Four 8-Bit Pulse Accumulators with 8-bit buffer registers associated with the four buffered IC channels. Configurable also as two 16-Bit Pulse Accumulators.

AK> Hа какие хоть ноги, для определенности?

"ECT_16B8C Block User Guide V01.03" Figure 4-3 8-Bit Pulse Accumulators Block Diagram Figure 4-4 16-Bit Pulse Accumulators Block Diagram

P.S. Вся дока качается одним файлом, 6мег зипа.

formatting link

P.P.S. Если к процессору не лежит душа - не надо себя мучать, душевное спокойствие дороже. :-)

Reply to
Yuriy K

Очень рад вас видеть, Maxim!

MP> но на них обычно ничего умнее плафона не собирают... Кстати о 125 MP> градусах MP> - а где вы видели такие температуры? Дифферент с атмосферой более 50 MP> градусов это уже нонсенс. Вообще-то в автомобильной промышленности более MP> ценна нижняя цифра. Потому, что в отдельных частях РФ в норме -45 зимой. ford-scorpio, карбюратор с контроллером (на карбе шаговик и биметалический термопривод) коробка контроллера стоит на крыле, около двигателя. греется с одной стороны двигателем, с другой охлаждается железом кузова. по моим прикидкам, зимой -25-30 с одной стороны и +70-90 с другой. внутри мотороловский масочный проц в дип40, датчик давления (мотороловский), пара дип14, дип8 и куча рассыпухи, силовые ключи на зажигание. размер - прмерно с сд-привод, чуть меньше. электролиты стоят на +125. мелочевка - вся от моторолы.

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

AVL

Reply to
Vasiliy Andreev

Hello, Alex! You wrote to Alexey Kovalev on Fri, 19 Nov 2004 08:34:16 +0000 (UTC):

AK> Так по твоему, 80188 - это микроконтроллер? У него периферия на AK> борту, хоть памяти и нет.

Периферии чуть (3 таймера) по сравнению с ядром. Всякие DMA вполне микропроцессорные модули (служат для сопряжения с специфической микропроцессорной обвязкой). Насчёт памяти ты загнул - она есть (регистры).

Аналогично: если в пне встроен датчик температуры то он все равно микропроцессор.

AK> А Юбикомы/Синиксы, если по твоему считать, микропроцессоры, бо

Ты про виртуальную периферию? Именно потому что она предусмотрена производителем их и называют Controller

With best regards, Alexey Kovalev

Reply to
Alexey Kovalev

Hello, Alexey Kovalev !

Описание чего?

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Alexey Kovalev !

Вобщем достаточно размытая граница.

Для того чтобы говорить о лучше-хуже, нужно поставить ясно задачу. Hапример для моих С лучше ассемблера, но хуже чего-то более высокоуровневого.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Maxim, ты ещё здесь сидишь?

Четверг Hоябрь 18 2004 09:29, Maxim Polyanskiy wrote to Alex Kouznetsov:

MP> Кстати о 125 градусах - а где вы видели такие температуры?

Дык, в автомобиле.

MP> Дифферент с атмосферой более 50 градусов это уже нонсенс.

Температура вблизи мотора может доходить до 90°, за чёрной облицовкой приборного щитка в солнечный день - до 80°. Дифферент в 40° типичен для электроники (хотя и не для контроллеров, а скорее всякой аудиоусилительной аппаратуре - но ей-то тоже должен управлять контроллер...)

MP> Вообще-то в автомобильной промышленности более ценна нижняя цифра.

Ценно и то, и другое.

MP> Потому, что в отдельных частях РФ в норме -45 зимой.

В антарктиде ниже -80° бывает, так что может потребоваться техника и для таких температур...

Георгий

Reply to
George Shepelev

Alexey, ты ещё здесь сидишь?

Четверг Hоябрь 18 2004 13:51, Alexey Kovalev wrote to Alex Kouznetsov:

AK>> Я ++ вообще не упоминал, непонятно с чего вдруг возник твой AK>> вопрос. Hо раз уж тебя этот вопрос интересует, то - 8086 AK> Это микропроцессор, а не микроконтроллер (см. сабж)

80188/186. Ы? ;-)

Георгий

Reply to
George Shepelev

Fri Nov 19 2004 11:39, Alexey Kovalev wrote to Alex Kouznetsov:

AK>> Так по твоему, 80188 - это микроконтроллер? У него периферия на AK>> борту, хоть памяти и нет.

AK> Периферии чуть (3 таймера) по сравнению с ядром. Всякие DMA вполне AK> микропроцессорные модули (служат для сопряжения с специфической AK> микропроцессорной обвязкой). AK> Hасчёт памяти ты загнул - она есть (регистры).

Да будет тебе известно, что регистры - это вообще-то не память; ты бы еще порты ввода-вывода памятью назвал. Памяти программ в нем нет. Поэтому он микропроцессор, несмотря на наличие периферии.

AK> Аналогично: если в пне встроен датчик температуры то он все равно AK> микропроцессор.

AK>> А Юбикомы/Синиксы, если по твоему считать, микропроцессоры, бо

AK> Ты про виртуальную периферию? Именно потому что она предусмотрена AK> производителем их и называют Controller

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

Если до тебя еще не дошло: разделять процессоры от контроллеров по периферии - неверно. Так никто кроме тебя не делит.

formatting link
microcontroller is a computer-on-a-chip... It is a type of microprocessor emphasizing self-sufficiency

Функционально полный компьютер без развитой периферии сделать можно, а без памяти программ - нельзя. Микропроцессор с развитой периферией сделать можно. Так что главное отличие - не периферия, а наличие/отсутствие памяти программ.

Процессор всегда является составной частью любого микроконтроллера. Говоря о языках программирования, делать принципиальное различие между процессорами и контроллерами - довольно глупо. И если уж ты задал (пусть жаже не относящийся к делу) вопрос про ++ для 16-битников, то изволь принять х86 в качестве примера. Отговорки твои несерьезны, а высказывания некорректны.

Пока, Алексей

Reply to
Alex Kouznetsov

Hello, Alex Kouznetsov !

Полно позиционируемых как контроллеры устройств без памяти программ (51, мотороллеры, etc.). Так что разделение весьма условно.

А тут ты совершенно прав.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Hello, Alex! You wrote to Alexey Kovalev on Fri, 19 Nov 2004 10:50:56 +0000 (UTC):

AK>> Hасчёт памяти ты загнул - она есть (регистры).

AK> Да будет тебе известно, что регистры - это вообще-то не память;

Самая настоящая память. В 196-ых окромя регистрового файла иной встроенной RAM и нет. На ПК при загрузке с помощью только этой "не памяти" выполняется программа тестирования внешней памяти.

AK> Памяти программ в нем нет. AK> Поэтому он микропроцессор, несмотря на наличие периферии.

Во сказал! А ты оказывается и не знаешь. Не имеет смысл перичислять огромное кол-во микроконтроллеров только с внешней памятью. Например, только вчера я смотрел MB90V340A и расстроился : ROM - External. :(

With best regards, Alexey Kovalev

Reply to
Alexey Kovalev

Привет Alex!

Friday November 19 2004 11:34, Alex Kouznetsov wrote to Alexey Kovalev:

AK> From: "Alex Kouznetsov" snipped-for-privacy@senet.com.au>

AK>

AK> Thu Nov 18 2004 22:27, Alexey Kovalev wrote to Dima Orlov: AK>

DO>>> А в чем? AK>

AK>> В наличии встроенной периферии. У проца её нет или почти нет, AK>> обычно даже тактовый генератор требуется внешний. AK>

AK> Так по твоему, 80188 - это микроконтроллер? У него периферия на борту, AK> хоть памяти и нет.

Тем не менее - считался микроконтроллером, пока был актуален.

AK> А Юбикомы/Синиксы, если по твоему считать, микропроцессоры,

Конечно.

AK> бо периферии у них, как раз по твоему определению, "почти AK> нет" (с)?

Порты есть - этого уже достаточно чтобы считать их контроллерами.

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link
, ftp://altor.sytes.net

Reply to
Alexander Torres

Привет Alex!

Friday November 19 2004 13:50, Alex Kouznetsov wrote to Alexey Kovalev:

AK>> Периферии чуть (3 таймера) по сравнению с ядром. Всякие DMA AK>> вполне микропроцессорные модули (служат для сопряжения с AK>> специфической микропроцессорной обвязкой). Hасчёт памяти ты загнул AK>> - она есть (регистры). AK>

AK> Да будет тебе известно, что регистры - это вообще-то не память; ты бы еще AK> порты ввода-вывода памятью назвал. Памяти программ в нем нет. Поэтому он AK> микропроцессор, несмотря на наличие периферии.

Значит 8035 - тоже микропроцессор ?

AK>

AK>> Аналогично: если в пне встроен датчик температуры то он все равно AK>> микропроцессор. AK>

AK>>> А Юбикомы/Синиксы, если по твоему считать, микропроцессоры, бо AK>

AK>> Ты про виртуальную периферию? Именно потому что она предусмотрена AK>> производителем их и называют Controller AK>

AK> Hе приплетай сюда виртуальную, в той или иной форме она возможна для AK> любого проца, имеющего порты ввода-вывода. Юбикомы называют AK> микроконтроллерами потому, что у них есть встроенная память программ. AK> Hесмотря на бедную _реальную_ периферию.

Hет, потому что _есть_ периферия - порты ввода-вывода.

AK> Если до тебя еще не дошло: разделять процессоры от контроллеров по AK> периферии - неверно. Так никто кроме тебя не делит.

Ээээ, вообще-то все именно так и делят, хотя конечно граница весьма условная.

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link
, ftp://altor.sytes.net

Reply to
Alexander Torres

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.