Jump to content

    

Выбор пути ... Assembler или C ?

Всем добрый день!

 

Недавно начал осваивать микроконтроллеры фирмы ATMEL. Первое с чем имел дело - AT90S2313, теперь перешёл на ATmega. Проэкты в основном небольшие (думаю это времено), пользуюсь AVR Studio. Язык, который использую - assembler. Часто посещаю форум, и особо часто попадаю на программы написанные на С.

Так вот, хочу задать вопрос всем, кто чувствует себя уже уверенными пользователями обоих языков, вы не могли бы обьяснить начинающему:

 

1. почему люди переходят с assemblera на C?

2. какие плюсы и минусы языка С?

3. где без языка С нельзя обойтись?

4. лично ваше мнение относительно обоих? (ненормативная лексика принимается:-)

 

Всем, кто отзовется, заранее благодарен!

 

Хорошо , что вы уже задумались. Значит сами до всего дойдете.

 

Программировать контроллеры Siemens можно на 9 языках. Вот здесь бы не запутаться.

Share this post


Link to post
Share on other sites
осмысленные действия уже через полчаса после File->New (примерно столько нужно на прочтение документации по нужному периферийному модулю, например - портам, если хотим мигать светодиодом).

 

Значит при переходи с одного семейства к другому, при использовании С, минимум необходимо будет знать основые параметры, указаные на первой странице даташита,(по ним прикидывать возможность использования данного контроллера в проэкте), а при необходимости, если ничего не получается :smile3046: , лезть глубже?

Share this post


Link to post
Share on other sites

Kalin@ смелее переходите на Си. Я уже мигаю светодиодами. Скачай WinAVR для Си, он поддерживается в AVRStudio последней версии.

Share this post


Link to post
Share on other sites
Значит при переходи с одного семейства к другому, при использовании С, минимум необходимо будет знать основые параметры, указаные на первой странице даташита,
Ну не только на первой странице, а хотя бы прочитать - какие регистры есть у интересующего нас периферийного модуля, что туда надо записать и что оттуда можно прочитать. В остальном все верно.

 

Программировать контроллеры Siemens можно на 9 языках. Вот здесь бы не запутаться.
"Настоящие программисты пишут на Фортране на любом языке" :lol:

Share this post


Link to post
Share on other sites
"Настоящие программисты пишут на Фортране на любом языке" :lol:

Перефразируя эту классическую фразу - "Настоящие эмбеддеры пишут на ASM на любом языке"

и это к сожалению совсем не весело :(. По нынешним временам я бы предпочел работать с человеком который начинал с высокоуровневых языков. Ну а ASM уже потом от уровня "читаю и перевожу со словарем" можно при необходимости продвигать.

Share this post


Link to post
Share on other sites
Перефразируя эту классическую фразу - "Настоящие эмбеддеры пишут на ASM на любом языке"

и это к сожалению совсем не весело :(. По нынешним временам я бы предпочел работать с человеком который начинал с высокоуровневых языков. Ну а ASM уже потом от уровня "читаю и перевожу со словарем" можно при необходимости продвигать.

 

10-я возможность Сиеменсов утилита Prodave предоставляющая все возможности управления контроллером для любого высокоуровнего языка в DLL-библиотеках.

Share this post


Link to post
Share on other sites
Я уже мигаю светодиодами

А слабо на С для меги8 реализовать измеритель скорости движения авто, управлением шаговым двигателем указателя стрелки, выводом на ЖКИ, обработку аварийных ситуаций и это всё в реальном времени. Но сама фишка заключается в том, чтобы уместить всё это в 2 кБ!!!!!!!!!!! :wacko:

Share this post


Link to post
Share on other sites
Но сама фишка заключается в том, чтобы уместить всё это в 2 кБ!!!!!!!!!!! :wacko:
Вот и объясняйте теперь - какая вам разница, записаны в остальные 6К флеша 0xFFFF или какие-то другие байты? При примерно одинаковом уровне владения С и АСМ одна и та же задача на С реализуется в несколько раз быстрее, чем на АСМ. Вот сэкономленное время я знаю куда деть, а сэкономленые 6К - ума не приложу... У меня был один проект, когда довольно большой кусок кода в дополнение к загрузчику надо было впихнуть в 2К область загрузчика. Код (и код загрузчика тоже) был за неделю написан и отлажен на всех 8К на С, потом были взяты ассемблерные файлы после компилятора и ужаты вручную. Ужимание заняло еще неделю. Я не представляю, сколько бы я писал это на ассемблере с нуля.

Share this post


Link to post
Share on other sites
Я не представляю, сколько бы я писал это на ассемблере с нуля.

 

Вы абсолютно правы. Проэкт, о котором я писал, сделали два человека, я и мой друг. Мы разделили его на две части. На это всё ушло около 6 месяцев. Самое трудное было при совмещении блоков. Мы уйму времени тратили для того, чтобы устранять "глюки". Приходилось отслеживать каждый регистр, даже байты в ОЗУ пересекались. Но теперь я для себе вынес один урок - если алгоритм составлен правильно, программа ВНИМАТЕЛЬНО!!!! написана, значит она будет работать с первой компиляции. Или, как говорят, правильно собраная схема в настройке не нуждается.

С одной стороны на С возможно писать было бы быстрее, легче( если бы я её знал :) ) но я почему-то ИМХО я бы не добился той точности и быстродействия, что требовалась.

Share this post


Link to post
Share on other sites
Но сама фишка заключается в том, чтобы уместить всё это в 2 кБ!!!!!!!!!!! :wacko:

Нет, "сама фишка" в сравнении стомости чипа сего девайса со стоимостью автомобиля. И стоимостью шести месяцев работы двух человек.

Share this post


Link to post
Share on other sites
Проэкт, о котором я писал, сделали два человека, я и мой друг. Мы разделили его на две части. На это всё ушло около 6 месяцев.

Наверное я чего то недопонимаю но 2Кбайта 6месяцев и еще на 2их ???

 

то есть, примерно 250 человекодней

2Кб <=> =<1024 команды на асм

 

то есть вы писали не более 4асемблерных команд за день ?

Share this post


Link to post
Share on other sites
Наверное я чего то недопонимаю

 

Сейчас я вам объясню, и вам всё станет понятно.

 

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

2. Всё что нам предоставили на рабочем месте - это один компьютер на двоих, STK-500, осцилограф, паяльник и доступ в интернет.

3. По образованию мы радиотехники, и такая вещь как программирование МК было всего лишь нашим хобби в институте. Зная архитектуру атмела, его систему команд и ассемблер сложность состояла в написании алгоритмов и понимании функционирования всего устройства.

4. Эти 6 месяцев для нас скорее всего были временем показать, что мы справимся с разработкой, короче как испытательный срок !

 

 

то есть, примерно 250 человекодней

2Кб <=> =<1024 команды на асм

то есть вы писали не более 4асемблерных команд за день ?

 

5. Интересно, а сами вы пользуетесь таким методом подсчёта?

 

P.S. ИМХО есть ещё одно преимущество С, для неё написано много библиотек, или просто я плохо искал *.аsm ?

Edited by Kalina

Share this post


Link to post
Share on other sites
Сейчас я вам объясню, и вам всё станет понятно.

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

............................

Ну, тогда все объяснимо и понятно, просто у Вас прозвучала фраза

"а слабо ли уместить в 2Кб......." , которая не очень вяжется с Вашим нынешним объяснением...

Учитывая Ваше объяснение, могу предположить что и на С можно влезть в те же 2К.

5. Интересно, а сами вы пользуетесь таким методом подсчёта?
Нет конечно, но просто есть какие то разумные рамки,

а те сроки которые указали Вы по крайней мере на порядок отличаются от реальных.

P.S. ИМХО есть ещё одно преимущество С, для неё написано много библиотек, или просто я плохо искал *.аsm ?
для асм есть много чего, только в большенстве случаев это просто не оправдано,

хотя конечно есть некоторый процент задач где без асм никуда...

Share this post


Link to post
Share on other sites
С одной стороны на С возможно писать было бы быстрее, легче( если бы я её знал :) ) но я почему-то ИМХО я бы не добился той точности и быстродействия, что требовалась.

 

Вот именно, легче и быстрее, если владеть асмом и Си одинаково. А вот по поводу точности --- готов поспорить.

Вам ведь известно, что такое токоизмерительные клещи!!! Так вот, точность измерения тока 2%. Диапазон - 600А. При этом они сами калибруются (без всяких там подстроечников), и тоже обрабатывают кучу информации, TRMS, есть ЖКИ. Код на Си занимает 12 КБ!!!!!! Время от начала разработки до полного завершения прибора -- 3мес. Так на асме быстрее будет?

Просто я вот к чему веду. При переходе к созданию все более и более серьезных проектов, переход с асма на Си просто необходим.

Share this post


Link to post
Share on other sites
Вот именно, легче и быстрее, если владеть асмом и Си одинаково. А вот по поводу точности --- готов поспорить.

Вам ведь известно, что такое токоизмерительные клещи!!! Так вот, точность измерения тока 2%. Диапазон - 600А. При этом они сами калибруются (без всяких там подстроечников), и тоже обрабатывают кучу информации, TRMS, есть ЖКИ. Код на Си занимает 12 КБ!!!!!! Время от начала разработки до полного завершения прибора -- 3мес. Так на асме быстрее будет?

Просто я вот к чему веду. При переходе к созданию все более и более серьезных проектов, переход с асма на Си просто необходим.

Вы хотите сказать, что точность аппаратного АЦП контроллера, которым по всей видимости Вы измеряете Ваш ток зависит от Вашей программы, или еще хуже от языка, на котором она написана?????

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this