Страница 1 из 3
Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 08:33:22
Skitalec777
Здравствуйте!
Я только начинаю изучение микроконтроллеров. Помогите, пожалуйста, разобраться.
Почему такую запись Atmel Studio принимает:
А на такую ругается:
Ведь судя по примерам, которые я смог найти, по сути это должны быть аналогичные записи.
Заранее спасибо за ответ!
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 09:10:20
eess9
Skitalec777 писал(а):А на такую ругается:
Эта запись характерна для Codevisionavr, а AVRStudio такое не кушает.
Вы должны записать так:
или так:
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 09:47:36
Pnjom-Penb
Добавлю к вышесказанному еще пару копеек.
Во-первых, выражения на языке CodeVision "не скушает" вообще ни один компилятор Си, не только AVRStudi'я.
Во-вторых, разница не только в языках, но и в сути предполагаемых действий - код "порт.бит = 1" устанавливает один бит, а код "порт = константа" устанавливает все биты.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 12:48:36
oleg110592
Pnjom-Penb писал(а):"не скушает" вообще ни один компилятор Си
компилятор Си CC5X для PIC микроконтроллеров нормально "кушает" выражения типа PORTA.0=1, также битовые переменные есть в Микрочиповском XC8 (бывший HI-TECH) - можно установить бит так: RA0=1. В IAR AVR тоже можно устанавливать биты порта так: PORTA_Bit0 = 1.
В стандартном Си нет определения битовые переменные, но есть битовые поля в структурах. Которые можно использовать в качестве битовых переменных. Типа так:
Код: Выделить всё
struct {
unsigned char a : 1;
unsigned char b : 1;
unsigned char c : 1;
unsigned char d : 1;
} b;
использовать так:
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:11:19
pcb
oleg110592 писал(а):компилятор
Правильно.
У некоторых специально оформленные заголовки(файлы.н) где прописаны битовые поля указывающие на нужную ячеку или УВВ.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:24:44
Skitalec777
eess9 писал(а):
Эта запись характерна для Codevisionavr, а AVRStudio такое не кушает.
Pnjom-Penb писал(а):
... выражения на языке CodeVision "не скушает" вообще ни один компилятор Си, не только AVRStudi'я.
Вот оно что... Оказывается, язык Си языку Си - рознь, и все зависит от компилятора. А я то думал, что данный язык программирования стандартизированный.
Большое спасибо за разъяснения!
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:33:36
Skitalec777
eess9 писал(а):
Вы должны записать так:
А это писать именно так? Или может быть так?
Есть ли между этими записями разница? Или это по сути одно и тоже?
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:37:43
Mishany
авр студия имеет наиболее правильный стоковый синтаксис.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:38:50
pcb
Разница есть.
Skitalec777 писал(а):DDRB |= (1 << 0);
устанавливает бит 0, остальные не трогает.
Skitalec777 писал(а):DDRB = (1 << 0);
устанавливает бит 0, остальные обнуляет.
книжку, какую нибудь, возьми по с/с++
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:45:37
Mishany
это же элементарные битовые операции
DDRB = (1 << 0);
1 сдвинуть влево на 0 бит и положить в регистр DDRB
DDRB |= (1 << 0);
1 сдвинуть влево на 0 бит и логичиское или с регистром DDRB, т.е. на 0 бите если была 1 - 1 и останеться, если был 0 установиться 1
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 14:47:48
Skitalec777
pcb писал(а):
книжку, какую нибудь, возьми по с/с++
Книжка у меня есть. И даже не одна. Однако эти книги, видимо, пишут программисты для программистов же. Вот Вы, буквально двумя предложениями, используя человеческий язык, объяснили мне довольно сложный момент, который по книжкам я пытался понять три дня. Именно это меня и сподвигло создать данный топик.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 15:01:30
Z_h_e
Писал Вам нижеследующее, но уже вроде все пояснили. Раз написал, пускай будет.
Код: Выделить всё
DDRB = (1 << 0);
тоже самое
DDRB=0b00000001
Код: Выделить всё
DDRB |= (1 << 0);
тоже самое
DDRB=DDRB | 0b00000001
Книжка у меня есть. И даже не одна. Однако эти книги, видимо,
Или не с того начали читать или не c той.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 15:03:21
Pnjom-Penb
Skitalec777 писал(а):Оказывается, язык Си языку Си - рознь, ...
С чего это вы взяли, что язык CodeVision'а это язык Си? Это заблуждение.
Skitalec777 писал(а):А я то думал, что данный язык программирования стандартизированный.
Нет, он стандартизованный. И стандарт языка Си (ISO/IEC 9899) хорошо бы иметь под рукой, чтобы не вестись на разные 'portb.0' и не удивляться тому, что компиляторы языка Си не компилируют код, написанный на языке CodeVision'а (и наоборот).
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 15:17:37
Skitalec777
Pnjom-Penb писал(а):С чего это вы взяли, что язык CodeVision'а это язык Си? Это заблуждение.
стандарт языка Си (ISO/IEC 9899) хорошо бы иметь под рукой, чтобы не вестись на разные 'portb.0' и не удивляться тому, что компиляторы языка Си не компилируют код, написанный на языке CodeVision'а (и наоборот).
Поскольку я новичок, как вообще в программировании, так и в программировании микроконтроллеров в частности, то мне допускать подобные ошибки простительно. Благо, есть добрые люди, который вовремя подскажут и поправят. Тем более, что даже
серьезные дяди говорят, что, например, Wiring - это чистый С/С++, просто в "обертке".
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 15:21:27
oleg110592
Mishany писал(а):студия имеет наиболее правильный стоковый синтаксис
это еще автор до констант не добрался в Program Space
Pnjom-Penb писал(а):CodeVision'а это язык Си?
Зачем тогда сама Атмел написала, что это C Compiler, и в расширения студии включила?
https://gallery.atmel.com/Products/Deta ... 337def9c54
Если что, иаром для авр пользовался.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 17:51:35
Pnjom-Penb
oleg110592 писал(а):Зачем тогда сама Атмел написала, ...
То есть, как зачем? (ключевые слова подчеркнуты) Чтобы продвигать свой продукт.

Вероятно, подъезд на кривой козе к IAR'у завершился слишком высокими запросами, либо и вовсе ничем.

Когда это маркето
ложцы останавливались перед
ложью во имя прибылЕй? Что им грубое несоответствие стандарту языка? Тем более, что ни один из стандартов им неизвестен...

Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 19:45:35
Skitalec777
Pnjom-Penb писал(а):С чего это вы взяли, что язык CodeVision'а это язык Си? Это заблуждение.
Ну а, на Ваш взгляд, с Atmel Studio в этом плане все в порядке? Очень не хотелось бы ошибиться с инструментом с самого начала и потратить время на обучение в пустую...
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 20:05:22
Pnjom-Penb
Не заметил этого:
oleg110592 писал(а):нормально "кушает" выражения типа PORTA.0=1
Выражения "типа PORTA.0=1" не принадлежат языку Си. Совсем. Никак.
Вот такой вот облом... :
oleg110592 писал(а):но есть битовые поля в структурах.
Абсолютная истина, как и утверждения из серии "небо - голубое, трава - зеленая". Однако, все, что не соответствует стандарту Си, по-прежнему не является языком Си. Стандарты вводятся не для оправдания зарплат сотрудников соответствующих организаций, а для исключения бардака, типа
упомянутого выше.
Разные мелкие экосистемы, типа CV, имеют свой ареал и свою аудиторию, но их попытка изобразить "настоящесть" - не более, чем мимикрия. Соответствующие языки упоминаются как "C-like".
Учитывая тот факт, что обращение к отдельным битам порта
легко реализуется в рамках стандарта, извраты, типа языка CV, не только лишают написанный так код переносимости, но и не дают никакого выигрыша, который мог бы хоть в какой-то степени оправдать такие выверты.
В задачнике спрашивается © - если решение имеет минусы, но не имеет плюсов, то ... наQа оно надо?!!!
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 21:30:59
Mishany
кстати PORTB.1 по записи похож на обращение к структуре, но имена в структуре не могут быть числовыми, это что там наворотили чтоб работало?
я что то с ходу не смог реализовать такое обращение к структуре.
Re: Программирование входо-выходов в Atmel Studio 7
Добавлено: Чт ноя 12, 2015 22:14:03
Pnjom-Penb
Mishany писал(а):я что то с ходу не смог реализовать такое обращение к структуре.
Если речь об обращении в стиле CV, то... "
Семен Семеныч, ну что же вы!!!", - прочтите же пост ровно на один выше Вашего.