Любопытен. Ленив. Вреден. Смотрите профиль.
0,2
рейтинг
15 сентября 2012 в 22:56

Альтернатива Wiring для Arduino — BASCOM-AVR tutorial

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



Установка

Идем на Офсайт, или просто переходим по второй ссылке в конце топика — сразу начнет загружаться демо-версия среды(30Мб). Демо всего лишь означает, что она позволит собирать проекты, чей вес в скомпилированном виде не превышает 4Кб. Для большинства проектов этого хватает(ага, особенно для Attiny2313), а если нет — кряк для последний версии на рутрекере придется купить, благо он стоит не очень дорого — 89 евро.
Установка совершенно обычная, если у кого-то не запускается в Win7 и выше — установите режим совместимости с XP. Под вайном работает совершенно нормально. Собственно, можно и не устанавливать — просто скопировать папку, вполне себе portable-версия.

Использование

Основное окно:

Все кнопки снабжены подсказками, и думаю нет нужны пояснять что и где находится.
В последних версиях ее очень пристойно перевели на русский язык, который можно включить в Options — Environment — IDE — Language — Russian.

Вот у меня завалялась копия платы Arduino Nano, которую я долгое время использовал при отладке, прошивая напрямую, через разъем программатора, из-за нелюбви к Arduino IDE.

Попробуем что-нибудь написать для нее. Для начала необходимо установить тип МК — Atmega168, делается это вот такой строкой:
$regfile = "m168def.dat"    

Почему строка такая, думая понятно. Конечно, установить тип контроллера можно и в Настройки — Компилятор — МК, но в тексте удобнее. Посмотреть как называются файлы для разных контроллеров можно в папке с программой(c:\Program Files\MCS Electronics\BASCOM-AVR\*.dat).
Устанавливаем тактовую частоту:
$crystal = 16000000 

16МГц. Ни на что не влияет, кроме отсчета временных промежутков(waitms). Не устанавливает частоту для контроллера. Ее вы по прежнему должны выставлять сами, программирую Fuse-блок. Впрочем, для Arduino этим можно и не заморачиваться.
Конфигурируем порты:
Config Portb.5 = Output   

Никаких номерных пинов, только хардкор. Смотрим в даташит конкретному контроллеру, и видим имена портов:
image
PD1 = portd.1, pb4 = portb.4
Можно и устанавливать каждый порт по отдельности, а просто написать: Config Portb = Output

Запускаем безусловный цикл(можно и без него, тогда программа выполнится только один раз при запуске контроллера)
Do
Loop


И внутри него, например, моргаем светодиодом:
  Toggle Portb.5   

Portb.5 это тоже самое что pin 13 в ардуине. Соответствия(если вы привыкли к такому наименованию портов) можно посмотреть здесь:
image

Синтаксис очень простой и напоминает basic. 7 типов переменных: Bit, Byte, Integer, Word, Long, Single, String.
Которые обьявляются в начале программы вот так: Dim A as Single
Очень простое подключение к экранам на контроллере HD44780:
Config lcd = 16*2
Config lcdpin = PIN, DB4 = PORTB.1,DB5=PORTB.2,DB6=PORTB.3,DB7=PORTB.4,E=PORTB.5,RS=PORTB.6
Config lcdmode = PORT

И такой же простой вывод на них текста:
Lcd "Hello, habr! " ; time

Но несмотря на простоту, есть управление курсором, встроенный редактор символов, поддержка кириллицы.
Простая генерация звука:
Sound, Portb.0, 100, 500

Что означает, выдать на PB0 меандр частотой 500гц и длительностью 100мс.
Генерация тонов DTMF:
Dtmfout, 15, 100

15-й тон в течении 100мс.
Работа с UART(как с железным, так и программным):
Dim Name as String * 10
$Baud = 9600
Input "Hello, print you name", Name
Print "Name: " ; Name

Работа с прерываниями:
On Int0 Button - Имя подпрограммы
Config Int0 = Low Level - Прерывание по низкому уровню
Enable Interrupts - Включить прерывания
Enable Int0

Button:
  Incr Cntr
Return

С таймерами:
Config Timer0 = Timer , Prescale = 64 - Настраиваем таймер и предделитель
On Timer0 Pulse: - Имя подпрограммы
Enable Interrupts - Включить прерывания
Enable Timer0

Pulse:
  Incr Cntr
Return


Прошивка Arduino

В последней версии разработчики добавили поддержку загрузчика Ардуины, и нам необходимо только сделать несколько настроек.
Options — Programmer — ARDUINO. После чего указать com-порт, и скорость.

В моем случае скорость надо было обязательно указать именно 19200, иначе плата не прошивалась. Посмотреть параметры всех плат можно в файле по адресу arduino-1.0.1\hardware\arduino\boards.txt
Кстати, там же есть и размер памяти, и частота кристалла:


nano.name=Arduino Nano w/ ATmega168
nano.upload.maximum_size=14336
nano.upload.speed=19200
nano.bootloader.low_fuses=0xff
nano.bootloader.high_fuses=0xdd
nano.bootloader.extended_fuses=0x00
nano.build.mcu=atmega168
nano.build.f_cpu=16000000L


Альтернативный способ загрузки(мне не нравится встроенный прошивальщик своей медлительностью) — с помощью AVRDUDE, мощнейшего консольного программатора.
Скачиваем последнюю версию вот отсюда , например avrdude-5.11.tar.gz. Распаковываем в папку с программой.
Идем в Options — Programmer — External Programmer, и указываем в после Programm путь до исполняемого файла:
«C:\Program Files\MCS Electronics\BASCOM-AVR\ARVDUDE\avrdude.exe»
А в после ниже — параметры в таком виде:
-C «C:\Program Files\MCS Electronics\BASCOM-AVR\ARVDUDE\avrdude.conf» -p atmega168 -P com2 -c arduino -b 19200 -U flash:w:{FILE}:i
Все понятно из названий, показываем где лежит конфиг, указываем тип контроллера, порт, протокол, скорость, работа с флешем, запись, и файл. Ставим галочку Use HEX file.
Для пущей радости можно отметить и пункт Program after compile — чтоб скомпилировать и прошить одной кнопкой.
При сборке показывается потребление программой доступного флеша:

А потом запускается ARVDUDE:


Еще сбоку можно включить справку по пинам выбранного контроллера(есть по умолчанию, а если нет, то включается View — Pin Layout):

При наведении курсора на пин, показывает его имя и описание.
Если этого недостаточно, то можно скачать даташит и включить View — PDF Viewer:


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

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

А на сладкое — код, компилируемый в bascom значительно меньше по размеру и выполняется часто быстрее, чем код от Arduino IDE.
Например, стандартный blink(мигание светодиодом):
Для Arduino:
void setup() {                
  pinMode(13, OUTPUT);     
}
void loop() {
  digitalWrite(13, HIGH);
  digitalWrite(13, LOW); 
}

Компилируется в hex размером 3078(!!!) байт, и дергает пин с частотой 210кГц:


А в Bascom, записанный вот так:

$regfile = "m168def.dat"
$crystal = 16000000
Config Portb.5 = Output
Do
  Toggle Portb.5
Loop

Занимает 553 байта(в пять раз меньше) hex, и мигает уже с частотой 1,6МГц:


Ссылки:

Влад @vvzvlad
карма
320,0
рейтинг 0,2
Любопытен. Ленив. Вреден. Смотрите профиль.
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (75)

  • 0
    Чем мерялись и рисовались такие красивые осциллограммы?
    • +3
      Цифровым осциллографом, вестимо. У Di Halt какой-то Rigol есть, в его статьях на easyelectronics скриншоты похожие.
      • +2
        Ага. Я про него напишу на днях
  • +1
    Строчка:
    $crystal = 16000000
    влияет еще и на правильность установки скорости UART.
    • +1
      Точно, забыл. Там еще можно прикинуть процент ошибок в зависимости от частоты кристалла и скорости уарта:
      • +1
        Это не процент ошибок — это просто несовпадение частоты от идеальной. UART небольшие ошибки (порядка процента) переживает без ошибок в передаваемых данных.
        • +2
          Где ты этот топик откопал?))
          • 0
            Я твой бложик читал в ЖЖ, там были ссылки на посты :-)
  • 0
    Подозреваю, что если в Arduino IDE написать код, работающий с портами напрямую, то получится ничуть не хуже по частоте.
    • 0
      Это как? Со вставками на асме?
      • +1
        Нет, это без digitalWrite, которая выполняет поиск номера порта по таблице и проверяет границы массива.

        PORTB ^= 1<<5;
        • 0
          Ага, 1351 байт, 500килогерц.
          • +3
            Я думаю, что это сравнение некорректно.
            553 байта против 1351 это много или мало?
            Эти лишние жирные байты от arduino берутся из-за того, что она всегда инициализирует UART'ы и таймеры. При тех флагах компиляции, что там установлены, код, который не используется в программе, в нее не попадет.Это значит, что разница не в 2.4 раза, а на 798 байт. Причем BASCOM выигрывает за счет того, что ваш проект не использует таймеры и uart.
            1,6МГц VS 500килогерц.
            Я дуумаю, что дело в том, что вы испольузете хитрую команду «сменить значение регистра», которую можно оптимально написать используя команды SBIS, SBIC, CBI и SBI. В BASCOM примитив toggle есть и он оптимизирован. В языке C его нет. И не всегда компилятор может догодаться, что надо использовать хитрые команды. Насколько я знаю, PORTB |= 1<<5; в SBI gcc превращать умеет. Т.е. если бы вы использовали только установку в высокий и низкий уровень, то производительность была бы одна и та же. А более редкий случай «переключить пин» действительно не оптимизирован.
            • 0
              Ну, говорить про разницу ВСЕГДА в 798 байт тоже некорректно, может код действительно более оптимален. Надо собрать два идентичных проекта с уартом, экраном и проверить.

              Ладно, записал как
              Do
                Portb.5 = 1
                Portb.5 = 0
              Loop
              

              Те же 553 байта, но частота возросла до 2,3мегагерц, гг.


              • +2
                Много бы сказали дизасмы обеих вариантов прошивки.
                • 0
                  Ага. Возьметесь? Я не настолько знаю асм, чтоб что-то понять.
                  • 0
                    Можно попробовать ради лулзов.
                    • 0
                      BASCOM:
                      1.hex
                      Do
                       Portb = 0
                       Portb = 255
                      Loop
                      


                      2.hex
                      Do
                      Toggle Portb.5
                      Loop
                      


                      Arduino:
                      3.hex
                      void loop() {
                      digitalWrite(13, HIGH);
                      digitalWrite(13, LOW); 
                      }
                      


                      4.hex
                      void loop() {
                      PORTB ^= 1<<5;
                      }
                      


                      5.hex
                      void loop() {
                      PORTB=1;
                      PORTB=255;
                      }
                      


                      6.hex
                      void loop() {
                        while(1){
                      PORTB=1;
                      PORTB=255;
                      }
                      }
                      


                      C:
                      7.hex
                      while (1)
                      {
                      PORTB.5=1;
                      PORTB.5=0;
                      };
                      }
                      


                      Архив

                      • +1
                        Забавно получается, С (номер 7) я недооценивал, культурненько выглядит, а вот насчет бейсика я почему то и не сомневался, что он почти асм, только читабельнее :)
                        Предварительно: баском (1 и 2) — приятный глазу ассемблер, С (7) аналогично. Лишнего ничего нет, если прерывания не используются — в коде относительно их тишына. Огласите, пожалуйста, сишный компилятор.
                        С ардуиновскими (3-6) не все так просто. Во всех программах обработка переполнения таймера0, хотя он не используется. Структура кода — куча подпрограмм, иногда рвущихся на куски (несколько инструкций, джамп в другое место, еще пара инструкций, возврат обратно). Я называю такое «Lite C» подобным кодом, т.к. впервые столкнулся с таким ужасом кодом в прошивке под pic18 и в ней была сигнатура Lite C :)
                        Однако можно написать отдельный пост на эту тему, или останемся в комментариях, как вы думаете?
                        • 0
                          Конечно стоит, очень интересно.
                          • +1
                            Int сказал — Int сделал. habrahabr.ru/post/151587/
                            Надеюсь, социального самоубийства не произойдет :)
                        • 0
                          CVAVR компилятор.
              • +1
                Ну, говорить про разницу ВСЕГДА в 798 байт тоже некорректно, может код действительно более оптимален. Надо собрать два идентичных проекта с уартом, экраном и проверить.

                А я и не говорил, что она всгде бвдет такой. Сделать две одинаковых программы не получится. Слишком много надо учесть, чтобы функционал действительно оакзался одинаковым. В таких случаях пропускают сгенерированный код через дизассемблер и смотрят на код, сгенерированный для интересующего участка.
                И еще очень большой вопрос, что вы называете оптимальным кодом? digitalWrite из wiring не оптимален т.к. он работает очень медленно? Зато он проверяет не включен ли PWM и т.п. Он прощает ошибки новичков. В этом смысле он оптимален. Поэтому при любом сравнении сначала надо ввести критерии сравнения.
                Те же 553 байта, но частота возросла до 2,3мегагерц, гг.

                Ну и что? Почему когда вы тестируете C программу, вы внутрь цикла включаете вызов функции, а для BASCON не включаете? Чтобы получить одинаковый код вместо вот этого:
                void loop() {
                digitalWrite(13, HIGH);
                digitalWrite(13, LOW);
                }

                напишите цикл руками. Если вам не нужны проверки из digitalWrite, воспользуйтесь низкоуровневыми макросами sbi и cbi, должны получить производительность такую же, как BASCOM. Измерить что-то осцилографом мало, надо еще понять, почему результат получится такой, какой он есть. И надо обосновать корректность измерения.
                • 0
                  >>Если вам не нужны проверки из digitalWrite, воспользуйтесь низкоуровневыми макросами sbi и cbi, должны получить производительность такую же, как BASCOM.

                  А можно вставку на асме еще. Дело не в том, что где-то нельзя получить оптимальный код, это наверняка возможно. Только вот обычный человек не будет этого делать, он прочитает руководство и напишет digitalWrite, который медленнее. Один, второй, третий, четвертый. А потом — «Вот тормоз ваш avr»
                  • +2
                    Вы самую главную мысль пропустили: вы не ввели критерий оптимальности. Проведу аналогию. Вы взяли две машины: ниву и болид формулы 1. После этого сравнили, какая из них быстрее доедет до вашей дачи. Естествено нива быстрее, а кроме того она вместительнее и намного дешевле. Нива лучше болида формулы один.

                    Не надо сравнивать digitalWrite и Portb.5 = 0. Это разные операции и они делают разные вещи. И тем более не надо оправдывать сравнение некомпетентностью «обычных людей».
                    • 0
                      Хорошо.
                      PORTB=1;
                      PORTB=255;

                      Частота — 1мегагерц. Все равно два раза медленнее.
                    • +2
                      void loop() {
                        while(1){
                      PORTB=1;
                      PORTB=255;
                      }
                      }
                      

                      Частота 4мгц. 4 такта на переключение.
                      • +1
                        Проверил на железе — действительно 4 МГц:



                        Код:
                        void setup() {                
                          pinMode(0, OUTPUT);     
                        }
                        
                        void loop() {
                          while(1) {
                            PORTD=0;
                            PORTD=255;
                          }
                        }
                        • 0
                          Что-то заполнение не 50%.
                          • +1
                            А можно теперь растолковать, о чём вы тут вообще все говорили? :)

                            А если ещё кто-нибудь расскажет или хотя бы ссылку даст на разьяснение конструкции «PORTB |= 1<<5», я буду очень признателен.
                            • 0
                              О том, что arduino ide генерирует не самый оптимальный код, а при использовании digital write — вообще с большими задержками.
                              • +1
                                То есть в ходе разбирательств так и оказалось?
                                • 0
                                  Ага, это в начале было понятно, по частоте. Потом разбирались, почему это так.
                                  Вот тут с дизасмом: habrahabr.ru/post/151587/
                            • 0
                              По конструкции можно не рассказывать, уже нашёл.
                            • +1
                              Заполнение — это термин, относящийся к ШИМ. Имеется ввиду, что у меандра (сигнал прямоугольной формы) на скриншоте ширина импульсов не совпадает с шириной промежутков между ними.

                              PORTB |= 1<<5 — установить шестой бит в PORTB
                              1 << 5 — это сдвиг единицы влево (в сторону старших битов)
                              |= — присваивание с побитовым ИЛИ

                              Читается так:
                              PORTB = PORTB | (1 << 5)
                          • +2
                            Естественно оно не 50%. Оно же разворачивается в
                            установить низкий сигнал // 1 такт
                            установить высокий сигнал // 1 такт
                            безусловный переход на первую команду // 2 такта
                            

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

                            Если очень хочется выжать еще скорости, можно развернуть цикл и ассимптотически стремитсья к 8Мгц. Возможно с некоторыми флагами gcc аже это сделает сам. Только не понятно зачем. Ну и иногда будет чуть более длинный период из-за jmp. Кроме того, на arduino еще иногда будет отрабатывать прерывание таймера.
                            • 0
                              Иллюстрация:


                              Код состоит из повторений:
                              void loop() {
                                while(1){
                              PORTB=1;
                              PORTB=255;
                              PORTB=1;
                              PORTB=255;
                              
                              ...
                              
                              PORTB=1;
                              PORTB=255;
                              PORTB=1;
                              PORTB=255;
                              }
                              }
                              


                              Частота приближается к 8мгц. В гифе как раз виден на одном из кадров длинный период.
                          • +1
                            Заполнение не 50%, т.к. джамп (while(1))больше тактов занимает, чем запись данных, nop-ов там не хватает :)
                            • 0
                              Да, забыл что запись 1 такт занимает. После того, как посмотрел на листинги асма, вспомнил.
      • 0
        Помимо вставок на asm, баском умеет работать с регистрами напрямую. Поэтому если что-то не получается сконфигурировать, всегда можно открыть даташит на камень и подсмотреть.
  • 0
    Жаль немного синтаксис мозговыносящий, но если привыкнуть к нему… будет хорошей заменой!
  • +4
    Зачем?
    Весь понт ардуино в библиотеках и исходниках.
    Не нравится IDE? Возьмите библиотеки и вообще без проблем портируйте их в любую удобную среду разработки: ICC, AVRStudio, CodeVision, IAR, Eclipse — да что угодно. После этого залейте hex с помощью простой утилитки — Arduino Hex Uploader and Programmer
    • 0
      Я вот не люблю переключаться между приложениями лишний раз, поэтому написал себе свою утилку, в итоге из CodeBlocks прошивка выполняется в 1 нажатие клавиши.Можно встроить и в другие среды.
      Годится и не только для Arduino.
    • 0
      А какие библиотеки вам нужны? Программный уарт, работа с HD44780, SPI, I2C, 1-wire, даже работа с картами памяти — есть в стандартной поставке. Много разных модулей вроде работы с экранами от нокии и семисегментниками с динамической индикацией есть на форуме.

      А тонна исходников годится только на копипаст.
      • +2
        Вот хоть убей не пойму, в чем смысл-то этого? Переходить на бейсик — ради чего?

        Библиотеки эти есть и для С, причем куда больший список — безо всяких ардуинчатых ИДЕ, от которых вы стремитесь убежать, без бейсика — берете AVR-студию, подключаете эти библы, и получаете свой быстрый и высокооптимизированный код.

        Чего вам дает этот бейсик, чего не дает стандартная среда с этими библами?
        • +2
          Удобство. Все-в-одном, + понятный синтаксис. Я вообще не программист, мне лень учить С, я хочу мигающую лампочку.
          • 0
            Все в одном — это что именно?
            • +1
              Поставить среду и сразу что нибудь написать не подключая дополнительные библиотеки. Отладить на компе не устанавливая протеус.
              • –2
                Эмулятор — ну ладно, допустим, он тут лучше стандартного (хотя до протеуса ему всяко не дотянуться, так что лучше бы установить).

                Но «не устанавливая дополнительные библиотеки»… В нем точно такие же дополнительные библиотеки для работы с периферией, в чем разница? В том, что добрые дяди из MSC сами нажали кнопочку скачать и архивировать, чтобы приложить эти же библы к своему бейсику?
                Один клик мышью в самом деле стоит покупки/кряка левой среды, перехода на левый язык?
                • +1
                  Да нет конечно, я же не агитирую к переходу с Аврстудио на баском. Я предлагаю альтернативу убогому ардуино IDE, если его рассматривать в этом контексте — это шаг вперед.

                  А протеус умеет ставить бряки и изменять регистры в процессе отладки? Всмысле один, без студии.
                  • 0
                    Бряки точно умеет, регистры изменять — не помню, сто лет его не юзал.
                    Когда есть отладка на железе, все эти эмуляторы как то отходят на второй-третий-десятый план)
                    • 0
                      Только в младших тиньках нет жтага, пичалька.
                      • 0
                        Там почти везде debugWire
                        • 0
                          А его кто-нибудь кроме дракона умеет?
                          • 0
                            ICE II и ICE III должны уметь.
                  • 0
                    Регистры не умеет менять, вообще в программу вмешиваться не даст, на то и симулятор.
          • 0
            Wiring же выучили, не?
            • 0
              Неа, я его месяц назад увидел. Дальше копипаста не продвинулся
      • 0
        Пользуясь случаем спрошу: библиотеки 1-wire такие же как у всех — считать ID и температуру, или полный функционал, т.е. можно считать DS1992,DS1993?
  • 0
    Щас ардуинщики налетят и будут хаять за измену :)
  • 0
    Отображение корпуса микросхемы и названия её выводов очень полезная фича. Может как-то можно такое прикрутить к атмел студии?
  • +1
    Блин, шило на мыло Wiring на Basic.
    Какая нафиг, отладка, что тут отлаживать, мигание светодиодом, нарисованным?
    То что недоразработчикам открывают глаза на реалии микроконтроллера ИМХО хорошо, но человек вкуривший эту тему прекрасно освоится и в AVRstudio, и в чём угодно. И не надо про аццкий си и хадркорный ассемблер, для миганий светодиодами, и мата на жк-дисплейчиках, они не менее просты и понятны.
    • 0
      А что вы сказать-то хотите? Я предложил альтернативу IDE. Я знаю много человек, которые колются, но продолжают жрать кактус — пишут огромные программы без отладки и симуляции, наощупь, и не знаю ничего, кроме этого редактора-огрызка.
      Это для тех кто этим зарабатывает важен инструмент, а для тех, у кого это хобби или небольшие проекты для себя — важно только удобство.
      • 0
        Альтернатива — это хорошо. Сама Arduino IDE ужасна. Да и wiring весьма странная штука, которая начинает мешаться, если нужно сделать что-то сложное. Но wiring — это просто библиотека для C/C++. Когда «ардуинщик» вырастает из предложенных библиотек, он может отказываться от wiring постепенно, переписывая проблемные места.
        В случае же, когда предлагают альтернативу в виде адаптированного бейсика, то чтобы убедить в её удобстве нужно что-то большее, чем «лампочками можно мигать в 10 раз быстрее».
        • +1
          Там от бейсика пара команд и общий стиль написания, какая адаптация.
          Не всем надо вырастать, к тому же.
    • 0
      А вы дискламер читали для BascomAVR?
      Никто не говорит, что это среда профессионалов. Когда в 2004 г. столкнулся с этим софтом, то в описании читал, что разработка специально для школы и тп. Т.е., для ознакомления, первоначальных навыков, но никак не для повседневной работы.
      Это что-то типа тренажера.
      • 0
        В статье мне предлагают среду с basic подобным языком, позволяющую дергать пины быстрее, чем wiring. Это не достаточно мотивирует, чтобы пойти читать disclaimer.
        • 0
          В такой интерпритации, я с вами согласен. Мое отношение к этой среде — тренажер для школы/младших курсов универа.
          • 0
            А wiring для супер-профи?
            • 0
              Не знаю, не знаком с этой технологией. С 2004 года пользую для своих (just for fun) целей только AVR Studio. Зачем упрощать то, что и так максимально просто и гибко?
              • +3
                Ох, давайте я хоть тут развернуто отвечу. Это я не конкретно вам, а вообще всем, кто спрашивал о смысле программирования в баскоме.
                Посмотрите, пожалуйста, на заголовок. Я предлагаю альтернативу Arduino IDE, а меня, блин, пытаются убедить что чистый си или асм круче, типа все равно разбираться, какая разница в чем. Для меня есть разница. Я этим не зарабатываю на жизнь(хоть когда-то и хотел работать только с этим, но потом стало скучно заниматься чем то одним), и для своих проектов я выбираю то, что удобнее. Вот просто для меня.

                Я знаю на минимальном уровне и си, и асм, на уровне «чуть чуть поправить константы и логику в готовой программе», а изучать я хочу то, что проще, пусть оно и генерирует неоптимальный код, и вообще не труЪ, бейсик какой-то.
                Я не программист, я железячник, и в программировании даже не достигну того уровня, за которым возможности этой среды начнут меня ограничивать. Да и честно говоря(для вас же это не новость, правда?) выбор языка и среды — это далеко не самое главное в программировании, а так, где-то в конце плетется. Или вы считаете, что на асме нет ужасного кода по определению?
                Мне нравится среда, я написал о ней статью, в которой просто показываю возможности, я не хожу по всем топикам, посвященным микроконтроллерам и не доказываю всем, что баском — рулез, и надо выкинуть все ваши среды. ЕМНИП, я вообще не оставил ни единого комментария про него до этого топика, хотя участвовал в куче срачей про мк.
                Вы считаете что AVR Studio максимально проста и понятна? Так напишите про это, может быть я(и еще кто-нибудь) и изменят свое мнения. Я написал. А вы?
                • 0
                  Вот этот текст и в начало статьи бы. Чтобы сразу была видна цель обзора и количество вопросов было бы намного меньше.
                  • 0
                    Если бы это были вопросы… Я думал что количество людей, читающих заголовок чуток больше.
                • 0
                  Простите, если вас задели мои слова. Писал только свое личное мнение, без претензии к статье. Можете так же прочитать мой комментарий ниже. Мне было интересно узнать, как развилась эта среда за почти 10 лет с момента моего практического столкновения с ней в далеком 2004 г. И спасибо вам за это.
                  Все остальное — это всего лишь моя точка зрения, основанная лишь на том, что когда-то пошел другим путем, показавшимся мне, в то время, более понятным для меня лично. И все.
                  Для каждой задачи есть свои инструменты, и благодаря вам об одном из таких простых инструментов узнала широкая публика, за что вам и большое спасибо!
  • +2
    Знакомился с этой IDE в далеком 2004-м. Порадовали приятные изменения.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.