Специальные цены   новые товары
Закрытая тема
Показано с 1 по 13 из 13

Вопрос к знатокам AVR Studio. Прошу помощи.

Тема раздела Самодельная электроника, компьютерные программы в категории Общие вопросы; Всем привет! Предистория: Захотелось сколотить очередной девайс помимо самоля... Взял на пробу клон Ардуино Нано. Вдоволь накопавшись в нем понял ...

  1. #1

    Регистрация
    28.03.2007
    Адрес
    Клязьма, МО
    Возраст
    35
    Сообщений
    1,178
    Записей в дневнике
    4

    Вопрос к знатокам AVR Studio. Прошу помощи.

    Всем привет!

    Предистория: Захотелось сколотить очередной девайс помимо самоля... Взял на пробу клон Ардуино Нано. Вдоволь накопавшись в нем понял что для "взрослых" проектов надо пересаживаться на голые камни. С МК пока на "вы", т.к. дело для меня новое. Закачал себе AVR Studio последний релиз, покрутил, потыкал, поизучал... Вопрос собсно простой и незамысловатый: глядя на примеры из инета натыкаюсь на кучу разных операнд и обозначений, коих в C отродясь не видел. Я так понимаю что авр студио заточена на то, чтобы регистры проца там так и обзывались, правильно? Где можно посмотреть библиотеку используемых инклюдов и прочих функций для авр студио? И где можно посмотреть все команды для МК из авр студио? Курил долго хелп, так ничего и не нашел... Прошу помощи у опытных и знающих людей. Ассемблер не предлагать, слишком ленив для него

    Заранее весьма благодарен!!!

  2.  
  3. #2

    Регистрация
    15.09.2007
    Адрес
    Москва
    Возраст
    62
    Сообщений
    223
    Студия хороша для отладки , работать удобнее в IAR.

  4. #3

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    57
    Сообщений
    11,570
    Когда-то (где-то в 1985 году) один умный и добрый человек пытался подарить мне две книжки в белом мягком переплете. Обе назывались "ОС ЕС ЭВМ". Одна по Ассемблеру, вторая по Фортрану-4. И я ему сказал:
    Цитата Сообщение от Петруччо Посмотреть сообщение
    Ассемблер не предлагать, слишком ленив для него
    и взял только ту, которая по Фортрану. Прошло много-много лет, на протяжении которых Ассемблер мне не был нужен. Потом появились доступные МК и
    Цитата Сообщение от Петруччо Посмотреть сообщение
    Захотелось сколотить очередной девайс...
    Добрые (и грамотные) люди посоветовали язык высокого уровня (Паскаль от Microe), учить практически ничего не пришлось, прогу написал за день, но камня не хватило . Поэтому пришлось перебороть лень и нехватку времени и лезть в AVR Studio (подходов было не меньше пяти). В результате та-же задача поместилась в треть ресурсов камня. Что касается названий регистров, они лехко переименовываются директивой .def. Изучение начинал с книжки Джона Мортона "Микроконтроллеры AVR. Вводный курс". Там-же есть описание команд. А полный перечень команд для конкретного камня содержится в его даташите на Атмеловском сайте.
    Удачи.

  5. #4
    Учит правила
    Регистрация
    15.05.2009
    Адрес
    Москва
    Возраст
    54
    Сообщений
    1,672
    Цитата Сообщение от Петруччо Посмотреть сообщение
    Закачал себе AVR Studio последний релиз
    глядя на примеры из инета натыкаюсь на кучу разных операнд и обозначений, коих в C отродясь не видел
    Я не сильно большой знаток AVR Studio, но мне он известен только как компилятор ассемблера и дебагер с пошаговой трассировкой (на модели или на живом камне). Си там, вроде как, совсем отсутствует.

    А если в AVR Studio идет отладка по исходнику Си (через файл COFF или что-то аналогичное), то... Из какого Си (IAR, WinAVR, CVAVR) пришло, то и будет. Они, конечно все из себя Си, но сильно разные (на мой взгляд).

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

    Человеку, не планирующему заниматься микроконтроллерами профессионально, я бы посоветовал работать в CodeVisionAVR С. Понемногу пользуюсь им где-то с 2000 года. Есть по нему книжки вполне неплохие.
    Но тамошняя простота развращает. Несколько раз пытался делать что-нибудь (точнее сказать, перетачивать чужие проекты) в WinAVR - мозги рушатся
    Последний раз редактировалось EagleB3; 14.07.2011 в 10:40.

  6.  
  7. #5

    Регистрация
    28.03.2007
    Адрес
    Клязьма, МО
    Возраст
    35
    Сообщений
    1,178
    Записей в дневнике
    4
    В том-то все и дело, что на начальном этапе не хочется сразу себя губить простотой, а хочется подойти глубинно к изучению вопроса. Я уже с этим столкнулся когда стал ковыряться с ардуиной.
    В авр студио стоит компилятор GCC, в принципе тот же WinAVR. Понимает обычный язык С. В том-то и дело, что сейчас разрабатываю проект под ATmega32, система команд есть, но на ассемблере, на сях в принципе не встречал, тем более под авр студио. Пока что усилинно курю исходники со всяких сайтов, с каждыс днем вопросов все больше
    Спасибо всем кто откликнулся!

  8. #6
    Учит правила
    Регистрация
    15.05.2009
    Адрес
    Москва
    Возраст
    54
    Сообщений
    1,672
    Цитата Сообщение от Петруччо Посмотреть сообщение
    компилятор GCC, в принципе тот же WinAVR. Понимает обычный язык С
    Нету в природе "обычного С".
    Если считать "обычным" ANSI C,
    то он похож на CVAVR С (что лучше знаю, с тем и сравниваю), наверное, как шведский язык на немецкий.

    Отличия именно в том, что все AVR'овские языки заточены под архитектуру процессора. Это сверх того, что все "микропроцессорные" языки заточены под MCU.

    ATMega32 - она и в Африке ATMega32; выбирайте себе среду разработки (если хочется глубин глубинских, то присоединяюсь к совету МиГ17 про IAR), курите евонные мануалы, портируйте на него ваш проект - за одно и проект изучите до тонкостей.

    Библиотеки, инклайды - это все относится к компилятору; среда-компилятор-библиотеки связаны и порознь их штудировать, или смотреть на инклайды от IAR чтобы вставить их в CVAVR - дело неблагодарное.

    Хорошая справка по ассемблеру для АВР есть вот здесь:
    http://dfe3300.karelia.ru/koi/posob/...avrasm-rus.htm

    Книжка вот, на первый взгляд полезная (для средне-начинающего, КМК). Там и язык, и увязка с архитектурой, и некоторые конкретные приложения:
    http://www.programmer-lib.ru/assembler.php
    Последний раз редактировалось EagleB3; 14.07.2011 в 12:41.

  9. #7

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    3,555
    Записей в дневнике
    1
    Начинать надо с мигания лампочками, дальше всё в принципе просто. Ща я тут всё всем расскажу и получу много пряников

    AVR Studio использует WinAVR, адаптацию GCC под атмеловские процы.
    Синтаксис Си соблюден, так что можно спокойно писать на C, как на обычном большом компуке.

    Все специфические названия регистров и прочие неизвестные буквы типа ADCSRA, PORTB и прочее - названия портов проца, с которым работаете.

    Вот такой вот, например, код на Си:

    DDRB = (1<<DDB0) | (1<<DDB1) | (1<<DDB2);

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

    А вот такой вот код

    PORTB = 0b00000101;
    PORTB = 0b00000000;

    выведет на ноги 0 и 2 порта B логические единицы, а через 2 клока проца опустит обратно в 0.
    Каждый порт (PORTA, PORTB и т.д.) отображен на общее пространство памяти как восьмибитное число. Записав в порт один байт, Вы можете сразу поменять состояние всех восьми ног порта.

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

    То есть, пишут там в программе из интернета что-то в регистр ADCSRA - лезете в доку, ищете ADCSRA, видите, что это регистр, контролирующий работу встроенного АЦП, и смотрите, какой бит регистра за что отвечает, и делаете выводы, зачем авторам программы это было нужно.

    Вот такой вот код будет бесконечно часто-часто мигать лампочкой на пине 0 порта А:

    unsigned int i;
    void main(void)
    {
    DDRA|=0x01;
    while(true)
    {
    for(i=0;i<50000;i++) // пауза
    {
    asm("nop"); // ничего не делаем
    }
    PORTA|=0x01; // зажигаем лампочку
    for(i=0;i<50000;i++) // пауза
    {
    asm("nop"); // ничего не делаем
    }
    PORTA&=~(0x01); // гасим лампочку
    }
    }

    Ну а, в принципе, если планируется делать проекты небольшие и незлые, то Си хватит за глаза. Если нужен жесткий контроль над ресурсами проца и 100-процентное их использование, то без ассемблера никуда.
    А, вообще, если хочется что-то более-менее серьезное в будущем на проциках делать, то лучше не тратить время на AVR, а сразу начинать с АРМов. Вначале дороже, труднее и дольше, чем AVR, но потом жизнь сииильно легче
    Будете возиться с AVR - спрашивайте, помогу
    Последний раз редактировалось smalltim; 15.07.2011 в 06:03.

  10.  
  11. #8

    Регистрация
    28.03.2007
    Адрес
    Клязьма, МО
    Возраст
    35
    Сообщений
    1,178
    Записей в дневнике
    4
    Smalltim, жаль кнопочку "спасибо" только 1 раз нажать можно
    Спасибо огромное!!!!!!! Я все-таки раздобыл себе IAR на всяк случай, пусть будет, но АВР студио мне как-то больше по душе... Книжеца по азму у меня уже давно лежит, чуйствуется что в ближайшем времени придется ее очень штудирен Я еще со школльных лет как-то исторически сложилось кодил на С++ и С, т.к. асму нас не учили отродясь.
    До армов вряд ли дорасту, мне обычных риск камней за глаза будет. Пока что помучаю 32ю мегу))

  12. #9
    Учит правила
    Регистрация
    15.05.2009
    Адрес
    Москва
    Возраст
    54
    Сообщений
    1,672
    Не для обращения в свою веру, а чисто для общего представления.
    Вот так кусок для моргания диодом на на пине 0 порта А создается в CVAVR:

    Сначала камень конфигурируется во встроенном туле CodeWizardAVR (тип, частота кварца и ножка "0" порта А на выход:

    Нажмите на изображение для увеличения
Название: CvavrWizard.png
Просмотров: 138
Размер:	13.3 Кб
ID:	524493

    Дальше Wizard генерирует код инициализации в соответствии со сделанными настройками (всего в данном примере получилось 129 строк, которые я удалил), и заготовку под программный блок main. Бесконечный цикл создается внутри Main автоматически.

    Мне остается добавить в этот код 5 строк (мои строки выделены жирным шрифтом; весь тонкий шрифт сделан Визардом):

    ========================================================

    #include <delay.h>

    while (1)
    {
    // Place your code here
    PORTA.0=1;
    delay_ms(250);
    PORTA.0=0;
    delay_ms(250);

    }
    }

    ========================================================

    Получаю меандр с частотой 2Гц.

    Нажмите на изображение для увеличения
Название: ProteusSample.png
Просмотров: 109
Размер:	10.2 Кб
ID:	524495

    Я же говорю - развращает...

  13. #10

    Регистрация
    28.03.2007
    Адрес
    Клязьма, МО
    Возраст
    35
    Сообщений
    1,178
    Записей в дневнике
    4
    Цитата Сообщение от EagleB3 Посмотреть сообщение
    Я же говорю - развращает...
    Наверное именно поэтому у меня стоит авр студио и CVAVR, но все-таки пока склоняюсь к студио, ну там посмотрим куда дальше бежать. Так или иаче - первым делом покурить даташит на камень, потом step-by-step реализация.

  14. #11

    Регистрация
    08.11.2009
    Адрес
    Екатеринбург
    Возраст
    36
    Сообщений
    5,330
    Цитата Сообщение от EagleB3 Посмотреть сообщение
    PORTA.0=1; delay_ms(250); PORTA.0=0; delay_ms(250);
    За что я люблю С, так это за то, что не надо писать цифры.

    PORTA.0=~PORTA.0;
    delay_ms(250)

  15. #12
    Давно не был
    Регистрация
    28.12.2010
    Адрес
    Heidelberg, germany
    Возраст
    44
    Сообщений
    307
    Вот не удержусь и вставлю свои коменты.

    1. Какая вам разница, каким средством отладки Вы пользуетесь?
    Средство отладки оно и есть средство отладки. У всех у них есть стандартный набор функционала который необходим разработчику.
    Отмечу основные: загрузка и запуск программы и пошаговая отладка с отображением ресурсов процессора (регистров, памяти и т.д.). Все.
    Все остальное уже навороты. На пример некоторые средства отладки, самые отстойные, позволяют отлаживать только ассемблер. Эти средства отладки мы за средства отладки считаь не будем. Если у вашей avr studio нет встроенного С компилятора и возможности отладки С кода, то нафига такое средство? Для чего?
    Нормальные средства отладки должны подерживать пошаговую отладку С.

    2. Хорошо когда в компиляторе есть встроенная поддержка специфических особенностей процессора, на пример определение функции прерывания или доступ к регистрам. Но, нормальный компилятор должен ВСЕГДА понимать ansi C. Без этого такой компилятор просто не нужен. Вы же не будете переписывать все стандартные С библиотеки заново?
    Да, еще, с компилятором должны идти и стандартные библиотеки. Без низ это то-же не компилятор.

    3. Никогда целенаправленно не изучайте ассемблер!
    Не в смысле что никогда не надо использовать ассемблер, а в смысле что не надо его изучать. Ассемблер это очень специфическая штука и использование ассемблерных кусков кода дляннее чем несколько строк не имеет смысла для разработчика шикорокого профиля. На ассемблере пишут библиотеки и пишут их специальные люди. Да и знание всего ассемблера для их написания не нужно.
    Вам оно надо?
    При необходимости использовать ассемблер Вы просто можете открыть мануал, найти нужные Вам инструкции, вставить их в код, отладить и потом забыть как они называются. Вот я писал куски кода на ... минимум на 10 разных ассемблерах. Даже библиотеки обработки сигналов писал, но я ни одного не помню. Потому что написание библиотеки, даже самой сложной занимает максимум пару месяцев. А написание всего приложение занимает в среднем год.

    4. Не надо выбирать проект под процессор. Выбирайте процессор под проект.
    Этих контроллеров сейчас просто море. Берите контроллер с запасом и по быстродействию и по памяти. И пишите все на С. Используйте стандартные библиотеки и т.д.
    100 % использование ресурсов нужно только тогда, когда Вы планируете выпускать изделее партией не менее 100.000 штук. Вот тогда да, имеет смысл заморачиваться с ассемблером и ресурсами, и то, большой вопрос . В противном случае время, которое Вы затратите на оптимизацию будет стоить дороже чем процессор с избыточными ресурсами.

    5. Начиайте работу с процессором с подбора и запуска на нем RTOS, пусть и самой простой (на пиках это ОСА на других другое). Звучит конечно смело, но поверьте, этот шаг сильно экономит время. Наличие ОС вы можете и не замечать, но когда будет нужно, она очень пригодится.

    6. Самое главное.
    Разделяйте процессоро зависимые куски кода и универсальные. Т.е. используйте уровень драйверов с универсальным интерфейсом. Это позволит Вам во первых гараздо быстрее все реализовывать, а во вторых повторно использовать уже написанные куски.


    Ну а по поводу AVR Studio, то если она поддерживает С и его тладку, и самое главное, она Вам нравится, то используйте ее. Если не нравится или в ней чего-то нет, то найдите то что будет нравится.

  16. #13

    Регистрация
    28.03.2007
    Адрес
    Клязьма, МО
    Возраст
    35
    Сообщений
    1,178
    Записей в дневнике
    4
    Хайдельбергу привет! Как там Schloss? Восстанавливают потихоньку?

    1. Еще раз спасибо за ясное объяснение. Значит будет авр студио и баста, там есть полноценный С компилятор + возможность вставок на асме.
    2. Т.к. я не знаю реально сколько памяти и процессорного времени съест прога, то пока взял (всеравно ведь на "вырост", пока дорасту...) 32ю мегу. Мало будет - возьму тогда 128ю, благо есть где по нормальным ценам.
    3. до RTOS еще дорасти надо, я пока пионЭр в МК...да и язык, которому давно уже уделял тонну времени подзабылся, сейчас литературку покуриваю параллельно.

    Вот все-таки, мир не без добрых дюдей

Закрытая тема

Похожие темы

  1. Ответов: 13
    Последнее сообщение: 08.09.2011, 11:07
  2. Прошу помощи, что за схемка
    от Injener1978 в разделе Электродвигатели, регуляторы, аккумуляторы, зарядники
    Ответов: 6
    Последнее сообщение: 07.06.2011, 21:40
  3. Вопрос к знатокам импеллеров.
    от Дим Димыч в разделе Импеллерные модели, импеллеры
    Ответов: 25
    Последнее сообщение: 24.01.2011, 08:40
  4. Вопрос к знатокам регулей!
    от soundparts в разделе Электродвигатели, регуляторы, мотоустановки
    Ответов: 11
    Последнее сообщение: 27.10.2010, 14:02
  5. Прошу помощи в выборе внедорожника.
    от anton659 в разделе Авто Off-Road
    Ответов: 53
    Последнее сообщение: 08.08.2010, 21:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения