а что там может быть такого? ну написать __flash const и всех делов...oleg110592 писал(а):это еще автор до констант не добрался в Program Space
Программирование входо-выходов в Atmel Studio 7
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18590
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Программирование входо-выходов в Atmel Studio 7
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: Программирование входо-выходов в Atmel Studio 7
может не так выразился, что бы студия стала понимать PORT.x
-
Pnjom-Penb
- Мучитель микросхем
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Re: Программирование входо-выходов в Atmel Studio 7
То есть, не получилось сделать это в рамках стандарта? Ну, тогда посмотрите, например, как это сделано в IAR'е.Mishany писал(а):может не так выразился, что бы студия стала понимать PORT.x
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование входо-выходов в Atmel Studio 7
PORTB.1 это уже на уровне компилятора или недокомпилятора. Такие "извраты" были сделаны отнюдь не от хорошей жизни - имхо компиляторостроители вводили сие безобразие (с точки зрения настоящего Си) ввиду убогости некоторых 8-ми битных микроконтроллеров. Например Hi-tech picc, впоследствии купленный Микрочипом (теперь называется XC8) , трудно назвать "C-like", альтернатив ему для PIC12/14/16 практически нет. В нем присутствует и битовые переменные (bit) и 24 битные переменные (unsigned short long) - все вроде не по стандарту. Использование 24 битной переменной вместо 32 битной давало приличный выигрыш в использовании флэша или otp rom.
Из CV документации:
Из CV документации:
т.е. "XXXX.1" будет работать в диапазоне адресов регистров от 0 до 1Fh, вспомним, что теперь у некоторых авров порты и регистры периферии в эту область не поместились и это там работать не будет. В современной документации, перед вышеприведенной цитатой, предлагается устанавливать биты стандартно, согласно всем канонам Си. Так что автору темы скорее всего попался устаревший код для 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.
а PROGMEM сейчас для AVR GCC уже не нужен?ну написать __flash const
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: Программирование входо-выходов в Atmel Studio 7
у меня не стоит иар, а для посмотреть что то не хочеться его ставить 
- Реклама
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование входо-выходов в Atmel Studio 7
в хидерах иара:
для порта B:
SFR_B_N(0x0B, PORTD, PORTD7, PORTD6, PORTD5, PORTD4, PORTD3, PORTD2, PORTD1, PORTD0)
Спойлер
Код: Выделить всё
#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;
***************************************************************************/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
Никакого отношения к реализации стандарта это не имеет - Вы же не станете утверждать, что "нет IAR'а для AVR'а и CV - пророк его", - или станете?oleg110592 писал(а):имхо компиляторостроители вводили сие безобразие ... ввиду убогости некоторых 8-ми битных микроконтроллеров
ЯВУ вообще не касаются качества ЦПУ на уровне синтаксиса языка, зависимость существует лишь на уровне подстановки объектного кода. А это уже за рамками синтаксиса ЯВУ. Никто не мешал автору ЦВ реализовать доступ к битам портов В/В с помощью битовых полей, определяемых в строгом соответствии со стандартом (как в IAR'е, например). Всякие там "в диапазоне адресов от 0 до 1Фх" - это вопросы реализации подстановки объектного кода, а не синтаксиса языка.
Есть два "но":oleg110592 писал(а):В современной документации, ... предлагается ... согласно всем канонам Си.
1.Остается синтаксис, нарушающий стандарт языка.
2.Остается проблема непереносимости, помноженная на проблему повторного НЕиспользования кода. Собственно, ТС именно с этой проблемой и столкнулся, когда в поисках примеров нарвался на исходники, писанные на якобы-Си, которые Сишным компилятором были совершенно справедливо посланы нафик.
Заметьте - проблемы эти были с бородой, когда Паша Гайдук еще под стол пешком ходил, и стандарты языков програмирования устанавливаются именно затем, чтобы такие проблемы исключить. Полагаю, как человек неглупый, он прекрасно понимал, что расставляет грабли не для себя любимого, а для ни в чем не повинных леммингов, которых ему почему-то было совсем не жаль, хотя профессия-то у него - одна из гуманных.
Однако, не следует забывать, что проблемы ЦВ, очень мягко говоря, "не исчерпываются" тем, что мы тут обсуждаем. Их так много, что в пору заняться кому-нибудь их классификацией, этимологией, анамнезами, архетипами и т.д., и т.п. Правда, надо быть не вполне адекватным, чтобы променять полноценную жизнь на подобный абортарий, по каковой причине, повидимому, такие фанатики и не попадаются в сколько-нибудь заметных количествах.
PS
Признаюсь, в столь позднее время он и у меня уже не стоит - возраст.Mishany писал(а):у меня не стоит иар, ...
Может, в другой раз...
Последний раз редактировалось Pnjom-Penb Пт ноя 13, 2015 00:04:17, всего редактировалось 1 раз.
Re: Программирование входо-выходов в Atmel Studio 7
В ИАРе не лучше. Там свои прибабахи иPnjom-Penb писал(а):Никто не мешал автору ЦВ реализовать доступ к битам портов В/В с помощью битовых полей, определяемых в строгом соответствии со стандартом (как в IAR'е, например).
2.Остается проблема непереносимости
Ещё есть МикроСИ и прочее. Ибо нефиг.
Однако, не следует забывать, что проблемы ЦВ, очень мягко говоря, "не исчерпываются" тем, что мы тут обсуждаем. Их так много, что в пору заняться кому-нибудь их классификацией, этимологией, анамнезами, архетипами и т.д., и т.п.
-
Pnjom-Penb
- Мучитель микросхем
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Re: Программирование входо-выходов в Atmel Studio 7
Давно уже отошел, но все же буду признателен за конкретику. Для общего развития.scorpi_0n писал(а):В ИАРе не лучше. Там свои прибабахи и ... проблема непереносимости
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование входо-выходов в Atmel Studio 7
язык Си для разве для микроконтроллеров изначально был придуман? У того, для чего он был придуман не было ни еепром ни флэша ни команд обращения к одному биту порта (ежли не ошибаюсь) - посему микроконтроллерным компиляторам все равно пришлось отходить от стандарта. К тому же я пример вероотступничества приводил не для CV - проекты мои в основном на иаре сделаны (уже писал об этом), для пиков на хайтеч и хс8.
Часы, правда, на матрицах у меня третий год работают - проект с Радиокота, написано на CV, значит на CV часы то писать тоже можно
.
Насчет переносимости - переносил проекты (несложные) с PIC -> AVR -> STM8 -> STM32 особых проблем не испытывал, например если в коде не писать везде типа PORTB.1=1, а сделать дефайн (извиняюсь за прописную истину) вначале кода типа #define LED PORTB.1 и далее писать LED - многие проблемы переносимости испаряются.
Автора код с PORTB.1, имхо, легко перевел на иар авр - заменить в редакторе ".1" на "_Bit1" и т.д. и вуаля - все работает.
А холивар с компиляторами для авр развивать смысла нет ибо они устарели (имхо) - полно сейчас не ущербных дешевых микроконтроллеров где можно писать код совсем не отступая от стандартов Си.
Часы, правда, на матрицах у меня третий год работают - проект с Радиокота, написано на 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
Большое спасибо всем, кто ответил! Из Ваших ответов я почерпнул для себя много нового, о чем ранее даже не задумывался. Однако, для меня участие в подобной дискуссии пока что равносильно ситуации из анекдота, когда сын первоклассник спросил у своего папы, профессора математики, как правильно написать цифру 8, а он ему ответил,что нет ничего проще. Нужно лишь знак бесконечности повернуть на Пи/2.
К сожалению, новые знания вызывают еще больше вопросов. Например, я так и не понял про Atmel Studio. Данная IDE стоит на страже стандартов языка Си или нет? Написанный в свободной форме код попросту не будет компилироваться? Или я что-то не понял?
К сожалению, новые знания вызывают еще больше вопросов. Например, я так и не понял про Atmel Studio. Данная IDE стоит на страже стандартов языка Си или нет? Написанный в свободной форме код попросту не будет компилироваться? Или я что-то не понял?
-
Skitalec777
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Чт ноя 12, 2015 08:13:38
Re: Программирование входо-выходов в Atmel Studio 7
А можно поподробнее рассказать про моральную старость AVR? В чем это проявляется?oleg110592 писал(а): А холивар с компиляторами для авр развивать смысла нет ибо они устарели (имхо) - полно сейчас не ущербных дешевых микроконтроллеров где можно писать код совсем не отступая от стандартов Си.
Re: Программирование входо-выходов в Atmel Studio 7
Да наверное во всём. Это как старый чемодан. Вчера купил СТМ8. Вроде ничего особенного. Прикрутил ТФТ от нокии 240х320. Время заливки экрана одним цветом 19,2мс. Шустренько как показалось. А везде пишут что Мега даже в этом тормозная.
-
Skitalec777
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Чт ноя 12, 2015 08:13:38
Re: Программирование входо-выходов в Atmel Studio 7
Ну, это не аргумент. Вот здесь об этом уже давно дискутируют. И не все там так однозначно. Вот лишь некоторые посты:scorpi_0n писал(а):Да наверное во всём. Это как старый чемодан. Вчера купил СТМ8. Вроде ничего особенного. Прикрутил ТФТ от нокии 240х320. Время заливки экрана одним цветом 19,2мс. Шустренько как показалось. А везде пишут что Мега даже в этом тормозная.
HHIMERA писал(а):Если всё так плохо... то и не вижу смысла заморачиваться... При переходе с STM на АВР проблем было бы не меньше...
В общем... тут обсуждать то и нечего...
pcb писал(а): Самая короткая дорога, та, которую знаешь - народная мудрость.![]()
Как-то так...pcb писал(а): стм8 не шибко шустрая, среднее количество периферии.
Re: Программирование входо-выходов в Atmel Studio 7
Спасибо! Почитал. Не берусь судить об аргументах и однозначностях. Как мне сказали вся прелесть МК и заключается в мелочах. Когда их уже становится много они перерождаются в преимущество. Я вообще решил осваивать СТМ32 а СТМ8 попробовал из-за поддержки его СТлинком и низкой цены.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование входо-выходов в Atmel Studio 7
статье 5 лет: http://www.compel.ru/lib/ne/2010/6/3-vo ... estv-stm8/Skitalec777 писал(а):А можно поподробнее рассказать про моральную старость AVR? В чем это проявляется?
через 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
Я могу в силу неопытности ошибаться, но, ИМХО, данная тема лежит в плоскости вопросов, подобных: какой автомобиль лучше?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. Почему?
Ответить на этот вопрос просто. Никто не будет менять привычный и удобный инструмент на другой, ради получения дополнительного, но, порой, ненужного функционала. Так и с микроконтроллерами. Никто не будет менять камень до тех пор, пока не возникнет в этом реальная необходимость, т.е. когда с его помощью невозможно будет решить поставленной задачи. А до этого момента все будут с умным видом кивать, в знак согласия с аргументами подобных статей, но работать по прежнему с AVR.
Еще такой момент. Где гарантия, что еще через 5 лет на рынок микроконтроллеров не ворвется новый лидер? И что? Все бросаем и хватаемся за новый камень? А еще через 5 лет все снова? Согласитесь, смешно. Вы же не меняете свои домашние компьютеры каждые 6 месяцев? А ведь они за это время морально устаревают и на рынке появляется что-то свежее, более производительное и современное.
Заранее прошу меня извинить за резкость в высказываниях и за возможно задетые чьи-то жизненные принципы.
Re: Программирование входо-выходов в Atmel Studio 7
Не берусь судить о количестве задач невыполнимых на Меге но думаю что их не мало. Просто много лет назад не было ничего более доступного и разжёванного. Скрежетали зубами но мирились. Сейчас все ругают Мегу на всех ресурсах и со знанием дела. Я думаю что это неспроста. И как мне кажется что ругают её те кто на ней долго сидел. То есть те кто её знает хорошо. И не верить им нет никаких оснований. Ну как-то так.
-
Skitalec777
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Чт ноя 12, 2015 08:13:38
Re: Программирование входо-выходов в Atmel Studio 7
Лично у Вас большой опыт в работе с микроконтроллерами вообще, и с AVR в частности?scorpi_0n писал(а):Не берусь судить о количестве задач невыполнимых на Меге но думаю что их не мало. Просто много лет назад не было ничего более доступного и разжёванного. Скрежетали зубами но мирились. Сейчас все ругают Мегу на всех ресурсах и со знанием дела. Я думаю что это неспроста. И как мне кажется что ругают её те кто на ней долго сидел. То есть те кто её знает хорошо. И не верить им нет никаких оснований. Ну как-то так.
Re: Программирование входо-выходов в Atmel Studio 7
Нет. Опыта практически нет. Но когда мне улыбаясь просто предложили подарить горсть Мег и Пиков я задумался. А нужны ли они мне если они уже никому не нужны? Мне и с кодом для СТМ8 помогли. Уверяли что Мега так быстро экран не закрасит. Не знаю. Но не доверять людям вообще нельзя.


