возможно. отличить одного флудера от другого порой сложновато. если это доставило вам неудобства - прошу прощения, не принимайте близко к сердцу.Rtmip писал(а):ARV,Спойлер
Вы перепутали меня с Jman
AVR studio в вопросах и ответах
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Jman
- Мучитель микросхем
- Сообщения: 414
- Зарегистрирован: Ср янв 26, 2011 13:43:30
- Откуда: С того берега моря
- Контактная информация:
Re: AVR studio в вопросах и ответах
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 в вопросах и ответах
вместо (1<<x) рекомендую использовать "стандартный" для avr-gcc макрос _BV(x) - то же самое, но "стандартнее".Jman писал(а):выражение PORTA |=(1<<PA1) - законно как и PORTA |=(1<<1);
скажите мне, кто учит начинающих этому - я ему плюну в харю!Jman писал(а):#define F_CPU your_clock - не знал что должна быть выше всех хеддеров, иначе начинало матюкаться на бибку util/delay.h.
Никогда не размещайте ее внутри любого файла вашего проекта!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Jman
- Мучитель микросхем
- Сообщения: 414
- Зарегистрирован: Ср янв 26, 2011 13:43:30
- Откуда: С того берега моря
- Контактная информация:
Re: AVR studio в вопросах и ответах
ARV писал(а):вместо (1<<x) рекомендую использовать "стандартный" для avr-gcc макрос _BV(x) - то же самое, но "стандартнее".Jman писал(а):выражение PORTA |=(1<<PA1) - законно как и PORTA |=(1<<1);скажите мне, кто учит начинающих этому - я ему плюну в харю!Jman писал(а):#define F_CPU your_clock - не знал что должна быть выше всех хеддеров, иначе начинало матюкаться на бибку util/delay.h.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]
Re: AVR studio в вопросах и ответах
Jman писал(а):
Это нормально будет? Как-то оперировать с переменными удобнее чем с битами порта. В принципе то же работает.
Это будет правильнее, нагляднее и понятнее... чем подобные вредные советы...
рекомендую использовать "стандартный" для avr-gcc макрос _BV(x)
Только нужно писать... не просто on... a LED_ON... например...
"Я не даю готовых решений, я заставляю думать!"(С)
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
нормально, только это будут макросы, а не переменные.Jman писал(а):Это нормально будет?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: AVR studio в вопросах и ответах
Смысл макросов как раз и состоит в том чтобы давать осмысленные названия таким вот маленьким а иногда и не очень маленьким конструкциям.
По сути есть два вида макросов - через директиву DEFINE - определяет однострочные выражения, как самый простой вид и через директиву MACRO/END MACRO - через неё можно определять многострочные макросы с подставляемыми параметрами но надо отдавать себе отчёт когда их используешь что выражения в параметрах этих макросов вычисляются только во время компиляции и заменяются на константы, поэтому там не может быть переменных.
И еще отлаживать работу макросов крайне трудно, поэтому при их составлении надо быть очень внимательным и сразу оговаривать область их применимости и использования.
По сути есть два вида макросов - через директиву DEFINE - определяет однострочные выражения, как самый простой вид и через директиву MACRO/END MACRO - через неё можно определять многострочные макросы с подставляемыми параметрами но надо отдавать себе отчёт когда их используешь что выражения в параметрах этих макросов вычисляются только во время компиляции и заменяются на константы, поэтому там не может быть переменных.
И еще отлаживать работу макросов крайне трудно, поэтому при их составлении надо быть очень внимательным и сразу оговаривать область их применимости и использования.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
это вы, часом, не про ассемблер ли говорите? пока что тут речь про Си шла. а в Си чуть-чуть не так: MACRO/END MACRO вообще не существует, а #define позволяет определять и многострочные макросыAlexeyslav писал(а):По сути есть два вида макросов - через директиву DEFINE - определяет однострочные выражения, как самый простой вид и через директиву MACRO/END MACRO
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: AVR studio в вопросах и ответах
Это не зависит от языка, этим занимается препроцессор, который о языках ничего не знает.
Дефайном можно ввести выражение на несколько строк, но это несколько неудобно.
Макросами на С никто не занимается потому что практически никогда не нужно потому что все некрасивости аппаратных особенностей можно выделить на уровень HAL, а программу писать уже в нормальных терминах.
Дефайном можно ввести выражение на несколько строк, но это несколько неудобно.
Макросами на С никто не занимается потому что практически никогда не нужно потому что все некрасивости аппаратных особенностей можно выделить на уровень HAL, а программу писать уже в нормальных терминах.
Re: AVR studio в вопросах и ответах
Alexeyslav писал(а):Это не зависит от языка, этим занимается препроцессор, который о языках ничего не знает.
Ничего, что препроцессор часть языка?
#include по вашему ошибочно описывают во всех книгах про Си?
А ведь это тоже директива препроцессора
препроцессор Си стандартный как и сам язык
Про директивы препроцессора не знает компилятор, но компилятор != язык Си
Alexeyslav писал(а):Дефайном можно ввести выражение на несколько строк, но это несколько неудобно.
Если быть корректным, то определение любого дефайна делается в одну строку. Но семантика языка Си (понятная препроцессору) имеет специальный символ \ переноса строки.
То есть в текстовом релакторе это несколько строк, но с точки зрения языка это одна строка
Alexeyslav писал(а):Макросами на С никто не занимается потому что практически никогда не нужно потому что все некрасивости аппаратных особенностей можно выделить на уровень HAL, а программу писать уже в нормальных терминах.
Очень даже занимаются, это удобный гибкий инструмент
А что такое HAL по вашему? Разве он определен в стандарте C99?
Насколько понимаю C99 последний широко признанный стандарт
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: AVR studio в вопросах и ответах
HAL - это лишь уровень абстракции программы, и к языкам он никак не относится и не зависит. Это лишь способ разделения кода в программе на программную логику и аппаратно-зависимый(низкоуровневый).
Выше приведённые примеры
как раз являются HAL этой программы, где они используются. В самом простом виде.
Препроцессор не работает с программой на семантическом уровне, поэтому ему не важно на каком языке написана программа. Жаль что препроцессор бывает заточен под конкретный компилятор.
Директива INCLUDE тоже никак не зависит от языка.
Директивы по большому счёту не являются языковыми конструкциями, и очень странно если в книжках их смешивают с языком. Вероятно, это очень плохие книги если они допускают такое трактование.
Где-то я читал, что макросы в С просуществовали очень долго, вплоть до нынешних времён и были исключены в препроцессорах высокоуровневых языков вроде C++ и C# за их полной ненадобностью.
Выше приведённые примеры
#define on PORTA |=_BV(PA0)
#define off PORTA &=~_BV(PA0)
как раз являются HAL этой программы, где они используются. В самом простом виде.
Препроцессор не работает с программой на семантическом уровне, поэтому ему не важно на каком языке написана программа. Жаль что препроцессор бывает заточен под конкретный компилятор.
Директива INCLUDE тоже никак не зависит от языка.
Директивы по большому счёту не являются языковыми конструкциями, и очень странно если в книжках их смешивают с языком. Вероятно, это очень плохие книги если они допускают такое трактование.
Где-то я читал, что макросы в С просуществовали очень долго, вплоть до нынешних времён и были исключены в препроцессорах высокоуровневых языков вроде C++ и C# за их полной ненадобностью.
Re: AVR studio в вопросах и ответах
Hardware abstract layer лишь один из возможных уровней абстракции при програмировании
Не понимаю почему ему нужно уделять особое внимание. Если мы говорим в общем про Си, а не в частности про микроконтроллеры
Как это препроцессор не работает на семантическом уровне? Если как минимум он выделяет такие семантические конструкции как комментарии и специальные символы? Другие конструкции ему просто не нужны.
Препроцессор часть языка Си, а не какая то сторонняя вещь
Поясните где в языке С++ отказались от препроцессора? Я конечно изучал этот язык весьма давно, но не слышал, чтобы с тех пор в него вносились такие значимые изменения
Может вы с java путаете?
Не понимаю почему ему нужно уделять особое внимание. Если мы говорим в общем про Си, а не в частности про микроконтроллеры
Как это препроцессор не работает на семантическом уровне? Если как минимум он выделяет такие семантические конструкции как комментарии и специальные символы? Другие конструкции ему просто не нужны.
Препроцессор часть языка Си, а не какая то сторонняя вещь
Поясните где в языке С++ отказались от препроцессора? Я конечно изучал этот язык весьма давно, но не слышал, чтобы с тех пор в него вносились такие значимые изменения
Может вы с java путаете?
Re: AVR studio в вопросах и ответах
Это не семантические, а синтаксические конструкции. Чуточку другая вещь. То есть, абсолютно.axillent писал(а):Если как минимум он выделяет такие семантические конструкции как комментарии и специальные символы?
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Re: AVR studio в вопросах и ответах
https://ru.m.wikipedia.org/wiki/Синтакс ... ммирование)
Директивы препроцессора это же конкретные действия, то есть семантика языка?
А то, что по символу переноса строки надо строки склеить в одну - это же тоже конкретное действие, а не просто синтаксис.
вот здесь например https://ru.m.wikipedia.org/wiki/Препроцессор_Си утверждается, что препроцессор синтаксиса вообще не касается
По сути в Си мы имеем двух этапную компиляцию.
Сначала препроцессор, потом компилятор. Две составные языка Си
Заметьте, препроцессор вызывается не отдельно, он вызывается самим компилятором и часто встроен в тот же бинарник.
Собственно спор не о семантике и синтаксисе, а о том является ли препроцессор и его директивы частью языка Си. Я убежден, что являются
Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям
Директивы препроцессора это же конкретные действия, то есть семантика языка?
А то, что по символу переноса строки надо строки склеить в одну - это же тоже конкретное действие, а не просто синтаксис.
вот здесь например https://ru.m.wikipedia.org/wiki/Препроцессор_Си утверждается, что препроцессор синтаксиса вообще не касается
По сути в Си мы имеем двух этапную компиляцию.
Сначала препроцессор, потом компилятор. Две составные языка Си
Заметьте, препроцессор вызывается не отдельно, он вызывается самим компилятором и часто встроен в тот же бинарник.
Собственно спор не о семантике и синтаксисе, а о том является ли препроцессор и его директивы частью языка Си. Я убежден, что являются
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: AVR studio в вопросах и ответах
Где я сказал что отказались от препроцессора? я только про макросы говорил.
Препроцессор вообще ничего не касается ни синтаксиса ни семантики. Это просто компилятор для языка, который работает исключительно с текстовыми строками исходника и результатом его работы являются синтаксические и семантические конструкции конкретного языка.
То что разработчики компилятора за одно пишут свой же препроцессор в котором вольны реализовать всё по своему и выкинуть ненужное не отменяет того факта что это две разные сущности. У препроцессора свой синтаксис и семантика не имеющая отношения к основному языку, но поскольку разрабатывается одними и теми же разработчиками они не конфликтуют друг с другом(в языке нет таких же конструкций которые используются препроцессором).
Препроцессор вообще ничего не касается ни синтаксиса ни семантики. Это просто компилятор для языка, который работает исключительно с текстовыми строками исходника и результатом его работы являются синтаксические и семантические конструкции конкретного языка.
То что разработчики компилятора за одно пишут свой же препроцессор в котором вольны реализовать всё по своему и выкинуть ненужное не отменяет того факта что это две разные сущности. У препроцессора свой синтаксис и семантика не имеющая отношения к основному языку, но поскольку разрабатывается одними и теми же разработчиками они не конфликтуют друг с другом(в языке нет таких же конструкций которые используются препроцессором).
Re: AVR studio в вопросах и ответах
Alexeyslav вы что то такое намудрили в своем понимании Си
по каким книжкам изучали? интересно где это Си описан без препроцессора
также скажите в каком компиляторе препроцессор "свой" не подчиняющийся стандарту Си?
по каким книжкам изучали? интересно где это Си описан без препроцессора
также скажите в каком компиляторе препроцессор "свой" не подчиняющийся стандарту Си?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: AVR studio в вопросах и ответах
Не надо этих дешёвых трюков, не искажайте мои слова. Препроцессор работает исключительно с исходниками и ни к каким действиям в программе он не приводит, он собственно генерирует сам исходник программы в которой уже появляется и синтаксис и семантика конкретного языка.
Похоже, вы либо прикалываетесь либо не те книжки читаете либо читаете их очень по диагонали.
В некоторых языках препроцессор становится настолько сложным что обзавёлся собственным компилятором.
Реальность такова, что без директивы INCLUDE написать более менее приличную программу(да даже хелло ворлд!) очень сложно, поэтому в книжках рассматривается ещё и препроцессор, хотя там должны на каждом шагу объяснять что препроцессор и компилятор это разные сущности, хоть уже и не могут друг без дружки существовать.
Похоже, вы либо прикалываетесь либо не те книжки читаете либо читаете их очень по диагонали.
В некоторых языках препроцессор становится настолько сложным что обзавёлся собственным компилятором.
интересно где это Си описан без препроцессора
Реальность такова, что без директивы INCLUDE написать более менее приличную программу(да даже хелло ворлд!) очень сложно, поэтому в книжках рассматривается ещё и препроцессор, хотя там должны на каждом шагу объяснять что препроцессор и компилятор это разные сущности, хоть уже и не могут друг без дружки существовать.
Re: AVR studio в вопросах и ответах
я не прикалываюсь
критично отношусь к своим знаниям и реально хотел выяснить действительно ли что то изменилось
но сейчас вижу, что ничего не менялось, а вы полны ошибочных представлений
книжки не привели, видимо не читали и знания ваши поверхностны
это ваш выбор
нет смысла спорить, хотите считайте так
главное, чтобы этим не путали других участников форума
критично отношусь к своим знаниям и реально хотел выяснить действительно ли что то изменилось
но сейчас вижу, что ничего не менялось, а вы полны ошибочных представлений
книжки не привели, видимо не читали и знания ваши поверхностны
это ваш выбор
нет смысла спорить, хотите считайте так
главное, чтобы этим не путали других участников форума
Re: AVR studio в вопросах и ответах
Здравствуйте, Котаны! У меня глупый вопрос, какой мобильный девайс себе приобрести под студию? То есть у меня иногда на работе есть немного свободного времени и я мог бы его потратить на освоение МК, но мобильных гаджетов для этого не имею. Куда реально установить студию - планшет/нетбук/ или всё ж ноут необходим, какие минимальные характеристики нужны? Но так как МК для меня останется на уровне хобби, то естественно вопрос цены стоит если не на первом месте, то всё же важен.
П. С. Если у кого имеется опыт установки на подобные девайсы Протеуса, Мультисима - тоже поделитесь своими соображениями.
П. С. Если у кого имеется опыт установки на подобные девайсы Протеуса, Мультисима - тоже поделитесь своими соображениями.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
мозг и печень - это две разные сущности, которые не могут существовать друг без друга. но вместе они входят в ОРГАНИЗМ.Alexeyslav писал(а):Реальность такова, что без директивы INCLUDE написать более менее приличную программу(да даже хелло ворлд!) очень сложно, поэтому в книжках рассматривается ещё и препроцессор, хотя там должны на каждом шагу объяснять что препроцессор и компилятор это разные сущности, хоть уже и не могут друг без дружки существовать.
так и здесь: ЯЗЫК СИ состоит из препроцессора и компилятора.
Язык Си отдельно без препроцессора не существует нигде в реальности, если исключить абстрактное теоретизирование (сферический конь в вакууме). Отдельно взятый препроцессор не существует даже в фантазиях теоретиков. Так что спор пора заканчивать, тем более что к теме форума он не имеет никакого отношения.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!