На чем писать  

536 пользователей проголосовало

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

    • Assembler
      148
    • C
      271
    • Что-то еще
      56


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

Jozef    0

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

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

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

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Aeore    0

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

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

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

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

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

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

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

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


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

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

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


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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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


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

May be, may be...

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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, как обычно бывает :)

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: myrka
      Доброго дня! 
      Купил на барахолке вот такую плату





      на последней фото 2 черных провода в дальнейшем соединены 
      Это бегущая строка от игровых автоматов, на ней 2-мя цветами отображаются слоганы, хочу перепрошить в целях обучения.
      Вопросы:
      1) встречал ли кто-то описание этой микросхемы? (я в интернете не нашел, потратил 2 дня)
      2) есть на микросхеме разъем (10 ножек хорошо видно на последнем фото), как узнать их имена, за что отвечает каждая ножка? (есть некоторые предположения, но сомневаюсь в них)
      3) можно ли через CP2102-USB-UART-MODULE перепрошить вот эту микросхему, если да то как соединить?
    • Автор: Atreides
      Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
    • Автор: EugenArt
      Всем доброго времени суток!
      в поиске не смог найти инфо, поэтому создал тему, не ругайте, если ошибся с веткой.
      Идея следующая, есть автомагнитола deh-3600MP c выходом Ip-bus.Хочу подружить магнитофон с мп3 плеером (есть от фм-трансмиттера, завтра куплю платку отдельного мп3). Сразу подчеркну, что хочу управление плеером (треки, теги, пауза и т.д) с головного устройства.
      предполагаю схему так:  ip-bus - avr - mp3 player.
      алгоритм avr-mp3 несложен и открыт, а вот описание протокола ip-bus нигде нет, форум витат.спб уже изучил, есть кусок кода работы авр и ip-bus, но не очень понятно, может подскажете набор команд ip-bus или что происходит по событию нажатию кнопки вперед/назад.
      Заранее благодарен.
    • Автор: Максим Окатов
       
      Товарищи, помогите пожалуйста. Данная програмулина при нажатии на кнопку входит в функцию MinU() в которой инициализирует таймер для задержки(ждем отпустит пользователь кнопку или нет) если кнопка не отпущена то уменьшаем скважность ШИМ.
      проблема в выделенной красным строчке! когда count больше 3 уменьшаем скважность, но в отладчике AVR studio, Proteus и в железе не робит.
      Перепрыгивает действие в {} так будь-то условие не выполнено...
      #define F_CPU 1000000L
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
      unsigned char count = 0;
      unsigned char a=5,s=3,b=0;
          //===================================Насройка таймера====================
      void Timer_ini(void){
         TCCR1B = (1<<CS12)|(0<<CS11)|(0<<CS10);
         TCNT1 = 65535-976;
         TIMSK |= (1<<TOIE1);
         count = 0;
        }
          //===========================настройка шим===========================
      void PWM_ini(void){
         ASSR=0x00;
         TCCR2=0b01101110; //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
         OCR2=200;
      }
      //===============
      void MinU(){
          unsigned char i=0;
          Timer_ini();
          while (!(PINB&0b00000010)){
              if(count>2){        //Если таймер считал более двух раз
                _delay_ms(100); // ждем 100 мс
                OCR2--; // Уменьшаем скважность
                i=1;        // были в плавном уменьшении
            }
            
         }
         if (i!=1) // если не были в плавном уменьшении
         {
             OCR2=OCR2-50;
             i=0;
         }
      }
              //=======================================================
      int main(void)
          {
             
              // Настраиваем порт D на выход
              DDRB = 0b00001000;
              PWM_ini();
              //Timer_ini();
              sei();
              
              
              while(1)
              {
                  b=a-s;
                  if (!(PINB&0b00000010))
                  {
                      MinU();
                  }/*
                  //if (!(PINB&0b00000100))
                  //{
                      //PlsU();
                  //}*/
              }
              return 0;
          }
          
          ISR (TIMER1_OVF_vect)
          {
              count++;
              TCNT1 = 65535-976;
                  }
       
       
       
    • Автор: Serg_Mang
      Можно ли залить в arduino прошивку, предназначенную для чистого AVR?
  • Сообщения

    • Вот не утрируючи обьясни мне дураку, зачем снижать частоту в рабочем аппарате??
    • Автор, внутри шагового двигателя соединены средние точки обмоток. В связи с этим, Вам не удалось подключить обмотки последовательно. Нужно разобрать двигатель и распаять средние точки. Я сейчас спаял последовательное соединение и раскрутил пальцами вал до 24в без нагрузки. Так же необходимо реализовать редуктор, ибо это мастурбация. При определённых оборотах шаговика, мощность начинает расти в разы.
    • DesAlex не доволен, когда технический раздел форума пытаются использовать как рекламу для своего товара. Весь подобный материал поудаляю (и это уже не первый раз в случае с Вами), в следующий раз - забаню за злостное нарушение Правил форума. Нужна реклама - это к админу (за денежку на развитие форума); продать - только в разделе "Куплю-Продам", в технической теме не должно быть ни малейшего намёка на занятие коммерцией.
       
    • Ради прикола отснял еще одно демонстрационное видео:     Статья в процессе. Но как скоро выйдет, не могу сориентировать, поскольку работа, семья, маленькие дети... Поэтому, кому очень приспичило, могу помочь в пределах данного форума. Первая статья про ЭТ уже готова. Ссылку давал чуть выше. От нее уже можно отталкиваться.
    • 3 линии по 5-6 таких диодов, больше драйвер не потянет. В каждую линию токовыравнивающий резистор 1-1,5 Ом 1,5-2 Вт.
    • Всем привет подскажите пожалуйста. Есть модуль А6. У него есть пин RST. В даташите написано, что для сброса надо применять низкий уровень, но при этом ток через все это дело пойдёт до 70ма и у модема возникнут трудности с поиском сети. Там же сказано, что рекомендовано использовать nMOSFET. Так вот я правильно понял, что надо просто тянуть эту ногу к земле через мосфет н типа, никаких там обвесов не надо? Есть схемка как правильно притянуть ногу к земле через мосфет? И как правильно подобрать транзистор? Питание модуля 5в , управление 3,3в
    • всем привет. И так по-порядку без лишних слов. схема управляет двигателем в игрушечной машинке спаял самодельный H-bridge на KT816В + КТ817Г + управляющие 2n3904 схему взял тут: http://www.laurentkneip.de/H_bridges.html Оригинальня схема: Схема чуть модифицированная мною: На схеме:
      - замены по сравнению с оригиналом подчеркнул: желтым
      - номера ножек транзисторов: голубым
      - заменил R1 и R3 с 10К на 200 Ом. Как по мне 10К это перебор
      - добавил диодов на каждый транзюк: в инете видел много схем где диоды стоят У меня есть еще 1 машинка. Я её схему перепаивал, так как там стояли очень слабые транзюки и 1 из них был сгоревшим, но там диодов и резюков НЕТ вообще - и она работает. По сути там копия оригинальной схемы (фото №1) ПРОБЛЕМА: текущая самопайка при подаче сигнала на X2-1 или X2-2 - двигатель крутит или по часовой или против часовой. вроде бы всё ОК. Но не особо сильно. Как будто в пол силы. НО! когда на обеих контактах 0 - то он сам еле еле крутится в одну сторону. На X1-1 при этом 0.49V, а на X1-2 около 1.42V. Тут то я и понял, что что-то явно не то. Я так понимаю транзюки каким-то образом приоткрыты? - честно говоря я очень силен в схемотехнике , Программист, но люблю и паять. По-этому пишу с просьбой помочь. Пробовал оба X2-1 и X2-2 тупо на землю посадить без Arduino - эффект тот же. Ну и если рукой взять за вал моторчика - то слышно, как он туда сюда как бы дергается с оооочень большой скоростью. Но так как напруга на одном из контактов больше - он всё же еле-еле крутится по часовой. Может я неправильно добавил диоды в схему? или резисторы R2 и R4 поставить около 2К-4К Ом? Неправильно номера ножек транзюков определил? Вместо 2n3904 есть еще С945 если, что. Могу замерять напряжения в любых точках где скажете.