AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Jman »

ARV писал(а):
Rtmip писал(а):ARV,
СпойлерВы перепутали меня с Jman
возможно. отличить одного флудера от другого порой сложновато. если это доставило вам неудобства - прошу прощения, не принимайте близко к сердцу.

Вы адресовали это мне? Если да, то не собирался флудить. Задал конкретные вопросы. Получил ответы, другое дело, если некоторые товарищи начали холивар и нравоучения. Теперь по существу.
1. Только начал соображать как работать с портами в ATMEL Studio - очень даже интересно и на самом деле просто;
2. Забросил программу, начал как говорится с нуля. Писал различные мигалки для отладочной платы, дабы понять работу. (выражение PORTA |=(1<<PA1) - законно как и PORTA |=(1<<1)б);
3. #define F_CPU your_clock - не знал что должна быть выше всех хеддеров, иначе начинало матюкаться на бибку util/delay.h.
4. Деббагер - как много в этом звуке, как я мог упустить такое!!!
5. Работаю сейчас над прерываниями, ошибка - sei();!!!! Не ставил разрешение, и получал нерабочий код.
6. Работаю дальше над собой, буду пытаться переводить свой быдлокод из CVAVR в Студию.
Вывод: после CVAVR - Atmel studio показалось очень мощным инструментом с отладчиком. Вот думаю приобрести теперь JTAG отладчик для больших кристаллов.
ЗЫ: ни в коей мере нет желания заниматься флудерством...
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

Jman писал(а):выражение PORTA |=(1<<PA1) - законно как и PORTA |=(1<<1);
вместо (1<<x) рекомендую использовать "стандартный" для avr-gcc макрос _BV(x) - то же самое, но "стандартнее".

Jman писал(а):#define F_CPU your_clock - не знал что должна быть выше всех хеддеров, иначе начинало матюкаться на бибку util/delay.h.
скажите мне, кто учит начинающих этому - я ему плюну в харю! :evil: F_CPU должа быть определена ГЛОБАЛЬНО ДЛЯ ВСЕГО ПРОЕКТА! в старой студии (4.хх) это делается в окошке параметров проекта, в новой - не знаю, но в любом случае эта константа должна фигурировать В КОМАНДНОЙ СТРОКЕ ДЛЯ ЗАПУСКА КОМПИЛЯТОРА в опции -D
Никогда не размещайте ее внутри любого файла вашего проекта!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Jman »

ARV писал(а):
Jman писал(а):выражение PORTA |=(1<<PA1) - законно как и PORTA |=(1<<1);
вместо (1<<x) рекомендую использовать "стандартный" для avr-gcc макрос _BV(x) - то же самое, но "стандартнее".

Jman писал(а):#define F_CPU your_clock - не знал что должна быть выше всех хеддеров, иначе начинало матюкаться на бибку util/delay.h.
скажите мне, кто учит начинающих этому - я ему плюну в харю! :evil: F_CPU должа быть определена ГЛОБАЛЬНО ДЛЯ ВСЕГО ПРОЕКТА! в старой студии (4.хх) это делается в окошке параметров проекта, в новой - не знаю, но в любом случае эта константа должна фигурировать В КОМАНДНОЙ СТРОКЕ ДЛЯ ЗАПУСКА КОМПИЛЯТОРА в опции -D
Никогда не размещайте ее внутри любого файла вашего проекта!

Спасибо за советы. В седьмой студии не могу пока найти. В 4ой да, есть. Я себе когда из USBasp делал STK500, в исходнике выбирал чип и частоту тактирования.
В седьмой студии _BV подчеркивается как ошибка, но работает.

Прошу проверить одним глазком, код работает. Тикает таймер раз в секунду, через 5 сек. зажигаед СИД, через еще 5 сек. гасит, все это при нажатии кнопки, настройку таймера не буду приводить:

Код: Выделить всё

ISR (TIMER1_COMPA_vect) 
{
   if (!(PINB &_BV(PINB0)))
   {
      tic_tac++;
            if (tic_tac>=5){
            PORTA &=~_BV(PA0);
            }
            if (tic_tac >=10) {
               PORTA |=_BV(PA0);
               }
   }
   else { PORTA |=_BV(PA0); tic_tac=0;}
 TCNT1=0;


Можно ли сделать типо

Код: Выделить всё

#define on PORTA |=_BV(PA0)  
#define off PORTA &=~_BV(PA0)

Это нормально будет? Как-то оперировать с переменными удобнее чем с битами порта. В принципе то же работает.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: AVR studio в вопросах и ответах

Сообщение HHIMERA »

Jman писал(а):
Это нормально будет? Как-то оперировать с переменными удобнее чем с битами порта. В принципе то же работает.

Это будет правильнее, нагляднее и понятнее... чем подобные вредные советы...
рекомендую использовать "стандартный" для avr-gcc макрос _BV(x)

Только нужно писать... не просто on... a LED_ON... например...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

Jman писал(а):Это нормально будет?
нормально, только это будут макросы, а не переменные.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Alexeyslav »

Смысл макросов как раз и состоит в том чтобы давать осмысленные названия таким вот маленьким а иногда и не очень маленьким конструкциям.

По сути есть два вида макросов - через директиву DEFINE - определяет однострочные выражения, как самый простой вид и через директиву MACRO/END MACRO - через неё можно определять многострочные макросы с подставляемыми параметрами но надо отдавать себе отчёт когда их используешь что выражения в параметрах этих макросов вычисляются только во время компиляции и заменяются на константы, поэтому там не может быть переменных.
И еще отлаживать работу макросов крайне трудно, поэтому при их составлении надо быть очень внимательным и сразу оговаривать область их применимости и использования.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

Alexeyslav писал(а):По сути есть два вида макросов - через директиву DEFINE - определяет однострочные выражения, как самый простой вид и через директиву MACRO/END MACRO
это вы, часом, не про ассемблер ли говорите? пока что тут речь про Си шла. а в Си чуть-чуть не так: MACRO/END MACRO вообще не существует, а #define позволяет определять и многострочные макросы
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Alexeyslav »

Это не зависит от языка, этим занимается препроцессор, который о языках ничего не знает.
Дефайном можно ввести выражение на несколько строк, но это несколько неудобно.
Макросами на С никто не занимается потому что практически никогда не нужно потому что все некрасивости аппаратных особенностей можно выделить на уровень HAL, а программу писать уже в нормальных терминах.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio в вопросах и ответах

Сообщение axillent »

Alexeyslav писал(а):Это не зависит от языка, этим занимается препроцессор, который о языках ничего не знает.

Ничего, что препроцессор часть языка?
#include по вашему ошибочно описывают во всех книгах про Си?
А ведь это тоже директива препроцессора
препроцессор Си стандартный как и сам язык
Про директивы препроцессора не знает компилятор, но компилятор != язык Си

Alexeyslav писал(а):Дефайном можно ввести выражение на несколько строк, но это несколько неудобно.

Если быть корректным, то определение любого дефайна делается в одну строку. Но семантика языка Си (понятная препроцессору) имеет специальный символ \ переноса строки.
То есть в текстовом релакторе это несколько строк, но с точки зрения языка это одна строка

Alexeyslav писал(а):Макросами на С никто не занимается потому что практически никогда не нужно потому что все некрасивости аппаратных особенностей можно выделить на уровень HAL, а программу писать уже в нормальных терминах.

Очень даже занимаются, это удобный гибкий инструмент
А что такое HAL по вашему? Разве он определен в стандарте C99?
Насколько понимаю C99 последний широко признанный стандарт
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Alexeyslav »

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

Выше приведённые примеры
#define on PORTA |=_BV(PA0)
#define off PORTA &=~_BV(PA0)

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

Препроцессор не работает с программой на семантическом уровне, поэтому ему не важно на каком языке написана программа. Жаль что препроцессор бывает заточен под конкретный компилятор.
Директива INCLUDE тоже никак не зависит от языка.
Директивы по большому счёту не являются языковыми конструкциями, и очень странно если в книжках их смешивают с языком. Вероятно, это очень плохие книги если они допускают такое трактование.

Где-то я читал, что макросы в С просуществовали очень долго, вплоть до нынешних времён и были исключены в препроцессорах высокоуровневых языков вроде C++ и C# за их полной ненадобностью.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio в вопросах и ответах

Сообщение axillent »

Hardware abstract layer лишь один из возможных уровней абстракции при програмировании
Не понимаю почему ему нужно уделять особое внимание. Если мы говорим в общем про Си, а не в частности про микроконтроллеры

Как это препроцессор не работает на семантическом уровне? Если как минимум он выделяет такие семантические конструкции как комментарии и специальные символы? Другие конструкции ему просто не нужны.
Препроцессор часть языка Си, а не какая то сторонняя вещь

Поясните где в языке С++ отказались от препроцессора? Я конечно изучал этот язык весьма давно, но не слышал, чтобы с тех пор в него вносились такие значимые изменения
Может вы с java путаете?
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

Re: AVR studio в вопросах и ответах

Сообщение L.O.D »

axillent писал(а):Если как минимум он выделяет такие семантические конструкции как комментарии и специальные символы?
Это не семантические, а синтаксические конструкции. Чуточку другая вещь. То есть, абсолютно.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio в вопросах и ответах

Сообщение axillent »

https://ru.m.wikipedia.org/wiki/Синтакс ... ммирование)
Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям

Директивы препроцессора это же конкретные действия, то есть семантика языка?
А то, что по символу переноса строки надо строки склеить в одну - это же тоже конкретное действие, а не просто синтаксис.
вот здесь например https://ru.m.wikipedia.org/wiki/Препроцессор_Си утверждается, что препроцессор синтаксиса вообще не касается
По сути в Си мы имеем двух этапную компиляцию.
Сначала препроцессор, потом компилятор. Две составные языка Си
Заметьте, препроцессор вызывается не отдельно, он вызывается самим компилятором и часто встроен в тот же бинарник.
Собственно спор не о семантике и синтаксисе, а о том является ли препроцессор и его директивы частью языка Си. Я убежден, что являются
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Alexeyslav »

Где я сказал что отказались от препроцессора? я только про макросы говорил.
Препроцессор вообще ничего не касается ни синтаксиса ни семантики. Это просто компилятор для языка, который работает исключительно с текстовыми строками исходника и результатом его работы являются синтаксические и семантические конструкции конкретного языка.

То что разработчики компилятора за одно пишут свой же препроцессор в котором вольны реализовать всё по своему и выкинуть ненужное не отменяет того факта что это две разные сущности. У препроцессора свой синтаксис и семантика не имеющая отношения к основному языку, но поскольку разрабатывается одними и теми же разработчиками они не конфликтуют друг с другом(в языке нет таких же конструкций которые используются препроцессором).
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio в вопросах и ответах

Сообщение axillent »

Alexeyslav вы что то такое намудрили в своем понимании Си
по каким книжкам изучали? интересно где это Си описан без препроцессора
также скажите в каком компиляторе препроцессор "свой" не подчиняющийся стандарту Си?
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение Alexeyslav »

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

В некоторых языках препроцессор становится настолько сложным что обзавёлся собственным компилятором.

интересно где это Си описан без препроцессора

Реальность такова, что без директивы INCLUDE написать более менее приличную программу(да даже хелло ворлд!) очень сложно, поэтому в книжках рассматривается ещё и препроцессор, хотя там должны на каждом шагу объяснять что препроцессор и компилятор это разные сущности, хоть уже и не могут друг без дружки существовать.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio в вопросах и ответах

Сообщение axillent »

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

это ваш выбор
нет смысла спорить, хотите считайте так
главное, чтобы этим не путали других участников форума
Аватара пользователя
Curandero
Родился
Сообщения: 1
Зарегистрирован: Пт фев 05, 2016 10:47:13

Re: AVR studio в вопросах и ответах

Сообщение Curandero »

Здравствуйте, Котаны! У меня глупый вопрос, какой мобильный девайс себе приобрести под студию? То есть у меня иногда на работе есть немного свободного времени и я мог бы его потратить на освоение МК, но мобильных гаджетов для этого не имею. Куда реально установить студию - планшет/нетбук/ или всё ж ноут необходим, какие минимальные характеристики нужны? Но так как МК для меня останется на уровне хобби, то естественно вопрос цены стоит если не на первом месте, то всё же важен.
П. С. Если у кого имеется опыт установки на подобные девайсы Протеуса, Мультисима - тоже поделитесь своими соображениями.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

Alexeyslav писал(а):Реальность такова, что без директивы INCLUDE написать более менее приличную программу(да даже хелло ворлд!) очень сложно, поэтому в книжках рассматривается ещё и препроцессор, хотя там должны на каждом шагу объяснять что препроцессор и компилятор это разные сущности, хоть уже и не могут друг без дружки существовать.
мозг и печень - это две разные сущности, которые не могут существовать друг без друга. но вместе они входят в ОРГАНИЗМ.
так и здесь: ЯЗЫК СИ состоит из препроцессора и компилятора.

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

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»