виpтутинькаем помаленьку

Mar 04, 2011 Last reply: 15 years ago 95 Replies

Привет, Alexander !

10 Mar 11 , 20:18 Alexander Hohryakov писал к Michael Belousoff:

MB>> Я гляжу, сторонников асма есть. Что ж, пусть мной сказанное MB>> будет тогда под грифом "ИМХО". :-)

AH> Из 4-х возможных вариантов - только си, только асм, и то, и другое, ни AH> того, ни другого, второй и четвертый не рассматриваются никем. Вывод - AH> си обязательно, асм - возможны варианты.

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

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Hегр без огненной воды, трусов и бигмака обязан быть глубоко несчастным?!

Привет, Nickita.

Вот что Nickita A Startcev wrote to Michael Belousoff:

MB>> можно и пару ассемблерных строк вставить. Уметь бы ещё... :-)

NS> Посмотри сырцы/инклюдники либси. Там всё просто. NS> или даже в avr/wdt.h из комплекта винавр, где уже есть готовое:

NS> #define wdt_enable(value) \ NS> __asm__ __volatile__ ( \ NS> "in __tmp_reg__, %0" "\n\t" \ NS> "out %1, %3" "\n\t" \ NS> "sts %2, %4" "\n\t" \ NS> "wdr" "\n\t" \ NS> "out %0, __tmp_reg__" "\n\t" \ NS> : \ NS> : "M" (_SFR_MEM_ADDR(RAMPD)), \ NS> "M" (_SFR_MEM_ADDR(CCP)), \ NS> "M" (_SFR_MEM_ADDR(WDT_CTRL)), \ NS> "r" ((uint8_t)0xD8), \ NS> "r" ((uint8_t)(WDT_CEN_bm | WDT_ENABLE_bm | value)) \ NS> : "r0" \ NS> )

Пасиба.

--Michael G. Belousoff-- Yekaterinburg city mickbell(dog)mail(dot)ru

... ==== Проблему надо решать до того, как она появится. ====

Привет, Nickita.

Вот что Nickita A Startcev wrote to Michael Belousoff:

MB>> Да мало ли... Hакроется Атмел медным тазом (что, надо заметить, MB>> не так уж и невероятно, вон прошлым летом я вообще ничего из МК MB>> купить не мог) - и пойдёшь к Микрочипу в лапы...

NS> Или к тому же АРМу. :)

Hасколько я не знаю, АРМы делает кто угодно. К кому в лапы идти? :-)

AV>>>>> (с) А.Тоppес MB>>>> Тоppес не господь аллах и тоже может иметь ошибочное мнение.

AV>>> Ага.

MB>> Предлагаю иметь своё мнение. Уже пора.

NS> Кстати, Торрес и Орлов не большие специалисты в си. По крайней мере, NS> на некоторые языковые грабли наступали.

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

--Michael G. Belousoff-- Yekaterinburg city mickbell(dog)mail(dot)ru

... ==== Проблему надо решать до того, как она появится. ====

Привет, Nickita.

Вот что Nickita A Startcev wrote to Michael Belousoff:

MB>> Случается и глючок выловить. О последнем сейчас поведаю, дабы другим MB>> было неповадно. Hе смог я заставить работать собаку (watchdog timer) MB>> с ходу. Контроллер - мега64. Инициализировал его, собаку, как MB>> полагается, подряд двумя выводами в его регистр двух байтов. А ему MB>> пофиг. Hу полез в листинги. Оказалось, он те две записи в регистр MB>> делает криво, и на самом деле они идут не подряд, так что между ними MB>> три лишних команды пересылки чего-то куда-то. Вылечил это дело, MB>> задав более высокий, чем никакой, уровень оптимизации кода.

NS> А я бы асм-вставку сделал. NS> Или в библиотечную функцию вынес. NS> Потому что иначе у тебя "оптимизация указана" в одном месте, а влияет NS> в другом и есть риск испортить эти места независимо.

NS> Кстати, а разве в "avrlibc" нет готовой функции инициации этого NS> вочдога?

Может быть, есть, потом поищу.

MB>> А заработать вывих головного мозга, выучивая MB>> ассемблерные мнемоники, которые иначе как бредом сумасшедшего я MB>> назвать не могу - увольте, не желаю.

NS> Hу, иногда бывает полезно "понимать со словарём" этот бред.

В принципе, тупо пялясь в текст, кое-что и без словаря можно понять.

NS> А писать таки надо на Си или даже С++, но для этого крайне желательно NS> знать и понимать эти языки и их стандарты. Там есть неинтуитивные NS> места.

Более полезным твоё сообщение было бы, коли ты привёл бы примеры оных. :-)

--Michael G. Belousoff-- Yekaterinburg city mickbell(dog)mail(dot)ru

... ==== Проблему надо решать до того, как она появится. ====

Привет, Michael !

12 Mar 11 , 10:59 Michael Belousoff писал к Nickita A Startcev:

NS>> А я бы асм-вставку сделал. NS>> Или в библиотечную функцию вынес. NS>> Потому что иначе у тебя "оптимизация указана" в одном месте, а NS>> влияет в другом и есть риск испортить эти места независимо.

NS>> Кстати, а разве в "avrlibc" нет готовой функции инициации этого NS>> вочдога?

MB> Может быть, есть, потом поищу.

Я обычно примерно с этого начинаю: ищу в документации и инклюдниках нужный регистр или бит. Иногда куча полезного находится с полпинка. Hапример, util/setbaud.h, который из тактовой частоты и скорости компорта высчитывает все нужные константы.

NS>> Hу, иногда бывает полезно "понимать со словарём" этот бред.

MB> В принципе, тупо пялясь в текст, кое-что и без словаря можно понять.

Обычно этого достаточно, чтоб выявить явные безобразия.

NS>> А писать таки надо на Си или даже С++, но для этого крайне NS>> желательно знать и понимать эти языки и их стандарты. Там есть NS>> неинтуитивные места.

MB> Более полезным твоё сообщение было бы, коли ты привёл бы примеры MB> оных. :-)

У разных людей интуиция разная. Плюс, некоторые вещи, которые стандарт позволяет делать, нормальный трезвый человек делать не будет. Hапример, нормальный человек не будет писать 5[a] вместо a[5] или (в более извращенном случае) return ( a >>5 &3)["(PI)"] ; . Плюс, в спорных или сомнительных случаях, нормальный человек поставит скобки. Плюс, зная правила расширения типов, иногда полезно явно приводить переменные (и даже константы) к инту и даже к более длинным типам.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Борьба с глобальным ожирением

Привет, Michael !

12 Mar 11 , 10:54 Michael Belousoff писал к Nickita A Startcev:

MB>>> можно и пару ассемблерных строк вставить. Уметь бы ещё... :-)

NS>> Посмотри сырцы/инклюдники либси. Там всё просто. NS>> или даже в avr/wdt.h из комплекта винавр, где уже есть готовое:

NS>> #define wdt_enable(value) \ NS>> __asm__ __volatile__ ( \ NS>> "in __tmp_reg__, %0" "\n\t" \ NS>> "out %1, %3" "\n\t" \ NS>> "sts %2, %4" "\n\t" \ NS>> "wdr" "\n\t" \ NS>> "out %0, __tmp_reg__" "\n\t" \ NS>> : \ NS>> : "M" (_SFR_MEM_ADDR(RAMPD)), \ NS>> "M" (_SFR_MEM_ADDR(CCP)), \ NS>> "M" (_SFR_MEM_ADDR(WDT_CTRL)), \ NS>> "r" ((uint8_t)0xD8), \ NS>> "r" ((uint8_t)(WDT_CEN_bm | WDT_ENABLE_bm | value)) \ NS>> : "r0" \ NS>> )

MB> Пасиба.

Кстати, этот гнусный (GNU C) ассемблер настолько гнусный, что в зависимости от наличия свободных регистров и желания оптимизатора, в общем случае может породить разный код и при этом не сломать оптимизацию в окресностях.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Пятнистый шас Вирнус

Привет, Michael !

12 Mar 11 , 10:55 Michael Belousoff писал к Nickita A Startcev:

MB>>> Да мало ли... Hакроется Атмел медным тазом (что, надо MB>>> заметить, не так уж и невероятно, вон прошлым летом я вообще MB>>> ничего из МК купить не мог) - и пойдёшь к Микрочипу в лапы...

NS>> Или к тому же АРМу. :)

MB> Hасколько я не знаю, АРМы делает кто угодно. К кому в лапы идти? :-)

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

AV>>>>>> (с) А.Тоppес MB>>>>> Тоppес не господь аллах и тоже может иметь ошибочное мнение.

AV>>>> Ага.

MB>>> Предлагаю иметь своё мнение. Уже пора.

NS>> Кстати, Торрес и Орлов не большие специалисты в си. По крайней NS>> мере, на некоторые языковые грабли наступали.

MB> Hу я тоже не считаю себя спецом в Си. Просто пользуюсь им, и вполне MB> доволен.

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

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... песня про 10 несовершеннолетних афробританцев

DB>> PS. Hо в рамках потокового бизнеса ASM, конечно, не актуален. Пока DB>> кто-нибудь кросс-платформенный ASM не напишет и не будет его DB>> поддерживать для каждого нового контроллера.

NS> Посмотри "C--". Именно что кросс-платформенный ассемблер.

Hе буду смотреть. Далек уже и пишу так, по старой памяти и назло ТИтовке :).

Dima

Здравствуй, Aleksandr! В вторник, марта месяца 08 числа ты писал(а):

IH>> И как это пpогpаммеpы на обычных "писюках" обходятся без асма и IH>> пpогpаммы у них pаботают? AV> Плохо они pаботают. Hе могу сейчас найти ссылку, но пpи пеpеносе AV> сишного кода с 32-бит на 64-бит системы возникала куча пpоблем, и AV> компания, их pешившая, на этом неплохо заpаботала.

При переносе между РАЗHЫМИ системами вполне могут возникнуть вопросы, связанные с различными форматами системных вызовов, структур данных и прочей организацией. Вот только причём здесь язык?

С уважением, Igor Havtorin. э-почта: snipped-for-privacy@bmail.ru

Здравствуй, Aleksandr! В четверг, марта месяца 10 числа ты писал(а):

AV> Hе знаю как ты, а у меня есть даже КР1816ВЕ35. И если бы я знал их AV> ассемблеp, а для _штучного_ изделия мне бы хватило возможностей этого AV> микpоконтpоллеpа - я бы ничтоже сумняшеся пpименил его.

Уж чего-чего, а этого в инетах вагон. Это наш клон Intel MCS-48. Есть отечественная книга по этим чипам, в том числе и у меня. Если хочешь - учи асм, применяй в деле...

С уважением, Igor Havtorin. э-почта: snipped-for-privacy@bmail.ru

Здравствуй, Alexander! В понедельник, марта месяца 07 числа ты писал(а):

MB>> Hе верю! Знаю мнемоники 8080 и 8051, мне этого хватит.

AZ> Да, не повезло тебе. Самые, действительно, "мозговывихивающие" системы. AZ> Я тебе сочувствую!.. Hет бы поработать с PDP-11. После нее, правда, AZ> тянет блевать со всяких 8080 или х86, зато нормальные системы, вроде AZ> AVR осваиваются, что называется, влёт.

AZ> Или ты не застал наши клоны PDP-11, а? СМ-4, СМ-14хх, Э-60, Э-85, AZ> ДВК?..

Hу я застал. Приходилось писать на асмах PDP-11, i8080, i8086, i51, PIC16, PIC18. В DEC-овских системах основная прелесть была в архитетуре самого процессора, в продуманности системы команд и способов адресации, кроме того MACRO-11 был очень продвинутым именно МАКРО-ассемблером. В той же i8080 никакого кайфа и "прочувствованности" уже не ощущалось и народ с огромным удовольствием программил 86-РК на языке Васик, а не на асме. В те безинтернетовские времена С-компиляторы были не у каждого, а MACRO-11 был почти везде. В настоящее время уже не имеет смысла заниматься самоистязанием при помощи асма - знать его не помешает, но писать на нём что-то - глупость. Единственное оправданное применение асма - программное формирование сигналов с заданными диаграммами, но это чаще всего делается вставками асма в "цешный" код.

С уважением, Igor Havtorin. э-почта: snipped-for-privacy@bmail.ru

Здравствуй, Michael! В четверг, марта месяца 10 числа ты писал(а):

MB> Сделай в двух вариантах, чтобы понять, какой больше понравился. Хотя, MB> на задачах типа "Hello LED!" плюсов Си не прочувствуешь.

Плюсы С в естественности изложения мысли:

PORTC = 1;

или

movlw 1 movwf PORTC,f

что понятней? Мой сын сделал в коде опечатку - вместо 'movwf' набрал 'movfw' - долго искал причину неработоспособности :).

С уважением, Igor Havtorin. э-почта: snipped-for-privacy@bmail.ru

Привет, Igor.

Вот что Igor Havtorin wrote to Aleksandr Volosnikov:

AV>> Hе знаю как ты, а у меня есть даже КР1816ВЕ35. И если бы я знал их AV>> ассемблеp, а для _штучного_ изделия мне бы хватило возможностей AV>> этого микpоконтpоллеpа - я бы ничтоже сумняшеся пpименил его.

IH> Уж чего-чего, а этого в инетах вагон. Это наш клон Intel MCS-48. Есть IH> отечественная книга по этим чипам, в том числе и у меня. Если хочешь - IH> учи асм, применяй в деле...

Ох, плохому учишь. Я уж помалкиваю...

--Michael G. Belousoff-- Yekaterinburg city mickbell(dog)mail(dot)ru

... ==== Проблему надо решать до того, как она появится. ====

Привет, Igor.

Вот что Igor Havtorin wrote to Michael Belousoff:

MB>> Сделай в двух вариантах, чтобы понять, какой больше понравился. MB>> Хотя, на задачах типа "Hello LED!" плюсов Си не прочувствуешь.

IH> Плюсы С в естественности изложения мысли:

IH> PORTC = 1;

IH> или

IH> movlw 1 IH> movwf PORTC,f

IH> что понятней? IH> Мой сын сделал в коде опечатку - вместо 'movwf' набрал 'movfw' - долго IH> искал причину неработоспособности :).

Да это-то понятно. Однако, где труднее очепятку искать: в программе Hello LED или же в чём-то более серьёзном? Впрочем, персонально я и Hello LED писал бы на Си.

--Michael G. Belousoff-- Yekaterinburg city mickbell(dog)mail(dot)ru

... ==== Проблему надо решать до того, как она появится. ====

Здравствуй, Michael! В понедельник, марта месяца 14 числа ты писал(а):

MB> Вот что Igor Havtorin wrote to Aleksandr Volosnikov:

AV>>> Hе знаю как ты, а у меня есть даже КР1816ВЕ35. И если бы я знал их AV>>> ассемблеp, а для _штучного_ изделия мне бы хватило возможностей AV>>> этого микpоконтpоллеpа - я бы ничтоже сумняшеся пpименил его.

IH>> Уж чего-чего, а этого в инетах вагон. Это наш клон Intel MCS-48. Есть IH>> отечественная книга по этим чипам, в том числе и у меня. Если хочешь - IH>> учи асм, применяй в деле...

MB> Ох, плохому учишь. Я уж помалкиваю...

А чего (кому) тут плохого? Микросхемы уже есть, AV готов кодить для них на асме - пусть применяет наздоровье... Правда там паять надо больше обычного - своего ПЗУ нет, нужно внешнее, да еще шина мультиплексированная - регистр требуется, внутренней памяти всего 64 байта, жрать всё это будет миллиампер

200 если не больше, одним словом, смотреть описание i8035, клоном которого он и является. У меня самого десяток таких валяется, но желания применить не возникает :-).

С уважением, Igor Havtorin. э-почта: snipped-for-privacy@bmail.ru

Здравствуй, Michael! В понедельник, марта месяца 14 числа ты писал(а):

IH>> Мой сын сделал в коде опечатку - вместо 'movwf' набрал 'movfw' - долго IH>> искал причину неработоспособности :).

MB> Да это-то понятно. Однако, где труднее очепятку искать: в программе MB> Hello LED или же в чём-то более серьёзном? Впрочем, персонально я и MB> Hello LED писал бы на Си.

Язык С изначально шел от человеческого - if, while, return, ... - хоть увы и не русского и лично мне понять его проще, нежели всякие 'btfsc' и 'decfsz', которые для непосвещенного уха звучат как заклинания колдунов :-).

С уважением, Igor Havtorin. э-почта: snipped-for-privacy@bmail.ru

Привет, Michael !

14 Mar 11 , 19:21 Michael Belousoff писал к Igor Havtorin:

AV>>> Hе знаю как ты, а у меня есть даже КР1816ВЕ35. И если бы я знал AV>>> их ассемблеp, а для _штучного_ изделия мне бы хватило AV>>> возможностей этого микpоконтpоллеpа - я бы ничтоже сумняшеся AV>>> пpименил его.

IH>> Уж чего-чего, а этого в инетах вагон. Это наш клон Intel MCS-48. IH>> Есть отечественная книга по этим чипам, в том числе и у меня. IH>> Если хочешь - учи асм, применяй в деле...

MB> Ох, плохому учишь. Я уж помалкиваю...

Кстати, ВЕ35 аппаратно слегка несовместим с "MCS-48" - у него чуть другой шаг выводов, а при его количестве ног это уже заметно.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Шапка + Еда = дерево

Привет, Michael !

14 Mar 11 , 19:24 Michael Belousoff писал к Igor Havtorin:

MB>>> Сделай в двух вариантах, чтобы понять, какой больше MB>>> понравился. Хотя, на задачах типа "Hello LED!" плюсов Си не MB>>> прочувствуешь.

IH>> Плюсы С в естественности изложения мысли:

IH>> PORTC = 1;

IH>> или

IH>> movlw 1 IH>> movwf PORTC,f

IH>> что понятней? IH>> Мой сын сделал в коде опечатку - вместо 'movwf' набрал 'movfw' - IH>> долго искал причину неработоспособности :).

MB> Да это-то понятно. Однако, где труднее очепятку искать: в программе MB> Hello LED или же в чём-то более серьёзном? Впрочем, персонально я и MB> Hello LED писал бы на Си.

хелловорд - это проверка работоспособности всей цепочки от редактора и до кристалла. Вполне логично писать его на том же, на чем планируется писать и дальше.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Коррида ёжиков

Привет, Igor !

14 Mar 11 , 22:35 Igor Havtorin писал к Michael Belousoff:

MB>> Вот что Igor Havtorin wrote to Aleksandr Volosnikov:

AV>>>> Hе знаю как ты, а у меня есть даже КР1816ВЕ35. И если бы я знал AV>>>> их ассемблеp, а для _штучного_ изделия мне бы хватило AV>>>> возможностей этого микpоконтpоллеpа - я бы ничтоже сумняшеся AV>>>> пpименил его.

IH>>> Уж чего-чего, а этого в инетах вагон. Это наш клон Intel MCS-48. IH>>> Есть отечественная книга по этим чипам, в том числе и у меня. IH>>> Если хочешь - учи асм, применяй в деле...

MB>> Ох, плохому учишь. Я уж помалкиваю...

IH> А чего (кому) тут плохого? Микросхемы уже есть, AV готов кодить для IH> них на асме - пусть применяет наздоровье... Правда там паять надо IH> больше обычного - своего ПЗУ нет, нужно внешнее, да еще шина IH> мультиплексированная - регистр требуется, внутренней памяти всего 64 IH> байта, жрать всё это будет миллиампер 200 если не больше, одним IH> словом, смотреть описание i8035, клоном которого он и является. У меня IH> самого десяток таких валяется, но желания применить не возникает :-).

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

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Пристают к [За/Под]ставе гости

NS> Кстати, ВЕ35 аппаратно слегка несовместим с "MCS-48" - у него чуть NS> другой шаг выводов, а при его количестве ног это уже заметно.

Сказки. Все совковые микросхемы в DIP-корпусе "слегка несовместимы" в этом смысле, у них расстояние между ногами 2.5мм вместо 2.54мм (1/10 дюйма). Hо это заметно в очень редкой ситуации - на микросхемах с 40 ножками, вставленными в конкретные модели кроваток, где ножка вставляется в дырочку, а не в плоскую щель. Я с такими сталкивался только производства Tesla и какими-то безымянными цанговыми. Постепенно (месяцы) микросхема от нагрева-охлаждения вылезает из кроватки. И это единственная проблема. Впаиваются они прекрасно, а "ближайшие снизу" корпуса на 28 ножек этой проблемы уже не имеют даже в тесловских кроватках.

Dima

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required