Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор пути ... Assembler или C ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Страницы: 1, 2
Kalina
Всем добрый день!

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

1. почему люди переходят с assemblera на C?
2. какие плюсы и минусы языка С?
3. где без языка С нельзя обойтись?
4. лично ваше мнение относительно обоих? (ненормативная лексика принимается:-)

Всем, кто отзовется, заранее благодарен!
zltigo
Цитата(Kalina @ Mar 3 2008, 22:02) *

Для начала, дабы не раздувать в 999 раз флейм пройдитесь поиском по форуму.
Vladimir_J
Добрейшее время суток!!!
В свое время я тоже сильно раздумывал переходить или не переходить на Си, когда попробывал оценил smile.gif
Представте Вы ехали на мерседеце, и Вам говорит содись на велосипед мол это класно свежий воздух, здоровье, а мерседец это же конфортнее. (Этой фразой можно объяснить разницу между ASM и Си).

А так просто надо попробывать, и Вы ивидите в чем разница.

А Вам удачи в Ваших начинаниях.
С Уважением, Владимир.
SasaVitebsk
Вот чисто практические данные.
http://electronix.ru/forum/index.php?showtopic=43498 к примеру.
Omen_13
Очередная религиозная война назревает? smile3009.gif maniac.gif

На асме можно делать простые конструкции с предельным быстродействием за счёт использования особенностей архитектуры и команд, на С математика и навороченные платформонезависимые алгоритмы.
В теории конечно можете написать для себя математику с точкой на асме, но лучше потратить это время на освоение С...
Моё мнение - надо знать оба языка. ИМХО!!!


-----------
bb-offtopic.gif Уважаемый zltigo, в этой войне на меня не расчитывайте! biggrin.gif
zltigo
Цитата(Omen_13 @ Mar 4 2008, 00:03) *
Очередная религиозная война назревает? smile3009.gif maniac.gif

Только попробуйте! smile.gif
Omen_13
zltigo, см. выше!

Добавлю еще:
Асм как язык привязан к семействам - насколько я помню 51, АВР и ПИКи по командам отличаются довольно капитально, т.е. при смене практически всё придётся писать с 0. Зная только асм вы принудительно ограничиваете себе "область применения". При написании проги больше 4 кБ надо очень постараться не наклепать ошибок.
С другой стороны при использовании С вы вносите элемент неизвестности - кто знает как компилятор разложит команды в машинный код и какие при этом могут возникнуть ошибки по вине разработчика компилятора (шашкой махать не буду - об этом уже говорили/спорили).
Изучить аппаратные особенности применяемого процессора всё равно придётся в не зависимости от того какой язык С или асм
Дон Амброзио
ИМХО, ассемблер - это база, которую ДОСКОНАЛЬНО должен знать любой программист-эмбеддер, считающий себя профессионалом. Если человек "плавает" в ассемблере, то (ИМХО конечно) он и на СИ не сможет написать хорошую программу для Target MCU. Потому что в отличии от писателей программ для компов, которые (если они не пишут низкоуровневые драйвера) больше решают задачи по обработке информации разработчики программ для микроконтроллеров рещают задачи управления железом и обработки сигналов в реальном времени

ИМХО, сначала нужно досконально изучить архитектуру и АСМ ( который является отражением архитектуры MCU ), а уж потом пиши на чём хочешь: хоть на СИ, хоть на Паскале, хоть на Басике...Хоть на Смаллталке наконец
Дон Амброзио
Цитата(Omen_13 @ Mar 4 2008, 00:29) *
насколько я помню 51, АВР и ПИКи по командам отличаются довольно капитально, т.е. при смене практически всё придётся писать с 0.

Из опыта. А если проект написан на СИ разве не придётся всё писать практически с нуля?

Если Вы не пишите конечно какую-нибудь универсальную RTOS на продажу в которой априори закладывается возможность портирования на несколько архитектур.

А так. По-большому счёту большинтсво программ для MCU - это программы уникального применения, предназначенные для конкретного MCU в конкретном девайсе.

А насчёт переписывания с нуля? Я за много лет работы выработал целый ряд принципов организации программы, которые определяют какой набор мудулей должен быть в программе и как организовать алгоритм. А зная их написать код на любом языке - это плёвое дело. Я, например, легко портировал свою RTOS на АСМ-е с 51-й архитектуры под AVR. Разработка RTOS под 51 -ю архитектуру у меня заняла более полгода. А переписывание её под AVR заняло чуть больше недели....

Так что не с нуля
rv3dll(lex)
Си так и не смог выучить - не дано наверное



но что точно что если проект в упор работает на ассемблере (было много случаев, когда считал команды пропробывал несколько вариантов
это было в системе некоторой обработки, где 256 раз в секунду приходили новые данные с 12 каналов и в соответствии с частотой уже стоявшего контроллера на обработку можно было потратить 1100 циклов - меньше чем 100 циклов на канал) а там надо было умножать делить искать экстреммумы сравнивать с порогом сортировать расчитывать порог по шуму складывать в буфер и передавать по последовательной линии
это уже экстримальное программирование но параллельно каждой ассемблерной команде стояла её длительность и количество циклов от начала

на си этого сделать нельзя, задачи подобного рода не решаемы
608
Цитата(Kalina @ Mar 3 2008, 23:02) *
Всем, кто отзовется, заранее благодарен!

Си конечно лучше, но Ваша проблема, видимо, это отсутствие хорошего компилятора Си и еще, наверное, некому ввести в курс дела.
Рекомендую IAR (для AVR) и Keil (для 51), все это есть с лечениями. Что характерно, просматривая листинги асм-кода после компиляции, Вы еще лучше начнете писать программы на ассемблере. А также делать асм-вставки в Си-коды, в критичных местах. Но это уже высший класс, для этого надо много стараться и ковыряться в интернете, а также надо найти рядом помощника, чтобы подсказал.
ReAl
Цитата(rv3dll(lex) @ Mar 4 2008, 08:42) *
на си этого сделать нельзя, задачи подобного рода не решаемы
Ну, это и на тираж предполагаемый смотреть надо...
Если ожидаемый тираж пусть 1000 штук, зарплата программиста пусть 1000 баксов, протолчётся на асме считая такты он пусть лишний месяц - итого можно спокойно брать процессор на 2 бакса дороже и спокойно писать на С. Это будет как минимум не убыточно (затраты на программиста больше получаемой им зарплаты, надо ещё о сопровождении подумать).
Числа можно двигать туда-сюда и думать, стоит ли оно того.
А также не мешает проштудировать "историю одного байта" и подумать о том, что время сейчас несколько другое, если вдруг плнадобится не 256, а 320 раз в секунду или не с 12 а с 16 каналов - разрабатывать всё заново?

Конечно, есть крайние случаи - типа такого: тираж предполагается 10000/месяц, среднерыночная цена изделия так мала, что каждый цент на счету, из соображений потребления и быстродействия приходится каждый такт экономить - и это всё одновремённо.
Но что-то мне говорит, что в большинстве случаев это не так, на асме пишется по привычке/из любвы к искусству и можно или всё написать на С, или только критические 5% написать на асме.
Baser
У вас в корне неправильное понимание вопроса: "Выбор пути ... Assembler или C ?".

Это неправильно, потому что правильно: "Выбор пути: Assembler ==> Assembler и C ==> Assembler и C++ ==> То_Что_Дальше_Придумают" biggrin.gif

То, что начали с ассма, хорошо. Без его знания правильно писать на Си будет трудно: в листинг на ассме частенько заглядывать приходится. А дальше - исходя из задачи по быстродействию: укладывается программа на Си по быстродействию в нужные рамки - тогда чистый C/C++. Не укладывается - критические секции на ассме. Вот и вся философия пути smile.gif
Dog Pawlowa
Цитата(Baser @ Mar 4 2008, 11:13) *
Вот и вся философия пути smile.gif

Да и философии тут нет никакой.
Один только момент - если вовремя не задуматься, как по другому можно сделать проект - значит потерять перспективу.
rv3dll(lex)
Цитата(ReAl @ Mar 4 2008, 10:10) *
Ну, это и на тираж предполагаемый смотреть надо...
Если ожидаемый тираж пусть 1000 штук, зарплата программиста пусть 1000 баксов, протолчётся на асме считая такты он пусть лишний месяц - итого можно спокойно брать процессор на 2 бакса дороже и спокойно писать на С. Это будет как минимум не убыточно (затраты на программиста больше получаемой им зарплаты, надо ещё о сопровождении подумать).
Числа можно двигать туда-сюда и думать, стоит ли оно того.
А также не мешает проштудировать "историю одного байта" и подумать о том, что время сейчас несколько другое, если вдруг плнадобится не 256, а 320 раз в секунду или не с 12 а с 16 каналов - разрабатывать всё заново?

Конечно, есть крайние случаи - типа такого: тираж предполагается 10000/месяц, среднерыночная цена изделия так мала, что каждый цент на счету, из соображений потребления и быстродействия приходится каждый такт экономить - и это всё одновремённо.
Но что-то мне говорит, что в большинстве случаев это не так, на асме пишется по привычке/из любвы к искусству и можно или всё написать на С, или только критические 5% написать на асме.


тираж был единичный - 3 экземпляра - на самом деле это НИР
другой процессор поставить и изготовить новый образец никто бы не дал - ВПК блин - он наверное там до сих пор стоит)))

, да и стоимость его была не на 2 доллара больше речь о TMS2406 и TMS2812 5 лет назад они только появились.

скорость написания - согласен
знаковая арифметика не беспокоит
функций навалом
можно быстро написать работающий проект не беспокоясь о забытых переменных и LDP
tntsasha
Сначала писала на асме. После того как пробывал на С, про асм даже не вспоминаю. Действительно, как с велосипеда на мерс.
researcher
По теме:
http://ru.wikipedia.org/wiki/Си_(язык_программирования)
http://ru.wikipedia.org/wiki/Ассемблер

1. почему люди переходят с assemblera на C?
>>> Не знают ASM, задача использовать только Си, большой проект (в плане рутины),
причин может быть много smile.gif .

2. какие плюсы и минусы языка С?
>>> Зависит от задачи (так сразу сказать нельзя).

3. где без языка С нельзя обойтись?
>>> Си – это фундамент. Разве можно что-то серьёзное построить без фундамента?

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

ЗЫ
Тут многие сравнивают мерседес с велосипедом. Но на велосипеде можно проехать там, где мерседесу и не снилась даже.
Carbon
1. Си очень сильно экономит время разработки, экономит время затрачиваемое на поддержку старых проектов, многие написанные вещи (интерфейсы, протоколы обмена и др.) легко и быстро переносимы с контроллера на контроллер и даже на персоналку и обратно. На Си реально писать даже для очень мелких контроллеров без RAM или с микроскопическим RAM в 64байта.

2. Плюсы:
+легко читаемый и изменяемый исходник,
+безопасность (ограничение области видимости для переменных, контроль синтаксиса языка и соответствия типов данных со стороны компилятора),
+легкость работы со структурированными данными (с точностью до бита),
+динамическое использование памяти под переменные,
+битовые и низкоуровневые операции,
+наличие стандартного набора библиотек,
+можно в текст исходника на Си включать кусок на ассемблере,
+много чего ещё... smile.gif
Минусы:
-сложность изучения некоторых вещей - арифметика указателей, выделение памяти,
-естесственно, что в критически важных по скорости и по объему кода вещах Си не уместен,
-компиляторы Си обычно стоят денег.

3. Без Си кодирование навароченных и длинных алгоритмов займет много времени, потеря которого не оправдывается когда мегагерц и памяти много. Если мечтаете в будущем произвольно менять мк.платформы, то нарабатывайте для своих задач исходники на Си.
zltigo
Цитата(researcher @ Mar 4 2008, 15:00) *
Тут многие сравнивают мерседес с велосипедом. Но на велосипеде можно проехать там, где мерседесу и не снилась даже.

Впомнился анекдот времен освоения выпуска "Жигулей". Концовка такая - "и чего только не придумают эти русские, что-бы не строить хороших дорог".
rv3dll(lex)
тойота - управляй мечтой
жигули не ссы доедем)))))

я наверное сильно отстал от жезни
раньше систы ругались, что для работы с отдельными битами если контроллер их поддерживает - приходилось работать с масками читать потом записывать или вставки на ассемблере - сейчас изменилась ситуация?
Сергей Борщ
Цитата(rv3dll(lex) @ Mar 4 2008, 18:43) *
раньше систы ругались, что для работы с отдельными битами если контроллер их поддерживает - приходилось работать с масками читать потом записывать или вставки на ассемблере - сейчас изменилась ситуация?
Сейчас они изучили препроцессор - вся морока раз и навсегда прячется в десятке макросов. Да и уровень оптимизаторов не стоит на месте: вон сколько криков "верните мне мой код!" ;)
Kalina
Да, вы меня убедили, что всё-таки С изучать прийдётся. Видно я правильно сделал, то начал с asm@, теперь его нужно укрепить, чтоб навсегда остался в памяти, как азбука, а вот тогда и начинать вникать в сишку. Проблемой в изучении С я пока вижу различного вида "глюки" и "приколы" , которые встречались при начале изучения контроллеров и по мере уменьшались. Хорошо, что алгоритм работы моего проэкта пока не оперирует большими объёмами данных, а требуют временной точности, вплоть до тактов.
Насколько я понимаю прогресс двигает нас вперёд 07.gif (частоты, разрядность, объёмы), как вы думаете в будующем останется место простым 8 разрядным контроллерам? Или они полностью "исчезнут" crying.gif , а для работы с тем, что появится, без языка высокого уровня не обойтись?
Omen_13
8 битники останутся, только их ниша может сократиться - тяжелые процы станут дешевле.
vshemm
У Си есть еще один большой плюс - портируемость . Особенно это заметно в тех проектах, где математики много.
К тому же, использование Си совсем не означает отказ от ассемблера.
Вывод: нужно уметь пользоваться и тем и тем и знать плюсы-минусы каждого smile.gif
singlskv
Цитата(Kalina @ Mar 4 2008, 20:27) *
как вы думаете в будующем останется место простым 8 разрядным контроллерам? Или они полностью "исчезнут" crying.gif ,
что бы вам не говорили местные модераторы smile.gif
но я пока еще не видел 32бит контроллеров с 6,8,14,20,28 ногами smile.gif

когда появятся, возможно я полностью перейду на 32бит, хотя еще желательно, 20ма току не только
с 4 ног... а с любых... smile.gif

а насчет C vs Asm, Asm нужно просто знать, а писать можно на любом языке, но
лучше конечно на С...
DimaD
Kalina привет!!! Надо знать и Си, и асм. Проще тогда будет переходить от одного типа контроллеров к другому (я имею ввиду AVR и MSP). Си это скорость написания программ, но больше по обьему кода. В конце концов, можно делать вставки асма в Си. Я сегодня уделю время для Си. Попробую кое-что. Пиши в аську! beer.gif
ReAl
Цитата(rv3dll(lex) @ Mar 4 2008, 10:54) *
да и стоимость его была не на 2 доллара больше речь о TMS2406 и TMS2812 5 лет назад они только появились.
Ну так я же и говорю, что числа можно двигать. Тираж не 1000 шт, а 300шт - уже $6 разницы незаметно, тираж 100шт - уже $20 незаметно...
Просто далеко не всегда это понимает руководство. А иногда и не только руководство. Я сам иногда "да чё там, ну назачем для такой прикидки ставить явно в 4 раза превышащий по ресурсам кристалл", а потом ну не так, чтобы мучаюсь, но неудобство испытываю smile.gif.


Цитата(singlskv @ Mar 4 2008, 21:22) *
что бы вам не говорили местные модераторы smile.gif
но я пока еще не видел 32бит контроллеров с 6,8,14,20,28 ногами smile.gif

Luminary Micro LM3S101/102 - 28 ног ARM,

LM3S101-IRN20 ARM, 20MHz, 8kB flash, 2kB RAM, 2x32-bit Timers, RTC, 1xCCP, 1xUART, 1xSSI/SPI, 2xCMP, 2..18 GPIO, -40..+85C, 28-pin SOIC

В Киеве (Элтис) ~11грн (5.05грн/$) за штуку, <10грн мелкий опт.

По поводу велосипед vs мерседес.
Ну, С как раз не мерседес. Мерседесы где-то там около питона. С - это склад всякого барахла, из которого можно при нужде по-быстрому слепить то фордик, то "Ниву" какую (уже можно найти на осенних сельских дорогах места, где велосипед и не пройдёт), то танк небольшой. И ехать по асфальту на форде быстрее велосипеда, и по наглухо заросшему кустарником склону (там, где велосипед едет верхом на велосипедисте - с асмом часто такая аналогия бывает) проехать на танке и ещё и после себя дорогу оставить, по которой в сухую погоду и велосипедисты поедут (это я об отладить быстро алгоритм на С, а при нужде выписать критические части на асме).
Конечно, железа ;) это всё потребует больше, чем велосипед.

Итого я на велосипеде катаюсь (в обеих обсуждаемых смыслах smile.gif ) для удовольствия и чтобы тонус не терять.
А на работу... На метро smile.gif, в это время машины в пробках местами двигаются медленнее пешехода.
Это если бы я катался пусть не на уровне участника тур-де-Франс, но где-то близко - то я бы велосипедом зарабатывал, а для развлечения что-то другое придумал бы smile.gif
Kalina
Цитата(DimaD @ Mar 5 2008, 10:26) *
Проще тогда будет переходить от одного типа контроллеров к другому (я имею ввиду AVR и MSP).


Добрый день, DimaD! smile.gif

А вы бы не могли объяснить подробнее, что значит проще ? Это означает, что можно будет не влазить в дебри MSP, а поверхностно его изучить? Или я чего-то не так понял. 07.gif
DimaD
Приведу пример на тех двух программистах, которые выполняют нам некоторые заказы. Один из них -- схемотехник (очень классный), второй -- программист (еще лучше). Зная Си, им ничего не стоит написать программу (очень быстро) либо для MSP430F427, либо для ATtiny15. Конкретный контроллер выбирают из нужд прибора. Не влазя в дебри, они используют AVR и MSP. Асемблер для этих контроллеров сильно отличается. Вот так!
Сергей Борщ
Цитата(Kalina @ Mar 5 2008, 10:10) *
Это означает, что можно будет не влазить в дебри MSP, а поверхностно его изучить? Или я чего-то не так понял. 07.gif
Скажем так - при освоении последних нескольких семейств (x51, HC12, ARM7, PIC18) программа начинала делать осмысленные действия уже через полчаса после File->New (примерно столько нужно на прочтение документации по нужному периферийному модулю, например - портам, если хотим мигать светодиодом). А понимать, что написано на ассемблере в листинге я начал через несколько недель.
Точнее так: мой первый процессор был PIC16, для него я писал только на ассемблере. Вторым был x51. приступая к работе с ним я узнал, что для микроконтроллеров бывает С. С тех пор ассемблер для всех остальных процессоров я изучаю по листингам компиляторов. Последний раз для x51 писал 9, а для HC12 - 6 лет назад. Их ассемблер давно забыл. А исходники для них на С до сих пор читаю свободно.
upc2
Цитата(Kalina @ Mar 3 2008, 22:02) *
Всем добрый день!

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

1. почему люди переходят с assemblera на C?
2. какие плюсы и минусы языка С?
3. где без языка С нельзя обойтись?
4. лично ваше мнение относительно обоих? (ненормативная лексика принимается:-)

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


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

Программировать контроллеры Siemens можно на 9 языках. Вот здесь бы не запутаться.
Kalina
Цитата(Сергей Борщ @ Mar 5 2008, 13:19) *
осмысленные действия уже через полчаса после File->New (примерно столько нужно на прочтение документации по нужному периферийному модулю, например - портам, если хотим мигать светодиодом).


Значит при переходи с одного семейства к другому, при использовании С, минимум необходимо будет знать основые параметры, указаные на первой странице даташита,(по ним прикидывать возможность использования данного контроллера в проэкте), а при необходимости, если ничего не получается smile3046.gif , лезть глубже?
DimaD
Kalin@ смелее переходите на Си. Я уже мигаю светодиодами. Скачай WinAVR для Си, он поддерживается в AVRStudio последней версии.
Сергей Борщ
Цитата(Kalina @ Mar 5 2008, 13:00) *
Значит при переходи с одного семейства к другому, при использовании С, минимум необходимо будет знать основые параметры, указаные на первой странице даташита,
Ну не только на первой странице, а хотя бы прочитать - какие регистры есть у интересующего нас периферийного модуля, что туда надо записать и что оттуда можно прочитать. В остальном все верно.

Цитата(upc2 @ Mar 5 2008, 12:46) *
Программировать контроллеры Siemens можно на 9 языках. Вот здесь бы не запутаться.
"Настоящие программисты пишут на Фортране на любом языке" lol.gif
zltigo
Цитата(Сергей Борщ @ Mar 5 2008, 15:05) *
"Настоящие программисты пишут на Фортране на любом языке" lol.gif

Перефразируя эту классическую фразу - "Настоящие эмбеддеры пишут на ASM на любом языке"
и это к сожалению совсем не весело sad.gif. По нынешним временам я бы предпочел работать с человеком который начинал с высокоуровневых языков. Ну а ASM уже потом от уровня "читаю и перевожу со словарем" можно при необходимости продвигать.
upc2
Цитата(zltigo @ Mar 5 2008, 15:32) *
Перефразируя эту классическую фразу - "Настоящие эмбеддеры пишут на ASM на любом языке"
и это к сожалению совсем не весело sad.gif. По нынешним временам я бы предпочел работать с человеком который начинал с высокоуровневых языков. Ну а ASM уже потом от уровня "читаю и перевожу со словарем" можно при необходимости продвигать.


10-я возможность Сиеменсов утилита Prodave предоставляющая все возможности управления контроллером для любого высокоуровнего языка в DLL-библиотеках.
Kalina
Цитата(DimaD @ Mar 5 2008, 14:24) *
Я уже мигаю светодиодами

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


Вы абсолютно правы. Проэкт, о котором я писал, сделали два человека, я и мой друг. Мы разделили его на две части. На это всё ушло около 6 месяцев. Самое трудное было при совмещении блоков. Мы уйму времени тратили для того, чтобы устранять "глюки". Приходилось отслеживать каждый регистр, даже байты в ОЗУ пересекались. Но теперь я для себе вынес один урок - если алгоритм составлен правильно, программа ВНИМАТЕЛЬНО!!!! написана, значит она будет работать с первой компиляции. Или, как говорят, правильно собраная схема в настройке не нуждается.
С одной стороны на С возможно писать было бы быстрее, легче( если бы я её знал smile.gif ) но я почему-то ИМХО я бы не добился той точности и быстродействия, что требовалась.
zltigo
Цитата(Kalina @ Mar 5 2008, 18:14) *
Но сама фишка заключается в том, чтобы уместить всё это в 2 кБ!!!!!!!!!!! wacko.gif

Нет, "сама фишка" в сравнении стомости чипа сего девайса со стоимостью автомобиля. И стоимостью шести месяцев работы двух человек.
singlskv
Цитата(Kalina @ Mar 5 2008, 20:05) *
Проэкт, о котором я писал, сделали два человека, я и мой друг. Мы разделили его на две части. На это всё ушло около 6 месяцев.

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

то есть, примерно 250 человекодней
2Кб <=> =<1024 команды на асм

то есть вы писали не более 4асемблерных команд за день ?
Kalina
Цитата(singlskv @ Mar 5 2008, 21:39) *
Наверное я чего то недопонимаю


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

1. Разработка, которой мы занимаемся, первая в нашей практике, мы недавно только дипломы защитили smile.gif. Сами же выступали в роли ведущих, так как начальника, который бы мог нас направить или нам помочь у нас не было.
2. Всё что нам предоставили на рабочем месте - это один компьютер на двоих, STK-500, осцилограф, паяльник и доступ в интернет.
3. По образованию мы радиотехники, и такая вещь как программирование МК было всего лишь нашим хобби в институте. Зная архитектуру атмела, его систему команд и ассемблер сложность состояла в написании алгоритмов и понимании функционирования всего устройства.
4. Эти 6 месяцев для нас скорее всего были временем показать, что мы справимся с разработкой, короче как испытательный срок !


Цитата(singlskv @ Mar 5 2008, 21:39) *
то есть, примерно 250 человекодней
2Кб <=> =<1024 команды на асм
то есть вы писали не более 4асемблерных команд за день ?


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

P.S. ИМХО есть ещё одно преимущество С, для неё написано много библиотек, или просто я плохо искал *.аsm ?
singlskv
Цитата(Kalina @ Mar 5 2008, 22:06) *
Сейчас я вам объясню, и вам всё станет понятно.
1. Разработка, которой мы занимаемся, первая в нашей практике, мы недавно только дипломы защитили smile.gif. Сами же выступали в роли ведущих, так как начальника, который бы мог нас направить или нам помочь у нас не было.
............................
Ну, тогда все объяснимо и понятно, просто у Вас прозвучала фраза
"а слабо ли уместить в 2Кб......." , которая не очень вяжется с Вашим нынешним объяснением...
Учитывая Ваше объяснение, могу предположить что и на С можно влезть в те же 2К.
Цитата
5. Интересно, а сами вы пользуетесь таким методом подсчёта?
Нет конечно, но просто есть какие то разумные рамки,
а те сроки которые указали Вы по крайней мере на порядок отличаются от реальных.
Цитата
P.S. ИМХО есть ещё одно преимущество С, для неё написано много библиотек, или просто я плохо искал *.аsm ?
для асм есть много чего, только в большенстве случаев это просто не оправдано,
хотя конечно есть некоторый процент задач где без асм никуда...
DimaD
Цитата(Kalina @ Mar 5 2008, 19:05) *
С одной стороны на С возможно писать было бы быстрее, легче( если бы я её знал smile.gif ) но я почему-то ИМХО я бы не добился той точности и быстродействия, что требовалась.


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

Вы хотите сказать, что точность аппаратного АЦП контроллера, которым по всей видимости Вы измеряете Ваш ток зависит от Вашей программы, или еще хуже от языка, на котором она написана?????
Kalina
Цитата(DimaD @ Mar 6 2008, 09:28) *
по поводу точности --- готов поспорить.


Я бы поспорил, но не на что biggrin.gif !!!! Давай лучше обсудим: под точностью измерения скорости я подразумевал точность измерения временного интервала (измеряю же частоту). Так вот, мне необходимо измерять и выводить на ЖКИ скорость с точностью 0,1 км/ч. На скорости 220 км/ч (что соответствует частоте сигнала 421,5 Гц), изменение периода сигнала приблизительно на 1,2 мкс вызывает изменение скорости на 0,1 км/ч.

Но самое трудное организовать измерение с такой точностью в real-time параллельно с такими процессами:
1. Дижением стрелки прибора, используя шаговый двигатель в режиме микрошаге.
2. Организовать вывод на ЖКИ
3. Вести учёт аварийных ситуаций.
4. Вести учёт пройденого расстояния.

Задаю вопрос всем, кто работал с подобными вещами, возможно ли это реализовать на С?
DimaD
Давайте обсудим эту тему и многое другое за beer.gif !!!
А то еще поссоримся.
Kalina
Цитата(DimaD @ Mar 6 2008, 11:38) *
Давайте обсудим эту тему и многое другое за beer.gif !!!


Давай обсудим эту тему здесь, а вот многое другое 07.gif , кончено, можна и за пивом beer.gif !

Цитата(DimaD @ Mar 6 2008, 11:38) *
А то еще поссоримся.


smile3009.gif !!!! - 01.gif
rv3dll(lex)
БЛИН если на то пошло всю память 51 контроллера можно забить одинаковой командой инвертировать бит порта - один в том числе написать этот код и в векторах прерываний в смысле в месте которое для них отведено

при этом на обычном 51 с кварцем 12 мегагерц для ровного счёта с выхода этого порта пойдёт 500 килогерц, что в принципе невозможно сделать на си

я даже не уверен что с той же скоростью на си в смысле будет работать

метка "инвертировать бит"
джамп на метка, написанное на асме

извините не писал для 51 больше 5 лет - не помню команды
zltigo
Цитата(Kalina @ Mar 6 2008, 11:22) *
Но самое трудное организовать измерение с такой точностью в real-time параллельно с такими процессами

У как все запущено sad.gif. Используется аппаратный таймер который за время интегрирования в десятки - сотни миллисекунд считает имульсы. Количество последовательных интервалов интегрирования можно менять в заисимости от скорости для достижения нужной точности. Все оставшееся время можно играть вальсы Шопена.... В чем проблема? В обработке прерываний частотой не более, чем 421,5 Hz?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.