Программирование входо-выходов в Atmel Studio 7

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

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение ARV »

oleg110592 писал(а):это еще автор до констант не добрался в Program Space
а что там может быть такого? ну написать __flash const и всех делов...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Mishany »

может не так выразился, что бы студия стала понимать PORT.x
Реклама
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Pnjom-Penb »

Mishany писал(а):может не так выразился, что бы студия стала понимать PORT.x
То есть, не получилось сделать это в рамках стандарта? Ну, тогда посмотрите, например, как это сделано в IAR'е.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение oleg110592 »

PORTB.1 это уже на уровне компилятора или недокомпилятора. Такие "извраты" были сделаны отнюдь не от хорошей жизни - имхо компиляторостроители вводили сие безобразие (с точки зрения настоящего Си) ввиду убогости некоторых 8-ми битных микроконтроллеров. Например Hi-tech picc, впоследствии купленный Микрочипом (теперь называется XC8) , трудно назвать "C-like", альтернатив ему для PIC12/14/16 практически нет. В нем присутствует и битовые переменные (bit) и 24 битные переменные (unsigned short long) - все вроде не по стандарту. Использование 24 битной переменной вместо 32 битной давало приличный выигрыш в использовании флэша или otp rom.
Из CV документации:
The bit level access to the I/O registers can be also accomplished by using bit selectors appended after the name of the I/O register.
Because bit level access to I/O registers is done using the CBI, SBI, SBIC and SBIS instructions, the register address must be in the 0 to 1Fh range for sfrb and in the 0 to 1Eh range for sfrw.
т.е. "XXXX.1" будет работать в диапазоне адресов регистров от 0 до 1Fh, вспомним, что теперь у некоторых авров порты и регистры периферии в эту область не поместились и это там работать не будет. В современной документации, перед вышеприведенной цитатой, предлагается устанавливать биты стандартно, согласно всем канонам Си. Так что автору темы скорее всего попался устаревший код для CV.
ну написать __flash const
а PROGMEM сейчас для AVR GCC уже не нужен?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Mishany »

у меня не стоит иар, а для посмотреть что то не хочеться его ставить :(
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение oleg110592 »

в хидерах иара:
Спойлер

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

#pragma language=save
#pragma language=extended

/*========*/
/* Predefined SFR Addresses */
/*========*/

/****************************************************************************
 * An example showing the SFR_B() macro call, 
 * the expanded result and usage of this result:
 *
 * SFR_B_R(0x1F,   AVR) Expands to:
 * __io union {
 *             unsigned char AVR;                 // The sfrb as 1 byte
 *             struct {                           // The sfrb as 8 bits
 *                     unsigned char AVR_Bit0:1,
 *                                   AVR_Bit1:1,
 *                                   AVR_Bit2:1,
 *                                   AVR_Bit3:1,
 *                                   AVR_Bit4:1,
 *                                   AVR_Bit5:1,
 *                                   AVR_Bit6:1,
 *                                   AVR_Bit7:1;
 *                    };
 *            } @ 0x1F;
 * Examples of how to use the expanded result:
 * AVR |= (1<<5);
 * or like this:
 * AVR_Bit5 = 1;
 *
 *
 *
 * An example showing the SFR_B_N() macro call, 
 * the expanded result and usage of this result:
 * SFR_B_N(0x25,  TCCR2, FOC2, WGM20, COM21, COM20, WGM21, CS22, CS21, CS20)
 *  Expands to:
 *  __io union { 
 *              unsigned char TCCR2; 
 *              struct { 
 *                      unsigned char TCCR2_Bit0:1, 
 *                                    TCCR2_Bit1:1, 
 *                                    TCCR2_Bit2:1, 
 *                                    TCCR2_Bit3:1, 
 *                                    TCCR2_Bit4:1, 
 *                                    TCCR2_Bit5:1, 
 *                                    TCCR2_Bit6:1, 
 *                                    TCCR2_Bit7:1; 
 *                     }; 
 *              struct { 
 *                      unsigned char TCCR2_CS20:1, 
 *                                    TCCR2_CS21:1, 
 *                                    TCCR2_CS22:1, 
 *                                    TCCR2_WGM21:1, 
 *                                    TCCR2_COM20:1, 
 *                                    TCCR2_COM21:1, 
 *                                    TCCR2_WGM20:1, 
 *                                    TCCR2_FOC2:1; 
 *                     }; 
 *             } @ 0x25;
 * Examples of how to use the expanded result:
 * TCCR2 |= (1<<5); 
 * or if ENABLE_BIT_DEFINITIONS is defined   
 * TCCR2 |= (1<<COM21);
 * or like this:
 * TCCR2_Bit5 = 1;
 * or like this:
 * TCCR2_COM21 = 1;
 ***************************************************************************/
для порта B:
SFR_B_N(0x0B, PORTD, PORTD7, PORTD6, PORTD5, PORTD4, PORTD3, PORTD2, PORTD1, PORTD0)
Реклама
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Pnjom-Penb »

oleg110592 писал(а):имхо компиляторостроители вводили сие безобразие ... ввиду убогости некоторых 8-ми битных микроконтроллеров
Никакого отношения к реализации стандарта это не имеет - Вы же не станете утверждать, что "нет IAR'а для AVR'а и CV - пророк его", - или станете? :)))
ЯВУ вообще не касаются качества ЦПУ на уровне синтаксиса языка, зависимость существует лишь на уровне подстановки объектного кода. А это уже за рамками синтаксиса ЯВУ. Никто не мешал автору ЦВ реализовать доступ к битам портов В/В с помощью битовых полей, определяемых в строгом соответствии со стандартом (как в IAR'е, например). Всякие там "в диапазоне адресов от 0 до 1Фх" - это вопросы реализации подстановки объектного кода, а не синтаксиса языка.
oleg110592 писал(а):В современной документации, ... предлагается ... согласно всем канонам Си.
Есть два "но":
1.Остается синтаксис, нарушающий стандарт языка.
2.Остается проблема непереносимости, помноженная на проблему повторного НЕиспользования кода. Собственно, ТС именно с этой проблемой и столкнулся, когда в поисках примеров нарвался на исходники, писанные на якобы-Си, которые Сишным компилятором были совершенно справедливо посланы нафик.
Заметьте - проблемы эти были с бородой, когда Паша Гайдук еще под стол пешком ходил, и стандарты языков програмирования устанавливаются именно затем, чтобы такие проблемы исключить. Полагаю, как человек неглупый, он прекрасно понимал, что расставляет грабли не для себя любимого, а для ни в чем не повинных леммингов, которых ему почему-то было совсем не жаль, хотя профессия-то у него - одна из гуманных. :)))

Однако, не следует забывать, что проблемы ЦВ, очень мягко говоря, "не исчерпываются" тем, что мы тут обсуждаем. Их так много, что в пору заняться кому-нибудь их классификацией, этимологией, анамнезами, архетипами и т.д., и т.п. Правда, надо быть не вполне адекватным, чтобы променять полноценную жизнь на подобный абортарий, по каковой причине, повидимому, такие фанатики и не попадаются в сколько-нибудь заметных количествах. ;)

PS
Mishany писал(а):у меня не стоит иар, ...
Признаюсь, в столь позднее время он и у меня уже не стоит - возраст. :dont_know:
Может, в другой раз... :))) :))) :)))
Последний раз редактировалось Pnjom-Penb Пт ноя 13, 2015 00:04:17, всего редактировалось 1 раз.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение scorpi_0n »

Pnjom-Penb писал(а):Никто не мешал автору ЦВ реализовать доступ к битам портов В/В с помощью битовых полей, определяемых в строгом соответствии со стандартом (как в IAR'е, например).
В ИАРе не лучше. Там свои прибабахи и
2.Остается проблема непереносимости

Однако, не следует забывать, что проблемы ЦВ, очень мягко говоря, "не исчерпываются" тем, что мы тут обсуждаем. Их так много, что в пору заняться кому-нибудь их классификацией, этимологией, анамнезами, архетипами и т.д., и т.п.
Ещё есть МикроСИ и прочее. Ибо нефиг.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Pnjom-Penb »

scorpi_0n писал(а):В ИАРе не лучше. Там свои прибабахи и ... проблема непереносимости
Давно уже отошел, но все же буду признателен за конкретику. Для общего развития.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение oleg110592 »

язык Си для разве для микроконтроллеров изначально был придуман? У того, для чего он был придуман не было ни еепром ни флэша ни команд обращения к одному биту порта (ежли не ошибаюсь) - посему микроконтроллерным компиляторам все равно пришлось отходить от стандарта. К тому же я пример вероотступничества приводил не для CV - проекты мои в основном на иаре сделаны (уже писал об этом), для пиков на хайтеч и хс8.
Часы, правда, на матрицах у меня третий год работают - проект с Радиокота, написано на CV, значит на CV часы то писать тоже можно :)) .
Насчет переносимости - переносил проекты (несложные) с PIC -> AVR -> STM8 -> STM32 особых проблем не испытывал, например если в коде не писать везде типа PORTB.1=1, а сделать дефайн (извиняюсь за прописную истину) вначале кода типа #define LED PORTB.1 и далее писать LED - многие проблемы переносимости испаряются.
Автора код с PORTB.1, имхо, легко перевел на иар авр - заменить в редакторе ".1" на "_Bit1" и т.д. и вуаля - все работает.
А холивар с компиляторами для авр развивать смысла нет ибо они устарели (имхо) - полно сейчас не ущербных дешевых микроконтроллеров где можно писать код совсем не отступая от стандартов Си.
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Skitalec777 »

Большое спасибо всем, кто ответил! Из Ваших ответов я почерпнул для себя много нового, о чем ранее даже не задумывался. Однако, для меня участие в подобной дискуссии пока что равносильно ситуации из анекдота, когда сын первоклассник спросил у своего папы, профессора математики, как правильно написать цифру 8, а он ему ответил,что нет ничего проще. Нужно лишь знак бесконечности повернуть на Пи/2.

К сожалению, новые знания вызывают еще больше вопросов. Например, я так и не понял про Atmel Studio. Данная IDE стоит на страже стандартов языка Си или нет? Написанный в свободной форме код попросту не будет компилироваться? Или я что-то не понял?
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Skitalec777 »

oleg110592 писал(а): А холивар с компиляторами для авр развивать смысла нет ибо они устарели (имхо) - полно сейчас не ущербных дешевых микроконтроллеров где можно писать код совсем не отступая от стандартов Си.
А можно поподробнее рассказать про моральную старость AVR? В чем это проявляется?
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение scorpi_0n »

Да наверное во всём. Это как старый чемодан. Вчера купил СТМ8. Вроде ничего особенного. Прикрутил ТФТ от нокии 240х320. Время заливки экрана одним цветом 19,2мс. Шустренько как показалось. А везде пишут что Мега даже в этом тормозная.
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Skitalec777 »

scorpi_0n писал(а):Да наверное во всём. Это как старый чемодан. Вчера купил СТМ8. Вроде ничего особенного. Прикрутил ТФТ от нокии 240х320. Время заливки экрана одним цветом 19,2мс. Шустренько как показалось. А везде пишут что Мега даже в этом тормозная.
Ну, это не аргумент. Вот здесь об этом уже давно дискутируют. И не все там так однозначно. Вот лишь некоторые посты:
HHIMERA писал(а):Если всё так плохо... то и не вижу смысла заморачиваться... При переходе с STM на АВР проблем было бы не меньше...
В общем... тут обсуждать то и нечего...
pcb писал(а): Самая короткая дорога, та, которую знаешь - народная мудрость. :tea:
pcb писал(а): стм8 не шибко шустрая, среднее количество периферии.
Как-то так...
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение scorpi_0n »

Спасибо! Почитал. Не берусь судить об аргументах и однозначностях. Как мне сказали вся прелесть МК и заключается в мелочах. Когда их уже становится много они перерождаются в преимущество. Я вообще решил осваивать СТМ32 а СТМ8 попробовал из-за поддержки его СТлинком и низкой цены.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение oleg110592 »

Skitalec777 писал(а):А можно поподробнее рассказать про моральную старость AVR? В чем это проявляется?
статье 5 лет: http://www.compel.ru/lib/ne/2010/6/3-vo ... estv-stm8/
через 3 года семейство уже значительно расширено: http://www.compel.ru/lib/ne/2013/8/5-no ... -resheniy/
имхо производитель восьмибитных стмов явно не топчется на месте, как производитель авров. Да появляются новые авр с буквами PB вместо PA, нововведений имхо маловато:
- Unique ID for every device enabling a more secure device for IoT applications and wireless networks
- Improved accuracy of internal oscillators for UART serial communications
- Improved accuracy of internal voltage reference for better analog-to-digital conversion results
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Skitalec777 »

oleg110592 писал(а):статье 5 лет: http://www.compel.ru/lib/ne/2010/6/3-vo ... estv-stm8/
Я могу в силу неопытности ошибаться, но, ИМХО, данная тема лежит в плоскости вопросов, подобных: какой автомобиль лучше?

Даже для меня, человека, который только лишь слегка коснулся Мира Микроконтроллеров, очевидно, что минимум 4 аргумента из 8, которые приведены в данной статье, очень спорны. И вообще, после прочтения статьи складывается впечатление, что автор обращается к новичкам и пытается их убедить, что STMicroelectronics - это круто! Очень похоже на рекламную статью.

А вообще, я никогда не понимал одного момента. Вот спросите у любого web-разработчика, что лучше PHP или Python? Наверняка можно будет услышать, что PHP по сравнению с Python - унылое го..но, PHP давно умер, Python более гибок, Python увеличивает скорость разработки в разы и т.д. и т.п. Однако, львиная доля программистов по прежнему продолжает работать с PHP. Почему? :dont_know:

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

Еще такой момент. Где гарантия, что еще через 5 лет на рынок микроконтроллеров не ворвется новый лидер? И что? Все бросаем и хватаемся за новый камень? А еще через 5 лет все снова? Согласитесь, смешно. Вы же не меняете свои домашние компьютеры каждые 6 месяцев? А ведь они за это время морально устаревают и на рынке появляется что-то свежее, более производительное и современное.

Заранее прошу меня извинить за резкость в высказываниях и за возможно задетые чьи-то жизненные принципы.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение scorpi_0n »

Не берусь судить о количестве задач невыполнимых на Меге но думаю что их не мало. Просто много лет назад не было ничего более доступного и разжёванного. Скрежетали зубами но мирились. Сейчас все ругают Мегу на всех ресурсах и со знанием дела. Я думаю что это неспроста. И как мне кажется что ругают её те кто на ней долго сидел. То есть те кто её знает хорошо. И не верить им нет никаких оснований. Ну как-то так.
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение Skitalec777 »

scorpi_0n писал(а):Не берусь судить о количестве задач невыполнимых на Меге но думаю что их не мало. Просто много лет назад не было ничего более доступного и разжёванного. Скрежетали зубами но мирились. Сейчас все ругают Мегу на всех ресурсах и со знанием дела. Я думаю что это неспроста. И как мне кажется что ругают её те кто на ней долго сидел. То есть те кто её знает хорошо. И не верить им нет никаких оснований. Ну как-то так.
Лично у Вас большой опыт в работе с микроконтроллерами вообще, и с AVR в частности?
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Программирование входо-выходов в Atmel Studio 7

Сообщение scorpi_0n »

Нет. Опыта практически нет. Но когда мне улыбаясь просто предложили подарить горсть Мег и Пиков я задумался. А нужны ли они мне если они уже никому не нужны? Мне и с кодом для СТМ8 помогли. Уверяли что Мега так быстро экран не закрасит. Не знаю. Но не доверять людям вообще нельзя.
Ответить

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