На чем писать  

554 пользователя проголосовало

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

    • Assembler
      154
    • C
      280
    • Что-то еще
      59


383 сообщения в этой теме

Jozef    0

Извечный вопрос не дает покоя. Кто и на чем все же предпочитает вести работу с контроллерами?

Лично я как научился работать на С, так и не могу перейти на Assembler, да и не очень то хочется это делать.

Какие все же преимущества и недостатки, окромя понятности и не очень понятности?

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


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

На ассемблере)

Еще пытаюсь перейти на Ц, но ассемблер все же знать нужно.

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

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


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

Си не перевариваю на генетическом уровне... :) Asm, только asm.

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


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

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

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


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

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

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


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

А чем в этом случае асм хуже? Сложностью?

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


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

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

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

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


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

Радуйся, что хоть Си учил в универе. У нас на радиофаке(ННГУ) преподовали фортран :blink: и Tex с MatLab(Хоть на этом спасибо...). :(:(:(

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


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

Раньше писал на асемблере для PIC16F84, а сейчас переключился на AVR и изучаю Си

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


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

Вот я как раз и пишу, что я учу в универе (ПГУ) именно Фортран. А на упомянутом предприятии подрабатываю (все равно стипуху пропарил :) ), причем далеко не программистом.

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

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


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

Zer, Полностью вас поддерживаю и не перевариваю си,это не язык ,такое ощущение что его придумали чтоб выпендриваться перед теми кто на Васике пишет :)))) да и потому что незнаешь что генерит ,а на асме написал и что написал то и будет :) есть ощущение что рычаги у тя в руках а не у компилятора,да и когда делаеться проект который нужно уместить в махонькую память Си не друг :)

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


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

Уважаемые, а какая разница программисту на каком языке писать? На каком инструменте играешь лучше - на том и играй. Работа с конкретными выводами и портами контроллера, выставить единичку, прочитать, и тому подобное - на асме проще, посчитать при этом синус или логарифм - подключи С. И чем опытнее программист, тем больше у него СВОИХ библиотек и ему проще работать. А это приходит со временем, к кому раньше, к кому позже. Программа, написанная на ЯВУ проще переносится на другую платформу, но требует более скоростных ресурсов. Если их не хватает - кроме Асма ничего нет. Так вроде получается.

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


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

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

А вот языку не совсем безразлично.

Если посмотреть на историю вопроса, то очевидно, что развитие микропроцессорной техники и строительство на базе неё компуйтеров все далее отдаляло железо и периферию от программиста. В то время когда каждый мог состряпать ЭВМ естественным образом вставал вопрос о языках высокого уровня. И всё дальше вверх и вверх. А к железу милости просим через драйвера.

Микроконтроллеры - это немного другая ветвь развития. Вот ядро, вот периферия, вот ОЗУ, вот ПЗУ, вот список команд. По сути это ЭВМ в которой есть простой и понятный доступ ко всему что только можно на самом низком уровне. И никому в голову бы не пришло ещё 10 лет назад делать какие-то компиляторы с верхних языков чтобы писать для ядра программы.

Это сейчас, когда степень интеграции настолько высока, что на малипусенький кристалл уместили столько всего что сам чёрт ногу сломит, при этом на аппаратном уровне заложив мультизадачность, тут уж без верхних яхыков стало не обойтись. И пошла такая мода на С для микроконтроллеров. Программиста "запирают" в рамки языка. Конечно. Тут тебе и синус и косинус и еще много подобных благ. А уж как оно там скомпилируется - бог его знает. У тебя же теперь такой размер ЗУ что можно и не задумываться.

Есть только небольшое "но". Это всё расхолаживает и опять отдаляет программиста от истинной сути вещей происходящих в кристалле. Программист микроконтроллеров - это не тот программист который Delphi only, к которому все привыкли. Нельзя быть программистом только верхних языков чтобы сесть и писать для МК какие-то глобальные приложения. Наоборот можно.

Резюме: пишите на чём хотите. А если хотите быть хозяином положения пишите на языке ядра.

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


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

Си всё-таки пошел от большого количества системных ресурсов и зажирания програмистов.

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


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

Я бы не стал так говорить. Язык С появился тогда, когда больших ресурсов не было. И уже тогда, на маленьких машинах типа Корвет на С можно было лепить неплохие вещи, которые на АСМе делались с огромным трудом. Как говаривал Козьма Прутков - нельзя объять необъятное. Если можно написать на С и "гутаришь на энтой мови" - напиши. Написание программы времени займет меньше, чем на АСМе. Но опять же - главное не язык - а возможность написания РАБОТАЮЩЕЙ программы. Одна строка на С, как правило, много строк на АСМе, и зачем трудиться лопатой, когда можно позвать экскаватор. Но косточки на раскопках обметаем кисточкой. "Верхний" программист сможет писать эффективно для микроконтроллеров только тогда, когда будет их знать изнутри, на уровне "железа". А этому учат только электронщиков, но их не учат программировать на С. Нас в далекие 70 годы учили на Фортране, но и машин персональных тогда не было.

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


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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
Jozef    0
Zer: Си всё-таки пошел от большого количества системных ресурсов и зажирания програмистов.

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

Между прочим, ЯПВУ пошли задолго до С, так что не на Страуструпа нам бочку катить. Первые языки, конечно, были узко специализированы, взять тот же FORTRAN. Билл Гейтс послужил популяризации программирования, ибо создал Basic, являющийся до сих пор (местами) стартовой площадкой для программистов. Отпала просто серьезная необходимость лезть непосредственно в работу процессора и его окружающих. Прогресс...

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


Ссылка на сообщение
Поделиться на других сайтах
Speccy    3
Отпала просто серьезная необходимость лезть непосредственно в работу процессора и его окружающих.

Процессора и его окружающих - да.

Микроконтроллера и его встроенной периферии - нет.

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

Если в приложении подразумевается использование МК, и без него не обойтись, то ИМХО непосредственно лезть в работу ядра придётся так или иначе. Проще это делать на языке ядра.

К слову о том что там "лограифмы и прочие неберущиеся интегралы". Можно подумать что всё это "с неба" падает а не рассчитывается в конечном итоге в том же арифметическом модуле ядра. Которое очень ограниченно в своих возможностях. Классически это только две операции сложение и сдвиг.

Так вот все мат. функции могут быть разложены в ряды, либо затабулированы (по справочнику о Высшей математике). Проблем особых тут не наблюдается. Берем книжку "Полный дизассемблер ПЗУ ZX Spectrum", находим там процедуры относящиеся к встроенному калькулятору, и изучаем. Там довольно внушительные возможности FP вычислений, всё в машинных кодах писано.

  • Одобряю 1

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


Ссылка на сообщение
Поделиться на других сайтах
Zer    553
Зато дал возможность еще более массового распространения профессии, как и все прочие языки высокого уровня. Как было сказано, двигатель прогресса - это лень. Хотя и приводит это к росту неприспособленности человека.

May be, may be...

Я тоже на VB для компа проги пишу, но это уже несерьёзно... <_<

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


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

я вот на бейсике ниразу ничего вобще не писал... пока учился классе в 7-8 немного поизучал си..

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

асм - то же си, только голова должна додумать как сделать на асме switch и тд... зато у асма больше возможностей... по идее вообще начиличие различий выс. и низкий уровни отчасти портит систему...

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

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

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


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

Гы АСМ реально рулит Ведь

Ассемблер язык аппоратного уровня и при работе с железом просто не заменим!!! Асм плотнее всего взаимодествует с платформой нежели языки выс уровня

Программа на асме пролучается самая компактная и быстродействующая что не мало важно для микроконтроллеров.

На асме мона написать процедуры функции а потом ими пользоваться как вздумается.

P.S. а Бейсик (уневерсльный символьный код для начинающих) под МК это мазахизм

P.P.S вы исчё на них виндовз поставьте ))

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


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

Basic под МК я ещё не видел... :blink:

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


Ссылка на сообщение
Поделиться на других сайтах
Radan    1
Basic под МК я ещё не видел... :blink:

Вот Basic под AVR: http://www.mcselec.com.

А здесь попытки продвижения в русскоязычной части НЕТа - http://bascomavr.3bb.ru/, http://ledeffects.net/pages/?id=12.

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


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

Виндовз на МК... хм...

МК с объемом Flash 2 Гб, EEPROM 256 Мб и быстродействием 1,5 ГГц? оригинальная была б штука. Особенно если б из его возможностей использовались бы только MSOffice, как обычно бывает :)

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: parovoZZ
      Поставил LUFA, следом абсолютно не нужный мне ASF. Но в упор не понимаю - как создать проект на базе этой библиотеки из студии? Приходится вручную копировать папку с заголовочниками LUFA, прописывать пути в makefile, лишние телодвижения по добавлению папки в свойства проекта. Если я это делаю всё вручную, то тогда для чего это расширение? Примеры я могу и так покрутить. ЗЫ - не слишком высокий скилл в юзании Atmel Studio/
    • Автор: Trisector
      Привет всем.
      Помогите с кодом, нужно озвучить нажатие кнопки, подключенной к порту PB0, то есть просто издать короткий "бип" одной частоты (примерно 1000 Гц) и длительностью примерно 0.2 секунды.
      Везде, где искал, сразу создают кучу нот, разные тона, используют прерывания, мне же надо только один короткий бип.
      Выполняться оно должно в теле цикла:
      while (1) 
          {
              while(PINB&0b00000001); // ждем нажатия на кнопку на порте PB0
      <вот здесь должен быть бип>
       
      п.с. забыл добавить - выполняться код будет на Attiny13a
    • Автор: Zver2011
      Всем привет! 
      Дано: Контроллер подсветки рабочей зоны кухни, реализованный на Tiny 13A.  Светодиодная лента длиной 2,3 метра, led 5050, 120 светодиодов/метр. Принципиальная схема устройства ниже:

      Код прошивки:
      #include <tiny13.h> #include <delay.h> int triggered = 0; int ontimer = 0; void main(void) { // Input/Output Ports initialization // Port B initialization // Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=Out DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0); // State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0 PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 37,500 kHz // Mode: Fast PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Disconnected // Timer Period: 6,8267 ms // Output Pulse(s): // OC0A Period: 6,8267 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; while (1) { if (PINB.1==1) { triggered = 1; ontimer = 60; }; if (ontimer > 0) { ontimer--; } else { triggered = 0; }; if (triggered) { if (OCR0A<255) { OCR0A++; }; } else { if (OCR0A>0) { OCR0A--; }; }; delay_ms(10); } } Возникшая проблема:
      Греется полевой транзистор при работе. 
      Изначально поискав информацию на данную проблему, начал прикидывать. 
      Смотрим график зависимости пропускаемого тока стока (ID )от приложенного напряжения  затвор-сток (VGS),  при температуре окруж. среды 25 градусов: ID = 14 А (2,3 метра светодиодной ленты не могут столько кушать, по крайней мере я такую не видел).

      Было предположение что частота переключения ШИМ высокая - отсюда транзистор в не определенном состоянии = нагрев. Рассчитал макс. частоту так:
      Rg = 100 Ом, Vgs = 5V
      Заряд затвора:
      Qiss = Ciss * Vgs = 1800pF * 5v = 9nC
      Скрость нарастания:
      S = Rgate * Qiss = 100Ohm * 9nC = 0.009mV*sec
      Время на открытие или закрытие транзистора:
      t=S / Vgs = 0.002mV*sec * 3.2v = 4.5uSec
      Период  - это открытие + закрытие:
      T = t + t = 4.5uSec + 4.5uSec = 9uSec
      Максимальная частота переключения:
      F < 1 / T = 1 / 9uSec = 111KHz
      Ток через затвор (G) и цифровой выход Tiny 13A:
      I = Qiss / t = 2mA
      Максимальный выходной ток GPIO у Tiny 13A 40.0mA
      2mA < 40.0mA
      Выставил частоту ШИМ на 37,5 кHz. Вуаля - при подключении 1м светодиодной ленты (тестировал на обрезке), нагрева нет. Но как только подключил все 2,3 метра - транзистор стал снова спустя время греться, аж дотронуться не возможно.  Захотел померить ток, который потребляет 1 метр ленты, проверить продавца. Потребление 1 метра ленты оказалось вместо заявленных 600 мА, все 1,85 А, причем заметил странную вещь - ток начал возрастать спустя время на сотые доли  и дошел до 1,9 А. Дальше ждать не стал. Режим амперметра в мультиметре сломался?
      Далее подумал что слишком большая мощность рассеивается на транзисторе. Если учесть то, что при открытом транзисторе, его переход можно представить в виде линейного резистора с маленькой величиной сопротивления,  можно рассчитать рассеиваемую мощность на транзисторе:
      Смотрим сопротивление транзистора в открытом состоянии при VGS = 5В : RDS(on) = 0.18 Ом
      P1 = 1,9*1,9*0,18 = 0,65 Вт. (1 метр св.ленты).
      Раз мы взяли потребление 1 метра ленты  1, 9 А, тогда 2,3 метра потребляют  = 4,4 А. (Теперь не уверен в своем мультиметре).
      P2=4.4*4.4*0.18 = 3.5 Ватт - довольно таки многовато я думаю.
      В общем: Правильно ли я делаю расчеты? Что упустил?  Как снизить нагрев транзистора, без применения вентиляторов и здоровенных радиаторов? Есть вариант замены светодиодной ленты на что нибудь поменьше жрущее (60 светодиодов/ метр например), но в будущем еще много раз придется сталкиваться с полевиками, хотелось бы разобраться .
    • Автор: Денис Оробей
       Помогите написать простую задачку (для вас - простую, а я не шарю), на плате контроллера-конструнтора KIT-8515 нужно  сделать вот это: "Пусть движковыми переключателями задаются два четырехзначных операнда.  Напишите и протестируйте программу, при работе которой после нажатия кнопки 1 операнды складывались, а при нажатии кнопки 2 операнды вычитались, а результат операции выводился на светодиоды"
      Прикреплённый файл - начало задачки.
      Заранее благодарствую:)
      123.rar
    • Автор: Николай Зубий
      Как сделать  устройство, выводящие на индикатор время, прошедшее с момента последней перезагрузки контроллера?