Перейти к содержанию
    

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

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

 

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

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

 

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

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

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

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Настоящие программисты пишут на Фортране на любом языке" :lol:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я уже мигаю светодиодами

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не представляю, сколько бы я писал это на ассемблере с нуля.

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное я чего то недопонимаю

 

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

 

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

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

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

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

 

 

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

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

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

 

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

 

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

Изменено пользователем Kalina

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...