C или ASM

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Дон Амброзио

Сообщение Дон Амброзио »

Барсик писал(а):Но черз несколько лет могут появиться другие МК, с другим АСМ.
Через несколько лет уже и СИ не будет - будет какой-нибудь другой язык.. И нахрена тогда учить СИ?

Барсик писал(а):Вы меняете место работы, и Вам говорят: "Никаких AVP! только PIC!"

otshelnik86 писал(а):Для того, чтобы что-то научиться делать, надо сначала что-то досконально выучить, потом все легко и пойдет. Принципы остаются одни и те же, теорема Котельникова как была разработана в 30-ые годы, так и по сей день остается основопологающей в радиотехнике. Аналогично, разобрав толком один МК можно разобрать и другой и ПЛИС и более сложные архитектуры процессоров и т.п. Также и с Ассемблером - выучив один, пойдут и все другие. С другими языками прогр-ия ситуация такая же. Только выучить надо нормально, а не поднять вершки...


Барсик писал(а): И если Вы пишете на языке высокого уровня, то у Вас будет меньше трудностей, а радости больше.

На каком-бы Вы языке не писали свою программу для микроконтроллера Вам не удасться избежать этапа изучения архитектуры этого микрокотроллера. Так что .... Сами вообщем понимаете...
Дон Амброзио

Сообщение Дон Амброзио »

Барсик писал(а):И если Вы пишете на языке высокого уровня, то у Вас будет меньше трудностей, а радости больше.


Всё с точностью до наоборот

Все эмбедерские форумы забиты сообщениями типа "А как мне ЭТО сделать на СИ" при проблемах уровня "моргания светодиодом".

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

http://electronix.ru/forum/index.php?showtopic=43220

Недавно столкнулся с нонсенсом... У нас парнишка на работе написал прогу на СИ для микроконтроллера.. Она стала глючить у заказчика...
Ну его вызывает наш директор "на ковёр".

А дальше...Держитесь за стулья чтобы не упасть..

На вопрос, почему твоя программа глючит у заказчика, а у других нет. Он ответил:"Ну и что.. Зато она написана на СИ, а не на каком-то там ассемблере"
Аватара пользователя
dx40
Нашел транзистор. Понюхал.
Сообщения: 182
Зарегистрирован: Вт июл 11, 2006 12:39:16
Откуда: Москва
Контактная информация:

Сообщение dx40 »

Любители ассемблера несут какую-то чушь.
Си - гениальнейшее изобретение. Не сам язык, сам язык мне не особо нравится, а то, что исходник, написанный под, допустим, винды без переделок может работать под авр. Пример.
Мне надо было реализовать передачу данных с избыточным кодированием. Порылся в нете, нашел исходник, проверил его работу под VC, подключил в программу - и пожалуйста, все работает. Потрачено времени 3 часа. А теперь представим, что то же самое надо реализовать на ассемблере...
Или еще пример, есть некая программа, написанная под авр, большая и хитрая. При добавлении функционала перестало хватать ресурсов. Переносим на другой кристалл, ARM7. Затрат времени - неделя, учитывая время освоения кристалла. А теперь представим ту же задачу, но на ассемблере. Да и вообще - программировать на асме под АРМ - как-то не правильно.
Конечно, если речь идет о дерганье ножкой с частотой в пол тактовой - без ассемблера обойтись сложно. Но часто ли возникают такие задачи? Да и решаются они обычно или аппаратной периферией или ПЛИСкой.
Хотя ассемблерные вставки местами нужны, но именно _вставки, а не вся программа на асме.

По поводу досконального изучения.
Ну ладно, изучить какую-нибудь мегу досконально можно - всего-то 300 страниц.
Хотя зачем - непонятно. Я, вот, ни разу не пользовался SPI, Analog Comparator, RTC, JTAG - соответственно не изучал их, а только нашел в даташите как их выключить нахрен, чтоб не мешались. Надо будет - изучу. А вот как уважаемые любители ассемблера будут изучать какой-нибудь AT91SAM7S c 700 страничным мануалом плюс документацию на сам АРМ7 и еще осваивать ассемблер для двух наборов команд. А еще есть АРМ11, или тот же Intel PXA.
Конечно, изучить возможности и архитектуру надо, но зачем заранее разбираться с каким-нибудь SSC, который в ближайший пару лет мне точно не понадобится.
Дон Амброзио

Сообщение Дон Амброзио »

dx40 писал(а):Хотя ассемблерные вставки местами нужны, но именно _вставки, а не вся программа на асме.
Ага.Ага.. Только как ты сделаешь эти вставки если не бельмеса не разбираешься в ассемблере?

dx40 писал(а):По поводу досконального изучения.
Ну ладно, изучить какую-нибудь мегу досконально можно - всего-то 300 страниц.
Хотя зачем - непонятно. Я, вот, ни разу не пользовался SPI, Analog Comparator, RTC, JTAG - соответственно не изучал их, а только нашел в даташите как их выключить нахрен, чтоб не мешались. Надо будет - изучу. А вот как уважаемые любители ассемблера будут изучать какой-нибудь AT91SAM7S c 700 страничным мануалом плюс документацию на сам АРМ7 и еще осваивать ассемблер для двух наборов команд. А еще есть АРМ11, или тот же Intel PXA.
Конечно, изучить возможности и архитектуру надо, но зачем заранее разбираться с каким-нибудь SSC, который в ближайший пару лет мне точно не понадобится.


Ага..Ага... Я тоже 6 лет назад когда начинал работу с AVR думал: нахрен мне изучать АЦП если у меня АЦП в 103-й меге вообще не используется... Ну и не подключил вывод AVCC к питанию. Типа думал он же только для АЦП нужен.. И сразу же граблями по лбу - оказывается этим напряжением весь порт запитыввался, в котором выводы можно использовать ещё и как каналы АЦП..
Смысл в том, что если что-то не изучать - неизвестно как оно аукнется..Изучать надо всё... Даже те модули, которые Вы не используете...Хотя бы "по диагонали". Потому что неизвестно как "аукнется" другим модулям от того, что Вы отключили тот, который Вы не используете.
Дон Амброзио

Сообщение Дон Амброзио »

dx40 писал(а):А еще есть АРМ11, или тот же Intel PXA.

Здесь уже выглядит обоснованным применение СИ.
Но когда люди пишут на СИ для тинек, для ATmega8,Atmega8515. Пиков..Это я считаю маразм

Но я хочу сказать о том, что методически неправильно, когда человек в жизни не видел микроконтроллера сразу же первый свой проект на Тиньке или Марсе уже начинает писать на СИ.. Надо на начальном этапе почуствовать, так сказать, живое железо, как оно устроено, как работает.. Какими реальными командами управляется... А уж потом подниматься на всё более и более высокие уровни абстрагирования от железа...


А когда человек абсолютно не разбираясь в "железе" уже с первых проектов начинает от него абстрагироваться, то, ИМХО, этот специалист представляет собой великана на соломенных ногах.. Потому что у него нет фундаментальных знаний и понимания как устроено и работает "железо"


Почему например интегралам человека начинают учить аж через 10 лет изучения математики? Ведь в приниципе можно научить вычислять интегралы в течение месяца человека который даже не знает сколько будет 2x2 и который вообще не изучал математику в школе.. Почему сразу не преподают интегралы? А?
Аватара пользователя
otshelnik86
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Сб мар 01, 2008 01:16:01
Контактная информация:

Сообщение otshelnik86 »

Дон Амброзио писал(а):
dx40 писал(а):Но я хочу сказать о том, что методически неправильно, когда человек в жизни не видел микроконтроллера сразу же первый свой проект на Тиньке или Марсе уже начинает писать на СИ.. Надо на начальном этапе почуствовать, так сказать, живое железо, как оно устроено, как работает.. Какими реальными командами управляется... А уж потом подниматься на всё более и более высокие уровни абстрагирования от железа...


Золотые слова. Ведь первоначальная цель-создать устройство на ЖЕЛЕЗЕ, а не чисто программный продукт. Работа идет с элетроникой, а не с компом, поэтому ПОЛНОСТЬЮ зная как будет работать МК, можно избежать кучи ошибок.
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

Товарищи вам самим то не смешно :)))
Вы вообще значение свова язык смотрели в толковом словаре?
В данном случае ЯЗЫК ПРОГРАММИРОВАНИЯ это лишь способ донести информацию, что нам нужно от МК. Все равно что говорить мол по англицки включено - ON всего 2 буквы и значит он круче.
Бред сплошной.
Вы не видели какие проекты и для каких ответственных узлов на Си написаны, все ваши доводы Дон Амброзио тут же рассыпались бы. Я очень часто такие проекты вижу 8)
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
ИРБИС
Держит паяльник хвостом
Сообщения: 978
Зарегистрирован: Пн ноя 27, 2006 07:52:01
Контактная информация:

Сообщение ИРБИС »

moLCHec писал(а):Товарищи вам самим то не смешно :)))
Грешно смеятся над Бурридановыми ослами, подыхающими с голоду посреди корма, в то время как мало-мальски нормальный голодный осёл молча уплетает обе охапки сена! :))) :))) :)))
Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Дон Амброзио писал(а):нахрен мне изучать АЦП если у меня АЦП в 103-й меге вообще не используется... Ну и не подключил вывод AVCC к питанию.


А логика то какая ? Что нельзя не изучив АЦП узнать для чего AVCC нужен ?

Я потому и советую в кратком курсе AVR новичкам брать в пример макетки известных производителей и БУДЕТ работать хорошо !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Дон Амброзио

Сообщение Дон Амброзио »

moLCHec писал(а):Товарищи вам самим то не смешно :)))
Вы вообще значение свова язык смотрели в толковом словаре?
В данном случае ЯЗЫК ПРОГРАММИРОВАНИЯ это лишь способ донести информацию, что нам нужно от МК. Все равно что говорить мол по англицки включено - ON всего 2 буквы и значит он круче.
Бред сплошной.

Вы плохо разбираетесь в языках программирования. "Крутость" ассемблера не в краткости написания его команд (что сомнительно - в СИ тоже команды короткие). Ассемблер это единственный язык который "понимает" микроконтроллер, поскольку команды ассемблера - есть не что иное как символическое название машинных команд. А ЯВУ типа СИ микроконтроллер не понимает и программу на СИ всё равно нужно "переводить" машинный язык(считай ассемблер).И каждая команда/оператор СИ может быть "переведён" в несколько команд на ассемблере


moLCHec писал(а):Бред сплошной.
....
Вы не видели какие проекты и для каких ответственных узлов на Си написаны, все ваши доводы Дон Амброзио тут же рассыпались бы. Я очень часто такие проекты вижу 8)


Программы для серьёзных проектов пишут не новички, которые впервые "увидели" микроконтроллер "вчера", а люди, которые знают не только СИ, но и прекрасно разбираются а ассемблере и архитектуре MCU ("собаку на нём съели"), которые разрабатывали программы не только на СИ, но и на ассемблере

Я говорю лишь о том, что маразм когда человеку, который делает свой первый проект - мигание свеиодиодом на ATtiny ниразу не видевшему микроконтроллер сразу советуют писать на СИ.

А то доходит до полного идиотизма: иногда на форумах встречаются такие вопросы, что хоть стой хоть падай. Например читал недавно, что один чел, который тоже начал изучение микроконтроллеров с написание программ на СИ, наивно считал, что UART - это такая функция в СИ, которая выводит сивол на экран ЖКИ... Пипец просто..

Или другой заявляет, что является крутым спецом по AVR и при этом выдаёт: какие ещё СТАРТ-биты в UART? Нет там таких
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Дон Амброзио писал(а):один чел, который тоже начал изучение микроконтроллеров с написание программ на СИ, наивно считал, что UART - это такая функция в СИ, которая выводит сивол на экран ЖКИ... Пипец просто..


А если бы он с АСМа начинал то не мог бы считать что это такой максрос ... ?

Я в даташите в описании UART не видел привязки к АСМ или Си ! Там просто описано как устроен UART и ВСЁ !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

tych писал(а):
Дон Амброзио писал(а):один чел, который тоже начал изучение микроконтроллеров с написание программ на СИ, наивно считал, что UART - это такая функция в СИ, которая выводит сивол на экран ЖКИ... Пипец просто..


А если бы он с АСМа начинал то не мог бы считать что это такой максрос ... ?

Я в даташите в описании UART не видел привязки к АСМ или Си ! Там просто описано как устроен UART и ВСЁ !
хто-то давеча про бисер говорил...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Дон Амброзио

Сообщение Дон Амброзио »

tych писал(а):А если бы он с АСМа начинал то не мог бы считать что это такой максрос ... ?
Я в даташите в описании UART не видел привязки к АСМ или Си ! Там просто описано как устроен UART и ВСЁ !

Дык в том-то всё и дело, что очень часто новички начинают изучать микроконтроллер не с изучения даташифта на него (типа, не барское это дело разбираться в ногах/регистрах MCU), а по СИ-исходникам.
Поэтому и появляются такие перлы, которые я привёл выше.

А вот в АСМ-е всё не так. Даже если ты начнёшь всё делать через задницу и изучать MCU не с прочтения даташифта, а с изучения исходников на АСМ-е, то ты всё равно увидишь целую цепочку действий, которые происходят в микроконтроллере в процессе появляния тествого сообщения на экране индикатора при нажатии кнопки.
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Дон Амброзио писал(а):Дык в том-то всё и дело, что очень часто новички начинают изучать микроконтроллер не с изучения даташифта на него (типа, не барское это дело разбираться в ногах/регистрах MCU), а по СИ-исходникам.

Поэтому и появляются такие перлы, которые я привёл выше.


А при обучении по АСМ исходникам такие перлы не возможны ?

Дон Амброзио писал(а):Даже если ты начнёшь с изучения исходников на АСМ-е, то ты всё равно увидишь целую цепочку действий, которые происходят в микроконтроллере в процессе появляния тествого сообщения на экране индикатора при нажатии кнопки.


И что мешает эту цепочку принять за UART и обозвать таковым если чел не знает что такое UART на самом деле ?
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Вон как професионалов разбирает !

http://electronix.ru/forum/index.php?ac ... 14&t=16503

Аж жуть ! :cry: :cry: :cry:
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

Дон Амброзио писал(а):...Но я хочу сказать о том, что методически неправильно, когда человек в жизни не видел микроконтроллера сразу же первый свой проект на Тиньке или Марсе уже начинает писать на СИ...

Я тот самый человек. Точнее, кот :)) , который никогда не видел микроконтроллера и сразу начал свой проект на ATtiny13 писать на "C".

Дон Амброзио писал(а):...Надо на начальном этапе почуствовать, так сказать, живое железо, как оно устроено, как работает.. Какими реальными командами управляется...

Да очень простыми командами управляется. Загрузил управляющие регистры значениями, которые указаны в data sheet, и вперёд!

И вообще, почему у ассемблерщиков в мозгах засела идиотская идея, что программирование на "C" напрочь отменяет чтение data sheet, и изучение АРХИТЕКТУРЫ микроконтроллера? Кто из "сишников" утверждал это? Необходимо изучение именно АРХИТЕКТУРЫ, а не набора ассемблерных команд.

Какая-то странная дискуссия получается. Ассемблерщики, которые сами на "C" ничего не написали, начинают объяснять сишникам, как плохо программировать на "C"! А сишники наоборот, на ассемблере писать пробовали, и поняли, что это геморрой. О чём и пытаются сказать высокому собранию.
Последний раз редактировалось Барсик Пт мар 14, 2008 15:57:08, всего редактировалось 2 раза.
Дон Амброзио

Сообщение Дон Амброзио »

Барсик писал(а):Я тот самый человек. Точнее, кот :)) , который никогда не видел микроконтроллера и сразу начал свой проект на ATtiny13 писать на "C"

А зачем на ATtiny СИ? :?
Это же не АРМ11...
Последний раз редактировалось Дон Амброзио Пт мар 14, 2008 16:06:10, всего редактировалось 1 раз.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

Дон Амброзио писал(а):А зачем на ATtiny СИ? :?

Я не знаю ассемблера для AVR, и мне не хочется его изучать. Добавлять в свой мозг ненужный балласт. Хватит уже с меня ассемблеров. А "C" я немножко знаю.
Поэтому, я выбрал самую дохлую AVR-ку, для которой можно писать на "C", и начал изучать микроконтроллеры именно с неё. Тем более, её ресурсов вполне хватало для моей задачи. Хватило бы и ATtiny11 или 12, но для них "C" нету...
Дон Амброзио

Сообщение Дон Амброзио »

Барсик писал(а):я выбрал самую дохлую AVR-ку.......её ресурсов вполне хватало для моей задачи. Хватило бы и ATtiny11 или 12

Тем более не понимаю зачем для таких простейших задач и таких "мелких" микроконтроллеров использовать СИ?
Убей грозой, не понимаю. И никогда не пойму.

Ведь изучив даташит, заглянуть в систему команд - дело 5-ти минут.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

Дон Амброзио писал(а):...Ведь изучив даташит, заглянуть в систему команд - дело 5-ти минут.

Я очень тупой. Освоить ещё один ассемблер за 5 минут у меня никак не получится. Да и не хочу. Вон, ARV тоже, не хочет "C" осваивать. А ведь заглянуть в книжку по "C" тоже дело 5 минут.

Дон Амброзио писал(а):...не понимаю зачем для таких простейших задач и таких "мелких" микроконтроллеров использовать СИ?

Постарайтесь понять. Я "C" немножко знаю. А ассемблер НЕ ЗНАЮ. И не собираюсь всю оставшуюся жизнь сидеть на "тиньках". Тренеруюсь "на кошках", да простят меня многоуважаемые кошки и коты. :) Глядишь, завтра понадобится "мега", а послезавтра, может быть, страшно представить - "пик" какой-нибудь. Что, прикажете изучать ещё один ассемблер, уже для "пиков"?
Ответить

Вернуться в «МЯЯЯУ!»