Jump to content

На чем писать  

580 members have voted

  1. 1. Что чаще используете в разработках?

    • Assembler
      162
    • C
      295
    • Что-то еще
      62


Recommended Posts

1 минуту назад, mazzi сказал:

проверяю различные идеи с помощью Ардуино.

Из этого следует, что уровень идей соответствует возможностям Ардуины как СРЕДЫ. Серьезные идеи Ардуиной не проверить.

Share this post


Link to post
Share on other sites
2 минуты назад, my504 сказал:

Из этого следует, что уровень идей соответствует возможностям Ардуины как СРЕДЫ. Серьезные идеи Ардуиной не проверить.

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


Пока ты жив, надежда есть.

Share this post


Link to post
Share on other sites
1 минуту назад, mazzi сказал:

горелой спичкой на салфетке

Это будет шуткой художника, а не профессиональным движением или достижением.

Работающий с Ардуиной достигнет с ней бОльшего, чем тот, кто без нее. Но из этого не следует, что уровень задач первого (в схемотехническом и программистском плане) можно считать сколь нибудь серьезным.

Share this post


Link to post
Share on other sites

Металл-композит как альтернатива ферриту: дроссели Panasonic семейства ETQP

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

Подробнее

2 минуты назад, my504 сказал:

Работающий с Ардуиной достигнет с ней бОльшего, чем тот, кто без нее. Но из этого не следует, что уровень задач первого (в схемотехническом и программистском плане) можно считать сколь нибудь серьезным.

Что есть такого в Ардуино, что может помешать мне достичь своей цели?


Пока ты жив, надежда есть.

Share this post


Link to post
Share on other sites
36 минут назад, DrobyshevAlex сказал:

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

это потому, что ты не владеешь ассемблером в полной мере.

17 часов назад, my504 сказал:

Проще писать сразу на АСМе, но используя все соглашения и структуру кода Си.

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

НЕЛЬЗЯ на ассемблере писать, копируя работу компилятора Си.

а когда забудешь о структуре кода Си, то на ассемблере получишь код в несколько раз короче, чем на Си.


Мудрость приходит вместе с импотенцией...

Share this post


Link to post
Share on other sites
                     

Новые литиевые ХИТы Fanso работают даже при +150ºС!

Когда приходится учитывать работу в экстремальных условиях, к выбору электронных компонентов подходишь с особой тщательностью. Высокие температуры, большие перепады давления, труднодоступность – все это требует специальной продукции. Склад КОМПЭЛ пополнился новыми литиевыми ХИТами Fanso, стабильно работающими даже при температуре до 150 ºС. Батарейки имеют номинальное напряжение 3,6 В, обладают ёмкостью от 700 до 14000 мАч, работоспособны в широком температурном диапазоне -20…150ºС и имеют низкий саморазряд (не более 3% в год в нормальных условиях хранения).

Подробнее о высокотемпературной линейке

2 минуты назад, my504 сказал:

Чтобы не сжечь чего нибудь на Ардуине, нужно просто думать,прежде чем написать код.

Допустим я решил написать код. Я вижу хваленую среду Ардуино. Мое мнение, его писали профессионалы и я могу ему доверять хотя бы на элементарном уровне, таком как в случае если у меня отвалился датчик am2320 подключенный по i2c - я просто получу 0, или false, или ERROR или throw, да что угодно, но это не повесит весь мк.

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

Share this post


Link to post
Share on other sites
2 минуты назад, Starichok сказал:

НЕЛЬЗЯ на ассемблере писать, копируя работу компилятора Си.

а когда забудешь о структуре кода Си, то на ассемблере получишь код в несколько раз короче, чем на Си.

Напишите на ассемблере короче чем на си например такое:

   for(i=0;i<16;i++)
   {
      for(j=0;j<4;j++)
      {
         mera[i][j]=disk[s++];
      }
   }

 


Пока ты жив, надежда есть.

Share this post


Link to post
Share on other sites
33 минуты назад, Starichok сказал:

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

НЕЛЬЗЯ на ассемблере писать, копируя работу компилятора Си.

а когда забудешь о структуре кода Си, то на ассемблере получишь код в несколько раз короче, чем на Си.

Это полная чушь, любезный Старичок. При всем моем к Вам уважении...

Вы даже не понимаете о чем я говорю. От слова совсем. Речь не идет о копировании работы компилятора. речь идет исключительно о соглашениях и СТРУКТУРЕ кода. Если у Вас есть желание подробно узнать об этом, я могу Вас ознакомить, но в личке. Моргните и я прилечу...)))

26 минут назад, mazzi сказал:

Напишите на ассемблере короче чем на си

Смотря на каком АСМе. :D

Скажем, на ASM16 это будет выглядеть так:

	do		#15, 0f
		repeat		#4
			mov	[W0++], [W1++]
0:		nop

А могу написать фрагмент кода на АСМе, который будет короче, чем код на Си. По числу строк - точно. B)

Причем без учета скобок Си. А так и мой пример короче Си реализации.

Edited by my504

Share this post


Link to post
Share on other sites
26 минут назад, my504 сказал:

Смотря на каком АСМе. :D

Ассемблер для AVR.


Пока ты жив, надежда есть.

Share this post


Link to post
Share on other sites

Несмотря на раздел AVR, обсуждение ведется В ПРИНЦИПЕ, без привязки к платформе (см. название темы), ибо намек товарисча, непрерывно грозящего нассать в ботинок, ранее заключался в том, что если не хватает производительности, то... Ну и далее все указывает на АРМ... :rolleyes:

Edited by my504

Share this post


Link to post
Share on other sites
43 минуты назад, mazzi сказал:

Напишите на ассемблере короче чем на си например такое:

я имел в виду не количество букв в исходном тексте, а количество байт, которые нужно залить в МК.

30 минут назад, my504 сказал:

Вы даже не понимаете о чем я говорю. От слова совсем. Речь не идет о копировании работы компилятора. речь идет исключительно о соглашениях и СТРУКТУРЕ кода.

вполне возможно, что я тебя не понял.

под словом "структура" я однозначно понимаю структуру, а именно:

создание функций и передача параметров в функции через стек и подобные особенности Си. так вот, на ассемблере это всё совершенно не нужно делать.

но это очень куцее объяснение моего понимания структуры Си..

39 минут назад, my504 сказал:

Если у Вас есть желание подробно узнать об этом, я могу Вас ознакомить

большое спасибо, но пока у меня нет такого желания.


Мудрость приходит вместе с импотенцией...

Share this post


Link to post
Share on other sites
12 минут назад, Starichok сказал:

создание функций и передача параметров в функции через стек и подобные особенности Си.

Вообще то на АСМе тоже стоит создавать функции. Экономия на call и return выглядит смешной на фоне угрозы запутать код так, что сам в нем утонешь. Передача переменных в функцию через стек  - это особенность определенного компилятора и к Си не имеет никакого отношения. При относительно небольшом количестве переменных их обычно передают через РОНы и через РОНы возвращают значение функции. Вот локальные переменные действительно можно открывать в стеке, но это если есть аппаратный механизм такого действа. Например, в 16-разрядных микрочипах это так называемый фрейм, который открывается закрывается инструкциями lnk #N/ulnk и позволяют исключить локальные НЕ статик переменные в функциях из регулярной области ОЗУ, что резко упрощает их администрирование. Работа с этими переменными ничуть не сложнее работы с регистрами. Система команд это поддерживает, а необходимости перегружать эти переменные из ОЗУ в РОНы нет никакой.

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

Edited by my504

Share this post


Link to post
Share on other sites

в ассемблере функции, как таковые, не нужны вообще.

а если в Си функция вызывается однократно, то в ассемблере вообще для этого не нужно создавать функцию, а просто выполнить эти однократные действия.

а если какие-то действия нужно выполнить более одного раза, то в ассемблере это оформляется подпрограммой, а не функцией.

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


Мудрость приходит вместе с импотенцией...

Share this post


Link to post
Share on other sites
1 минуту назад, Starichok сказал:

в ассемблере

Каком Ассемблере? Если тема про AVR, то, вероятно, рекомендованный в программе AVR Studio. 

Share this post


Link to post
Share on other sites
6 минут назад, Starichok сказал:

а если какие-то действия нужно выполнить более одного раза, то в ассемблере это оформляется подпрограммой, а не функцией.

Не расстраивайте меня, Старичок... Функция Си превращается после компиляции в самый обычный вызов call. Таким образом, при сопоставлении АСМа и Си  "подпрограмма"  и "функция" идентичны до неразличимости.

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

Share this post


Link to post
Share on other sites

я конеш понимаю упоротость профи, но так же понимаю, что форум тут в основном любительский. А любителям как правило до звезды ваши потуги выжать из примитивного камня каждый такт. Важнее решить задачу не утонув в собственном "творчестве". И если я могу получить быстрее и проще за 50 рублей, а мне скажут - нееет, друг. Это не спортивно. Заплати 150 и траxайcя по возрослому. Ответ будет скорее всего такой - иди как ты дружище лесом. И да, чаще всего я намекаю именно на то о чем все подумали. И как показывает статистика об этом уже думают очень многие нормальные люди. И да, я не брезгую взять в руки 16-ый пик если надо и даже ардуино, об который все так боятся запачкаться. Просто потому что знаю что могу от них получить и за какое время. А еще знаю что живу один раз и не собираюсь ушатывать свою жизнь в клавиши. Зачем? Чтобы потом гордо заявлять - да я вас всех на пальце имел, потому что я крутой асмофрик и могу в два байта упихать программу полета на марс? В контексте реального мира это ничего не стоит


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites
1 минуту назад, mail_robot сказал:

А еще знаю что живу один раз и не собираюсь ушатывать свою жизнь в клавиши.

Это у тебя с возрастом пройдет. И ты поймешь, что скучная работа сродни лишению свободы. Поэтому ты зря топчешь клавиши от слова совсем.

 

Share this post


Link to post
Share on other sites

ну да, клиника. Тут спорить бесполезно


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites
16 часов назад, my504 сказал:

Не расстраивайте меня, Старичок... Функция Си превращается после компиляции в самый обычный вызов call.

сожалею, я не собирался тебя расстраивать.

только этот самый обычный вызов call в Си оказывается обвешен кучей команд PUSH и POP, которых у меня на ассемблере не будет вообще.

 


Мудрость приходит вместе с импотенцией...

Share this post


Link to post
Share on other sites
7 минут назад, Starichok сказал:

обвешен кучей команд PUSH и POP,

даже если нет передачи переменных? на пуш и поп на асм я делал передачу переменных в функцию и обратно емнип. 

Share this post


Link to post
Share on other sites

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

в ассемблере все переменные (по крайней мере у меня) доступны напрямую. я могу взять любую переменную прямо из места ее хранения и результат поместить также прямо в нужное место.

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

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

16 часов назад, mail_robot сказал:

А любителям как правило до звезды ваши потуги выжать из примитивного камня каждый такт.

а вот мне не до звезды. и я в программировании любитель.

возможно, это у меня осталось с тех давних времен, когда программная память (ПЗУ) была маленькой (по сравнению с современными МК) и приходилось экономить каждый байт (а не такт).

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

это в древних МК 51-ой серии можно было видеть отдельные такты, так как там в одном машинном цикле было 12 машинных тактов.

и там был именно тактовый генератор - за один период тактовой частоты выполнялся один машинный такт.


Мудрость приходит вместе с импотенцией...

Share this post


Link to post
Share on other sites
1 минуту назад, Starichok сказал:

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

Я тоже так думал когда-то. И хотя теоретически так и есть, я решил это проверить и попробовал посоревноваться с компилятором с Си от фирмы Keil, и был посрамлен. На максимальной оптимизации по объему кода он меня победил. Я просматривал код, который он генерирует, и понял, что лучше написать вряд ли возможно. А если и возможно, то выигрыш будет мизерный.


Пока ты жив, надежда есть.

Share this post


Link to post
Share on other sites

@mazzi , не в обиду. Фраза должна была звучать так.

14 минут назад, mazzi сказал:

Я просматривал код, который он генерирует, и понял, что лучше написать...

...Вам...

15 минут назад, mazzi сказал:

...вряд ли возможно. А если и возможно, то выигрыш будет мизерный.

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

Share this post


Link to post
Share on other sites
23 минуты назад, Starichok сказал:

что в ассемблере нет необходимости передавать переменные в подпрограмму

эта необходимость есть в Си? я чего то не знаю? не хотите не передавайте.

24 минуты назад, Starichok сказал:

я могу взять любую переменную прямо из места ее хранения и результат поместить также прямо в нужное место.

опять же в си нельзя? там нет указателей? или глобальных переменных?  я могу из своего приложения получить данные в переменной в другом приложении и изменить их. (сейчас правда не уверен, под винду 100 лет не кодил, но раньше точно мог)

25 минут назад, Starichok сказал:

как это можно сделать в ассемблере.

я уже писал выше, но вы меня не поняли. не всегда программист умнее компилятора... по этому это дело случая) а вы скзаали раз я тупой то это моя проблема.

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

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

29 минут назад, Starichok сказал:

возможно, это у меня осталось с тех давних времен, когда программная память (ПЗУ) была маленькой (по сравнению с современными МК) и приходилось экономить каждый байт (а не такт).

у меня тоже есть это есть, я всегда стараюсь юзать как можно меньше памяти, юзать макросы и инлайн функции, я всегда плююсь когда вижу код uint32_t pct = 0;

где идет установка допустим от 0 до 100 процентов с шагом 1 процент. зачем там uint32. но тем не менее тут и без ассемблера можно обойтись, как и с битовыми масками, с указателями и тд.

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

33 минуты назад, Starichok сказал:

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

вот я все собираюсь делать осцил, пока делал на макетке наброски, я не думаю что перейдя на асм моя прошивка быстрей заработает. если я пишу в  BSRR или BRR или еще куда, то разве этот код не скомпилится верно? и будет занимать больше тактов чем на асм? 

 

2 минуты назад, Геннадий сказал:

...Вам...

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

Ну то есть к чему я все это. Не всегда есть необходимость писать на асм. Но я не говорю что на асм писать не нужно вообще)) 

Share this post


Link to post
Share on other sites
2 часа назад, Starichok сказал:

вызов call в Си оказывается обвешен кучей команд PUSH и POP, которых у меня на ассемблере не будет вообще.

Это из-за примитивности кода, уважаемый Старичок. В условиях ограниченного количества РОНов есть необходимость сохранять контекст текущей задачи при вызове функции (подпрограммы). Например, есть некая программа (она тоже вызов, но из основного цикла) сортировки массива, которая использует почти все РОНы, поскольку очень ресурсоемкая и применяет регистровую адресацию операндов , а не через ОЗУ, что гораздо медленнее. В этой программе периодически вызывается некая функция, которой тоже нужны РОНы. Вот в таком случае нужно освободить их от материнской задачи. Для чего их на входе выбрасывают в стек, а на выходе возвращают. Вы можете предложить более быстрое решение этого сохранения-восстановления? :rolleyes:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By dron92
      Подскажите как вернуть к жизни контролер или в утиль!
      Решил собрать программатор AVRISP mkII купил микросхему собрал подключил а устройств нет в диспетчере и  Flip не видит его!
      Начал искать косяки в сборке не нашел решил спаять Отладочная плату
      тот же результат, попробовал подключить через ISP не отвечает !
      Решил пойти на крайние меры  подключил через FuseDoctor сигнатуру он не видел вел 1e9482 вроде увидел но результата сбросить не проучилось но теперь он начал видится в таком формате фото внизу




    • Guest Виктор
      By Guest Виктор
      Здрасте, я хочу разобраться как работает и программируется мк и для этого выбрал среду разработки AtmelStudio. Привлекла она тем, что в ней есть симуляторы микроконтроллеров и покупать отладочные платы с мк не нужно, чтобы просто проверить код, что в какой регистр записывается и т.д. Захотел заглянуть в заголовочный файл, нашёл там строки:
      if __AVR_ARCH__ >= 100
      #    define __SFR_OFFSET 0x00
      #  else
      #    define __SFR_OFFSET 0x20
      #  endif
      P.S. модель взял atmega16
      Стал искать документацию по этому файлу... так и не нашёл. Потом пришла идея посмотреть значение __AVR_ARCH__ через отладку, поставил там точку, нажал на запуск с отладкой, но не вышло... отладчик сразу переходит на функцию мейн. Подумал, что может это препроцессорная директива, поэтому и не заходит, но потом наткнулся на это: https://docs.microsoft.com/ru-ru/visualstudio/debugger/navigating-through-code-with-the-debugger?view=vs-2019 ... там в конце темы показано что в VS можно отлаживать и исходники. Пытался найти такие же настройки в Atmelstudio... не нашёл. Помогите пожалуйста, есть ли такая возможность в AtmelStudio посмотреть значения констант и переменных в заголовочных файлах?



    • By pedrofan
      Здравствуйте, помогите, пожалуйста, данная программа должна несколько раз инкрементировать введеное с клавиатуры значение, например, если я ввожу 31, то на выходе должно получиться 31 32 33 34, а в протеусе получается вот. Прилагаю код.

      lab_4_1.asm
    • By RIMUS1989i
      Здравствуйте. Затеялся собрать анализатор спектра на светодиодах, 20x20 светодиодов, МК ATMEGA328P. 
      Долго ломал голову, как переключать столбцы без использования МК, дабы его не загружать.И вот что у меня получилось. Набросал тестовую прошивку для теста в протеусе. 
      При инилизации подается импульс на вторую ножку U4a, и на предпоследнем столбце.
      Думал сетку сделать на 5 сдвиговых регистрах (как раз 40 сигнальных линий), но боюсь мощности МК не хватит для обработки FFT и вывода на матрицу, будет подвисать.
      Кто что думает по поводу схемы?
      бегущая строка.pdsprj Natali_2012_program.hex
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
  • Сообщения

    • Надо более действенное...
    • Зависит от того ЧТО подключено после дросселя. Если ничего - первое, на конденсаторе достаточной емкости - второе.
    • @BAFI Добрый день.  По поводу вашей проблемы. У вас наступала ранняя сработка защиты из-за  того, что плечи двух одинаковых усилителей нагружаются неравномерно, о чем я писал несколькими постами выше. В пике они потребляют 14ампер с плеча, а это около 392вт пиковой мощности. Такую пиковую мощность должно выдать одно плече для двух усилителей 2*100вт. У вас блок со стабилизацией, это и является проблемой. Одно плече, на которое не заведена стабилизация просаживается гораздо сильнее. А в момент, когда нагружается второе плече (со стабилизацией), происходит резкий заряд ранее разряженных ёмкостей, что равномерно кратковременному КЗ. Ток в первичке при этом превышает 10А и вызывает срабатывание токовой защиты.  Способы решения: - отключить стабилизацию, так блок питания в пике может выдать около 800вт (проверено на практике); - равномерно нагрузить плечи (инвертировать один канал); - нагрузить плечи на ХХ большим током покоя усилителей.  Сейчас я отказался от применения стабилизации, так проще, меньше претензий. Падение напряжения под полной нагрузкой при этом составляет около 11-12%.  В идеальных условиях коммутации полевиков (как в резонансных ИИП) шунт 0.1ома и оптопара давал бы отсечку  при мощности около 1300-1400вт, но у нас ведь хардсвич.  Схема проверена тыщу раз, что-либо менять пока не планирую. 
    • Не имею ни малейшего понятия. И, если честно, не понимаю страсти использовать какие-то загадочные программаторы, в то время как USBAsp доступен почти так же, как воздух и вода. Имхо, время "5-проводков" и "адаптеров на СОМ-порт из резисторов и диодов" прошли давно.
    • Две  RGB сборки и кусок ленты - 150р BRIGELUX 100W  -  300р Матрица LTP-2757AA  -  90р Два символа светодиодный  LDD-A812RI  - 40р Два символа  ЖКИ LCD-S2X1C50TR  - 50р Графический ЖКИ   128х64  DEM 128064P FGH-PW  -140р 
    • У меня программатор Громова  ,  как  он обозначен в списке ? 
    • Нет Судя по всему - нет. У вас сообщение выведено, что avrdude не смог проинициализироваться и завершил работу со сбоем - разве не видите?
×
×
  • Create New...