На чем писать  

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

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

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


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

gunya    0

Я в техникуме изучал асемблер для I8051,щас научился писать програмы для авр на асемблере.Хотелось бы выучить СИ,если у кавото есть книги для начинающих в СИ,дайте ссылку.

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


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

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

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

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

начинаю осваивать писать на С . выбрал С потому что большинство примеров которые я нашёл было написано на нём , ну и само собой переносимость как ни крути это очень удобно . А вот ASM тоже бывает ООчень нужен так как бывает проще разобраться в листинге программы

без него то не куда . И кстати я так понял лучше пользоваться такими компиляторами как IAR ну и GCC то есть без встроеных библиотек чтоб без проблем потом переехать ежели чего на другой кристал или компилятор ИМХО это очень удобно

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

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


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

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

  • Одобряю 1

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


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

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

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


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

хорошо знать и асм и си.. а там все зависит от поставленной задачи

асмовские вставки в си иногда очень хорошо помагают

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

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


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

когда начинал писать программы на ассемблере для старого-доброго синклера, уяснил, что сначала нужно блок-схему составить, а уж потом, программу писать. так вот, Algorithm Builder это оптимальный вариант: составляется блок-схема и ЭТО И ЕСТЬ программа. хотелось бы узнать мнение других людей по поводу работы в Algorithm Builder.

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


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

Для с51 контролера пишу на Bascom-8051(Бейсик но с небольшими своими особенностями :) ) , сейчас заказал AVR микрухи и наверно буду писать уже пожалуй на Bascom-AVR ( то же самое но с поправками на авр).

К сожалению си знаю плохо :( , неплохо знаю паскаль, но жаль для МК такие языки не встречаются :(

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

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


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

Бесполезный спор!!!!!!! Сначала ставиться задача под нее выбирается камень,а потом основываясь на задачи и типе камня выбирается язык и составляется алгоритм!!!!!

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


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

Сначала ставится ЗАДАЧА, потом составляется АЛГОРИТМ, ну и только после этого можно что-то сказать о камне.

Ну а про язык я уже писал, наиболее оптимальный СИ, ну естественно с возможными вставками ассемблера, в наиболее критических местах.

На голом асме большой проект с математикой сложно написать.

Среда программирования - на вкус, наверно.

Я предпочитаю IAR, в силу ее универсальности, т.е. она работает практически с любым МК.

Да и возможности отладки там хорошие.

Хотя для западных стран эта среда стоит денег.

P.S. Не вижу большой разницы между Си и Паскалем.

Организация циклов и структура программы одинакова.

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

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


Ссылка на сообщение
Поделиться на других сайтах
Goodefine    92
Сначала ставится ЗАДАЧА, потом составляется АЛГОРИТМ, ну и только после этого можно что-то сказать о камне.

Зачастую алгоритм сильно зависит от возможностей применяемого камня. Поэтому после ЗАДАЧИ идет ТЕХНИКО-ЭКОНОМИЧЕСКИЙ РАСЧЕТ из нескольких итераций, в котором участвуют подходящие камни с оценкой затрат на программирование оных. Меньше флэша - стоимость камня меньше, затраты на программирование (степень детализации алгоритма) больше, и наоборот... Поэтому, АЛГОРИТМ и выбор камня скорее параллельные процессы...

P.S. Не вижу большой разницы между Си и Паскалем.

Здесь была обширная дискуссия по этому поводу...

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

Зато реализующий код существенно длиннее

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


Ссылка на сообщение
Поделиться на других сайтах
Migray    5
P.S. Не вижу большой разницы между Си и Паскалем.

Здесь была обширная дискуссия по этому поводу...

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

Компиляторов Паскаля для МК не много, не для всех камней есть, и с этим основные проблемы.

Но в свое время, примерно в 92-м году изучал Паскаль и Си для персоналок, потом естественно Дельфи и Билдер, без проблем могу написать прогу на том, что в данный момент стоит на компе. Большой разницы не вижу, если чесно.

Для МК специально не сравнивал, просто лениво.

Собственно из-за лени и выбрал IAR (Си), дабы не изучать еще что-то, если придется менять проц.

Если-бы увидел столь-же всеобъемлющий компилятор с Паскаля, возможно работал-бы в нем.

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

Зато реализующий код существенно длиннее

Ну ни кто не мешает объявить новый тип, правда придется для каждой переменной отводить по байту.

Можно даже в программе написать "True" и "False" вместо "1" и "0"

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

А вообще, возвращаясь к теме, для новичка хорош тот язык, на котором есть куча примеров, а для профессионала - сам выберет, в зависимости от желания :)

Учиться все равно придется постоянно :)

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

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


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

Я использую CodeVisionAVR и симуляторы VMLAB PROTEUS - очень удобно.

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


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

Алгоритм работы проца естественно зависит от его возможностей.

Но алгоритм работы всего устройства зависит только от задачи. И составляться он должен один раз.

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

Тут Goodefine прав, итераций может быть немало.

И в каждой мелкой подзадаче будет свой алгоритм работы. Причем именно здесь он уже будет зависеть от железа.

Возможно мы недопоняли друг друга, будем считать эти 2 этапа, железо/алгоритм взаимосвязанными.

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

1. - Смотрим, что есть для данного конкретного железа.

2. - Шеф сказал - пишем все на ххх - значит все :(

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


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1
2. - Шеф сказал - пишем все на ххх - значит все :(

А мы раз шефу на фразу «пишем на …» Ответили да пошел ты

Те, кто уволились так и пишут на IAR

Да и те, кто остался то же пишут на IAR

:D:D:D

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


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

Но все же в большей степени от применяемого компилятора (видели бы вы кучу бесполезного кода от применения стандартных библиотек и макросов, натыканных языками высокого уровня). Поэтому я предпочитаю писать исключительно на ассемблере, хотя год назад для меня он был "темный лес". Теперь удается "сжать" чужую "пляску" в несколько раз(!). Вот только что "причесал" одну прошивку (после дизассемблирования). Код уменьшился с 13,8кБ до 5,5кБ при полном функциональном соответствии.

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


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

когдато писал на паскале. теперь 90% всего кода пишу на Си.

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


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

Программирование не люблю последнее время:)

Не смотря на это неплохо владею асмом, пишу под авр, пользуюсь одним из самых старых - АВР макроасм в.1.3.

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

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

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

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

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


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

Это мнение касается только АВР - и не только...

Вопрос ("Кто на чем чаще пишет для Avr и не только?"), конечно, важный!

Но не самый главный при разработке устройств - к нему мы ещё вернёмся.

Конструктору(радиолюбителю, разработчику...) Програмно-Аппаратных Комплексов(ПАК) важны некоторые "тонкости проектирования" с использованием МикроКонтроллеров(МК). Итак попробуем разобраться...

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

Далее разбивается задача на аппаратную и программную части. Чем больше будет решаться задача аппаратной частью - тем меньше остаётся для программной части (в этой части xmega здорово помогает).

После этого изучается вопрос минимального времени ответа устройства на внешние события.

Если это порядка 100..200мс - то лучше программировать на ЯзыкахВысокогоУроня(ЯВУ)- не забивать себе голову всякой ерундой(всё и так получится и, что будет сказано ниже, Вам это не нужно), а если критичное время АПК составляет, например, 1мс (при опросе других mega128, связью контроля на PC, командами на нижний уровень по иерархии RS485 ... ), то,конечно, Вы мой "слушатель и вниматель" (идея упёртости - зачем мне знать другое, если это можно сделать и на том, что я знаю и мне это лучше известно...? - mega128 - "Это же просто..."), потому,что если Вы не ушли на другой МК(xmega,ARM..) - Вы поймёте, почему никто в мире Widows не использует ассемблер..., а только Си(особенно) и прочие!

(

Тут необходимо немного отвлечься от предмета разговора и однозначно ответить на "больной вопрос о Паскале".

Паскаль - потокобезопасный! Это означает только одно - если Вы хотите сделать надёжное приложение(программу) в крачайшие сроки (без всяких прибабахов), то он Вам помощник уже на этапе составления(компиляции) программы - убережёт от многих ошибок уже на стадии написания исходников - типизация данных, проверка типов и т.д. И не путайте Delphi с ObjectPascal!

Дальнейшее продолжение Object Pascal - OBERON(Никлаус Вирт и его последователи) - он доступен в понимании и его описание есть на многих русско-язычных сайтах(engl даже для ARM7(2005)). OBERON набирает обороты, а Delphi - это отряд без командира...

)

Продолжение следует...

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


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

А зачем эта тема? Что-бы незнающим головы морочить?

Милостивый, погодите, продолжение последует!

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


Ссылка на сообщение
Поделиться на других сайтах
Goodefine    92
А зачем эта тема? Что-бы незнающим головы морочить?

...

Ааа... Ну просветите незнающих... Походу, истинный путь только Вам известен...

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


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

Что-то мне не нравится второй абзац данной статьи. Мне видится какой-то подтекст. К чему она призывает "незнающих"? Не заморачиваться с познаниями? Не развиваться как специалистам, изучая разнообразные типы МК? Это очень похоже на речь конструктора, но не радиолюбителя. Хотя если второй, почти всегда бывает первым, то первый далеко не всегда бывает вторым.

Извини, gvl, но я тебя, честно, не понял. Значит, "зачем забивать себе голову всякой ерундой", достаточно познать элемент 2И-НЕ и ты уже "цифровик"? Ведь на нем (2И-НЕ) можно собрать большой набор схем различного направления. Вот только габариты могут быть огромные (как ресурсы, сжираемые Windows). Все-таки, для правильного выбора МК, радиолюбитель должен знать все типы, из которых будет выбирать тот или иной для своей, конкретной схемы. Опять же не все радиолюбители в домашних условиях (не путать с производственными возможностями конструктора) могут позволить приобресть себе, перечисленные тобой, типы МК. Просто их нет в продаже, в их местности. Вот поэтому на форуме есть всякие МК (кто что нашел). И чем больше человек их познает, как я думаю, тем лучше. Больше у "корифеев" будет конкурентов. :) И это хорошо.

  • Одобряю 1

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


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

Goodefine “А оно надо?...”

Конечно надо! Сам был в этой ситуации и не мог получить ответ на вопрос “На чем программировать?”. На этом форуме – тоже не увидал. Встречный вопрос – он же ответ: “Почему количество просмотров этой ветки так велико?”.

Геннадий

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

"Зачем забивать себе голову всякой ерундой" - наверно фраза не доскональная, но в общем верная. Например, зачем разбираться в организации работы SPI в каждой конкретной ситуации или как сделать обработку квадратурного датчика с частотой 150 кГц...

МК – это инструмент для достижения поставленной задачи – чем лучше Вы владеете инструментом – тем больший круг задач Вы сможете решить (мастерство не утаишь!). Если Вы знаете досконально несколько МК – честь Вам и хвала.

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

  • Не одобряю 1

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


Ссылка на сообщение
Поделиться на других сайтах
Goodefine    92
...Конечно надо! Сам был в этой ситуации и не мог получить ответ на вопрос “На чем программировать?”. На этом форуме – тоже не увидал...

И не увидите. Тем более не дадите. По той простой причине, что однозначного, верного ответа на нет. И не только на этот вопрос...

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: 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?
  • Сообщения

    • "Вздутики" - это лечение гриппа зеленкой.
      Измериловкку в руки и вперед.
    • Можно и без строба. Данные выдавать быстро, но редко. Засветкой сегментов во время передачи можно будет пренебречь.
    • Так банили уже меня. Я заново зарегистрировался. Не пойму ничего. Может я проклят? Почему меня потом опять забанят? И скажут что я тролль_? Не знаю. Если нельзя создавать темы даже в курилке, то чтьо уже и говорить уже!  Что я такого сделал типа? Вы думаете что я типа один такой, да? Я ходил по другим сайтам и стал таким же, как и те люди что на сайтах. Ну лядно. Так как я уже признался что я нарушил правила меня забанят и второй раз.  Я не наркоман вроде бы. И не алкоголик (хотя иногда так хочеться выпить типа боярышника!). Хоть я и пишу идиотские тексты в вопросах, я вроде бы не нарущаю правила форума .  Ну тогда я здесь не задам своих идиотских вопросов. Правда, знаю я физику или нет Вы никак не сможете узнать и это не имеет никакого значения в тех схемах что я спрашивал. я хотел спросить. дпайте плиз ссылку на пару на Ваший взгляд идиотских формов где можно задавать мои вопросы!
    • Сделай флаг, который будет выставляться при нажатии кнопки. Например: uint8_t blink = 0, press = 0; if(BUTTON_PRESS){ if(press == 0){ press = 1; blink = !blink; } _delay_ms(100); }else{ press = 0; } if(blink){ мигаем } Тут одно нажатие кнопки будет включать мигание, а второе выключать. Переменная press сделана для того, чтобы при удержании кнопки blink не щелкался по кругу.
    • у меня нет достаточно большой коллекции наушников - так померяйте, хотя бы, те, что есть. У друзей на пол часа одолжите. Даже небольшой практический опыт будет ценнее, чем куча беспочвенных догадок.
    • Комрады!   Как на базе, например, Atmega8 сделать устройство с аналоговым входом, который будет принимать сигнал в диапазоне от -10 до +10В с полосой пропускания 100 Гц? Что нужно, кроме делителя напряжения? Как сделать так, чтобы МК понимал, что ему на вход пришло, скажем, именно -4В, а не  +4В?