реклама на сайте
подробности

 
 
12 страниц V  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
> Как ПРАВИЛЬНО программировать на С++, Вопросы по программированию на С++ для микроконтроллеров.
Quasy
сообщение Sep 27 2010, 08:09
Сообщение #121


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 23-09-10
Пользователь №: 59 665



Цитата(MrYuran @ Sep 27 2010, 12:06) *
Тут пришёл поручик Ржевский и всё опошлил.

Скажите, Quasy, а нафига козе боян зачем вообще нужна ваша атомарность?
Я пока не вижу особых критических моментов.
Выставили байт - подали отдельно строб.
Тем более что при вашем битовом анализе всё равно вручную всё обеспечивать.

Какой строб, господи? Я просил пример реализации записи числа в определенную группу...
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Sep 27 2010, 08:12
Сообщение #122


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(Quasy @ Sep 27 2010, 15:06) *
Кто сказал про "класс"? Я просил результирующий асм-код и критикую его. Где будет решаться проблема неатомарности - это я и хотел понять. Причем критика не понедельничного злого бодуна, а вполне конструктивная: я предлагаю путь.

Тут по-моему уже се запутались в вопросе - что вы собственно предлагаете то?
Топикстартер показал решение предложенной вами задачи, используя его инструментарий. Показал на тестовом примере + ассемблерный листинг.
Продемонстрируйте свой вариант и асм листинг. Тогда можно будет предметно говорить.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Sep 27 2010, 08:19
Сообщение #123


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Quasy @ Sep 27 2010, 12:06) *
Кто сказал про "класс"? Я просил результирующий асм-код и критикую его. Где будет решаться проблема неатомарности - это я и хотел понять. Причем критика не понедельничного злого бодуна, а вполне конструктивная: я предлагаю путь.

На самом деле вы ничего не предлагается. Вы ведете себя как Гуру, который достиг просветления и ему стали понятны какие-то более высокие материи, чем всем остальным. И куда уж нам тут всем, до Вас - небожителей.
Вместо того, чтобы привести четкий и понятный код, хоть на Си, хоть на ассемблере - и сказать: "Я считаю, что так правильно потому-то и потому-то" (ведь каждый может иметь мнение и опыт, на котором оно основано), вы пишите какими-то намеками, недомолвками и т.п.
Из чего напрашивается вывод - либо вы сами не знаете, как... Либо вы боитесь показать тот код, который считаете правильным, поскольку он может быть подвергнут критике.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Quasy
сообщение Sep 27 2010, 08:29
Сообщение #124


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 23-09-10
Пользователь №: 59 665



Цитата(Dima_G @ Sep 27 2010, 12:12) *
Тут по-моему уже се запутались в вопросе - что вы собственно предлагаете то?
Топикстартер показал решение предложенной вами задачи, используя его инструментарий. Показал на тестовом примере + ассемблерный листинг.
Продемонстрируйте свой вариант и асм листинг. Тогда можно будет предметно говорить.

Как, опять непонятно? Как, это я со стропами-стробами запутался? smile.gif Еще раз: я показал автору слабые места и вариант куда грести. Могу и больше подсказать, если надо. И предлагаю уважаемому (без всяких колкостей - уважаемому за свой труд) автору в хорошем смысле слова разозлиться(вот сверхзадача моих постов) и отшлифовать свою библиотечку, чтобы она стала бриллиантом. Для XMEGA уже хорошо. Вот для просто меги - пусть разозлится.

Цитата(Andy Mozzhevilov @ Sep 27 2010, 12:19) *
На самом деле вы ничего не предлагается. Вы ведете себя как Гуру, который достиг просветления и ему стали понятны какие-то более высокие материи, чем всем остальным. И куда уж нам тут всем, до Вас - небожителей.
Вместо того, чтобы привести четкий и понятный код, хоть на Си, хоть на ассемблере - и сказать: "Я считаю, что так правильно потому-то и потому-то" (ведь каждый может иметь мнение и опыт, на котором оно основано), вы пишите какими-то намеками, недомолвками и т.п.
Из чего напрашивается вывод - либо вы сами не знаете, как... Либо вы боитесь показать тот код, который считаете правильным, поскольку он может быть подвергнут критике.

Что ж, мне жаль вас, не видящим предложений хотя бы по замене RMW-записи в порт операциями SBI & CBI. Повторюсь, если автору потребуется - помогу более детально. По крайней мере как я вижу возможности различить варианты RMW порта и побитовые операции.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 27 2010, 08:30
Сообщение #125


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Quasy @ Sep 27 2010, 12:09) *
Какой строб, господи? Я просил пример реализации записи числа в определенную группу...

Ну, записали число в группу...
Дальше что?
И для чего атомарность?
И что такое CBI/SBI?
Или по-вашему, кроме AVR, других контроллеров не существует?
Осмелюсь доложить, что в msp430 нет битовых команд.
Кроме того, компилятор, как правило, сам выбирает оптимальную реализацию - с помощью маски или битовых манипуляций.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Sep 27 2010, 08:31
Сообщение #126


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(Quasy @ Sep 27 2010, 15:24) *
Еще раз: я показал автору слабые места и вариант куда грести.

Вы про атомарность? Не нужна она здесь в явном виде! Более того - вредна. Посмотрите пример STL - там об атомарности ничего не говорится, а писали ее далеко не дураки.
Единственно, для себя я бы возможно добавил флаг атомарности в шаблон класса

Цитата(Quasy @ Sep 27 2010, 15:24) *
Могу и больше подсказать, если надо.

Покажите, это многим будет интересно. Как говорится - с миру по нитке..

Цитата(Quasy @ Sep 27 2010, 15:24) *
И предлагаю уважаемому (без всяких колкостей - уважаемому за свой труд) автору в хорошем смысле слова разозлиться(вот сверхзадача моих постов) и отшлифовать свою библиотечку, чтобы она стала бриллиантом. Для XMEGA уже хорошо. Вот для просто меги - пусть разозлится.

Так вы конкретно напишите: на Си (не обязательно круто - главное чтоб идею понять), просто словами (внятно). Что по-вашему необходимо добавить / исправить в библиотеке?
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Sep 27 2010, 08:40
Сообщение #127


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Quasy @ Sep 27 2010, 12:29) *
Что ж, мне жаль вас, не видящим предложений хотя бы по замене RMW-записи в порт операциями SBI & CBI. Повторюсь, если автору потребуется - помогу более детально. По крайней мере как я вижу возможности различить варианты RMW порта и побитовые операции.

Меня жалеть не нужно.
Научитесть на форуме общаться конструктивно. Телепатов тут нет. Есть мысль, предложение, обоснование - дайте код, который можно будет обсуждать. Предыдущее сообщение я написал, чтобы подчеркнуть только этот аспект.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Quasy
сообщение Sep 27 2010, 08:44
Сообщение #128


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 23-09-10
Пользователь №: 59 665



Цитата(Dima_G @ Sep 27 2010, 12:31) *
Вы про атомарность? Не нужна она здесь в явном виде! Более того - вредна. Посмотрите пример STL - там об атомарности ничего не говорится, а писали ее далеко не дураки.
Единственно, для себя я бы возможно добавил флаг атомарности в шаблон класса


Покажите, это многим будет интересно. Как говорится - с миру по нитке..


Так вы конкретно напишите: на Си (не обязательно круто - главное чтоб идею понять), просто словами (внятно). Что по-вашему необходимо добавить / исправить в библиотеке?

Весной накропал подобную библиотека для ATXMEGA. Но она на простом Си и активно использует макросы. Если подождать несколько дней - я приведу ее в удобоваримый вид и выложу для критики. Если от нее что-то останется, то, после того, как меня высушат после помоев, можно вместе ее портировать для ATmegи.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Sep 27 2010, 08:50
Сообщение #129


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Quasy @ Sep 27 2010, 12:44) *
Весной накропал подобную библиотека для ATXMEGA. Но она на простом Си и активно использует макросы. Если подождать несколько дней - я приведу ее в удобоваримый вид и выложу для критики.

Я думаю, будет достаточно, если вы выложите результат работы компилятора в виде листинга и поясните, что вы считаете в вашем случае лучше (если это не будет очевидным).


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Quasy
сообщение Sep 27 2010, 08:54
Сообщение #130


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 23-09-10
Пользователь №: 59 665



Цитата(Andy Mozzhevilov @ Sep 27 2010, 12:40) *
Меня жалеть не нужно.
Научитесть на форуме общаться конструктивно. Телепатов тут нет. Есть мысль, предложение, обоснование - дайте код, который можно будет обсуждать. Предыдущее сообщение я написал, чтобы подчеркнуть только этот аспект.

А телепатия и не нужна. Задача: Есть например, группа бит на портах: A.0, B.0, C.3, С.4. Надо записать в нее число 0x0A. То есть GROUP(0х0А); Вот вариант-образец как напишем без всяких инструментов: cbi PortA, 0; sbi PortB, 0; cbi PortC, 3; sbi PortC, 4; Хотелось бы знать, не может ли эта библиотека сделать подобный код? Все!
Go to the top of the page
 
+Quote Post
neiver
сообщение Sep 27 2010, 08:56
Сообщение #131


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Я прекрасно понимаю, о каких проблемах говорит Quasy.
Он имеет ввиду ситуацию когда прерывание происходит между in и out и в этом прерывании происходит запись в тот-же порт.
При этом значение записанное в прерывании потеряется.
В этом случае атомарность записи действительно нужна, но ее легко добится использованием того-же ATOMIC_BLOCK.
В остальных случаях она лишняя.


Код
  c2:    82 b3           in    r24, 0x12; 18
  c4:    87 7e           andi    r24, 0xE7; 231
  c6:    80 61           ori    r24, 0x10; 16
  c8:    82 bb           out    0x12, r24; 18


Кстати комманды SBI & CBI выполняются за 2 такта. In/Out/andi/Ori - каждая за один такт. По тактам одинаково выходит даже в этом примере.


Да, для MSP430 я этот подход уже адаптировал. Компилируется под mspgcc и под IAR.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 27 2010, 08:58
Сообщение #132


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Quasy @ Sep 27 2010, 12:54) *
А телепатия и не нужна. Задача: Есть например, группа бит на портах: A.0, B.0, C.3, С.4. Надо записать в нее число 0x0A. То есть GROUP(0х0А); Вот вариант-образец как напишем без всяких инструментов: cbi PortA, 0; sbi PortB, 0; cbi PortC, 3; sbi PortC, 4; Хотелось бы знать, не может ли эта библиотека сделать подобный код? Все!

Я вам более реальный пример приведу.
Прибегает снабженец и говорит такую речь:
У атмеля проблемы с поставками, поэтому вместо ATMega128 я закупил ящик msp430f149.
У вас неделя, чтобы привести в порядок документацию.

Вопрос: что будет делать ваша библиотека?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Quasy
сообщение Sep 27 2010, 09:00
Сообщение #133


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 23-09-10
Пользователь №: 59 665



Не, ну это хоть сейчас... Вот группа : PORTA.0, PORTB.0, PORTR.1 и PORTR.5. Даю макрос: Записать в нее (а именно в регистр DIR порта) число 09. Листинг вот он:
203 PUT_CONST_GROUP( 0, _DIR, 0x09 );
\ 000000D8 9A80 SBI 0x10, 0x00
\ 000000DA 9881 CBI 0x10, 0x01
\ 000000DC E200 LDI R16, 32
\ 000000DE 930007E1 STS 2017, R16
\ 000000E2 E002 LDI R16, 2
\ 000000E4 930007E2 STS 2018, R16
Go to the top of the page
 
+Quote Post
neiver
сообщение Sep 27 2010, 09:00
Сообщение #134


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Цитата(Quasy @ Sep 27 2010, 12:54) *
А телепатия и не нужна. Задача: Есть например, группа бит на портах: A.0, B.0, C.3, С.4. Надо записать в нее число 0x0A. То есть GROUP(0х0А); Вот вариант-образец как напишем без всяких инструментов: cbi PortA, 0; sbi PortB, 0; cbi PortC, 3; sbi PortC, 4; Хотелось бы знать, не может ли эта библиотека сделать подобный код? Все!


Это можно реализовать. Но я не уверен, что нужно. Это оптимизация под один частный случай использования под определенной семейство МК. В этой библиотеке есть более важные варианты использования, которые надо оптимизировать.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 27 2010, 09:02
Сообщение #135


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(neiver @ Sep 27 2010, 12:56) *
Я прекрасно понимаю, о каких проблемах говорит Quasy.
Он имеет ввиду ситуацию когда прерывание происходит между in и out и в этом прерывании происходит запись в тот-же порт.

А, ну вот, единственный случай.
"-Доктор, когда я так делаю...
- А вы так не делайте!"
Ну и, писали уже - атомик блок. Без вариантов.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

12 страниц V  « < 7 8 9 10 11 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.02116 секунд с 7
ELECTRONIX ©2004-2016