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

 
 
6 страниц V  « < 2 3 4 5 6 >  
Reply to this topicStart new topic
> at91, помогите разобраться
zltigo
сообщение Aug 18 2008, 21:40
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(defunct @ Aug 18 2008, 23:07) *
..и нет единственно правильного стиля.

Нет,но тупо без раздумий применять все то, что кто-то, пусть и сам smile.gif Atmel наваял - не следует. Я работаю со многими контроллерами и компиляторами и после раздумий принял решение прогибать творцов хидеров и компиляторов под себя, а не наоборот.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 18 2008, 21:50
Сообщение #47


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(zltigo @ Aug 19 2008, 00:40) *
Нет,но тупо без раздумий применять все то, что кто-то, пусть и сам smile.gif Atmel наваял - не следует. Я работаю со многими контроллерами и компиляторами и после раздумий принял решение прогибать творцов хидеров и компиляторов под себя, а не наоборот.

Именно хорошее слово прогибать, а не отбрасывать как ересь все подряд и потом с Божьей помощью и с помощью ДШ писать с чистого листа.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 18 2008, 21:52
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Aug 19 2008, 01:05) *
Человек ко всему привыкает, но я себя любимого люблю больше, посему так не пишу smile.gif

Простая тренировка пальцев smile.gif Согласитесь, что при написании драйвера периферийного устройства время набора буковок составляет очень небольшой процент.

Цитата(defunct @ Aug 19 2008, 01:07) *
в этой теме все крутится вокруг
lib_AT91 - которую некоторые рекомендуют выбросить и забыть как книжку Редькина smile.gif

Настоятельно и, по-моему, обоснованно рекомендую.

Цитата(defunct @ Aug 19 2008, 01:07) *
и вокруг "->" (тут уже imho безосновательно).

Как я уже писал, против структур периферии я ничего не имею, тем более что есть возможность маневра. У Atmel'а еще не самый худший вариант, если вспомнить, например, TI C28xx wacko.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 18 2008, 21:57
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(defunct @ Aug 18 2008, 23:36) *
Драсти, а чем тогда я пользуюсь? ;>

Вы пользуетесь макросами типа
#define pNAME *(struct *)0xXXXXXXX
Это не указатель и, как уже писал, данное Вами имя в венгерском стиле pointerNAME - ошибочно.
Цитата(defunct @ Aug 18 2008, 23:50) *
...не отбрасывать как ересь все подряд и потом с Божьей помощью и с помощью ДШ писать с чистого листа.

Зачем с чистого smile.gif берется исходный и ересь выжигается каленым железом smile.gif. Причем это проделыватся не за раз а по мере необходимости и сопровождается чтением документации и комментированием нюансов, которое, как привило в хидерах практически отсутсттвует.
Цитата(aaarrr @ Aug 18 2008, 23:52) *
Простая тренировка пальцев smile.gif Согласитесь, что при написании драйвера периферийного устройства время набора буковок составляет очень небольшой процент.

С набором проблем никаких (и ручками и автодополнеием по тэгам)- проблемы c последующем чтением. Ошибки я предпочитаю искать глазами и головой а не долгими брождениями в отладчике и перечитываю написанное много.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 18 2008, 21:57
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Aug 19 2008, 01:54) *
Зачем с чистого smile.gif берется исходный и ересь выжигается каленым железом smile.gif

Для этого нужно иметь некоторый опыт. А тут пытались ересь впарить невинным душам smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 18 2008, 21:58
Сообщение #51


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(zltigo @ Aug 19 2008, 00:54) *
Вы пользуетесь макросами типа
#define NAME *(struct *)0xXXXXXXX
Это не указатель.

Нет Вы не правы. Макросы вот такие:
((AT91PS_EMAC) 0xFFFDC000)
эквивалентно:
((Struct *) 0xFFFDC000)

т.е. это честные указатели на группы регистров.

Цитата
Настоятельно и, по-моему, обоснованно рекомендую.

Если Вы про Редькина, то я согласен.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 18 2008, 22:02
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(defunct @ Aug 19 2008, 01:58) *
Если Вы про Редькина, то я согласен.

Нет, как не трудно догадаться, не про Редькина. Хотя его книжкам самое место в печке.

Цитата(zltigo @ Aug 19 2008, 01:57) *
Ошибки я предпочитаю искать глазами и головой а не долгими брождениями в отладчике и перечитываю написанное много.

Я тоже. Мозг требуху типа AT91S_ фильтрует достаточно легко.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 18 2008, 22:06
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(aaarrr @ Aug 18 2008, 23:57) *
А тут пытались ересь впарить невинным душам smile.gif

О чем и речь sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 18 2008, 22:09
Сообщение #54


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Aug 19 2008, 01:02) *
Нет, как не трудно догадаться, не про Редькина.

Насчет же lib_AT91 я также приводил обоснованные примеры где ее использование сокращает уйму времени - ADCConfigureTimings, PDC_ReceiveFrame (да и все что связано с DMA), все без исключения xx_Configure хотя бы в образовательных целях. Имена функций более вменяемые по-сравнению с названиями регистров "EPRST" и иже с ним.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 18 2008, 22:10
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(defunct @ Aug 18 2008, 23:58) *
т.е. это честные указатели на группы регистров.

smile.gif если это указатели, то запись
pNAME = x присваивает значение УКАЗАТЕЛЮ а не обьекту smile.gif. Посему вычитывайте макросы дальше до прояснения написанного в них.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 18 2008, 22:15
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(defunct @ Aug 19 2008, 02:09) *
Насчет же lib_AT91 я также приводил обоснованные примеры где ее использование сокращает уйму времени - ADCConfigureTimings, PDC_ReceiveFrame (да и все что связано с DMA), все без исключения xx_Configure хотя бы в образовательных целях.

Какой толк в таком "образовании"? Сами же писали, что можно использовать PDC_ReceiveFrame и забить на чтение документации.
Вот научится человек ADCConfigureTimings вызывать и никогда не узнает, как этот ADC работает.

Я тоже привел обоснованный пример где функция из lib_ содержит 2 ошибки.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 18 2008, 22:16
Сообщение #57


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(zltigo @ Aug 19 2008, 01:10) *
pNAME = x присваивает значение УКАЗАТЕЛЮ а не обьекту smile.gif. Посему вычитывайте макросы дальше до прояснения написанного в них.

это константный указатель.
pBASE_NAME = x - не имеет смысла вообще.


#define X (U32 *)(0xFFFF0000)

X = x; <- не имеет смысла
*X = x; пишем x по адресу 0xFFFF0000.



typedef struct tagMYSTRUCT
{
U32 x, y;
} *PMYSTRUCT;

#define X ((PMYSTRUCT) 0xFFFF0000)

X - структура из элементов x, y по адресу 0xFFFF0000
X = z; - не имеет смысла.
X->x = z; пишем z по адресу 0xFFFF0000
X->y = z; пишем z по адресу 0xFFFF0000 + 4
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 18 2008, 22:28
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(defunct @ Aug 19 2008, 00:16) *
это константный указатель.

Может стоит освежить знания языка? А то, право, как-то странно общаться sad.gif. Константный, не константный дело второе.
Цитата
pBASE_NAME = x - не имеет смысла вообще.

Ага, но именно ТАК Вы пишите и работает по той причине, что это на самом деле НЕ указатель (мамнадчатый раз уже пишу) хотя перед ним и у Вас ОШИБОЧНО стоит 'p' а выражение эквивалентное:
*pBASE_NAME = x;

Цитата(defunct @ Aug 19 2008, 00:16) *
это константный указатель.

Может стоит освежить знания языка? А то, право, как-то странно общаться sad.gif. Константный, не константный дело второе.
Цитата
pBASE_NAME = x - не имеет смысла вообще.

Ага, но именно ТАК Вы пишите и работает по той причине, что это на самом деле НЕ указатель (мамнадчатый раз уже пишу) хотя перед ним у Вас и стоит 'p'. Это, простите, Ваш "стиль" и Ваш код с котрого все началось:
Цитата(defunct @ Aug 18 2008, 22:40) *
pPITC->PITC_PIMR = x;

Так какому из Вас теперь верить smile.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 18 2008, 22:40
Сообщение #59


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Aug 19 2008, 01:15) *
Какой толк в таком "образовании"? Сами же писали, что можно использовать PDC_ReceiveFrame и забить на чтение документации.

Забить? я прямо так и сказал? Не может быть.
Вот мои слова:
Цитата
По ней сразу видно как надо работать с DMA даже без вникания в ДШ.

Прочитать то ДШ надо, но если не пользовать библиотеку, то его еще надо понять/вникнуть в тонкости, а функция - дает понимание того как должно быть, сразу после поверхностного ознакомления с ДШ.

Цитата
Я тоже привел обоснованный пример где функция из lib_ содержит 2 ошибки.
Честно сказать, я не нашел функций на которые Вы ссылались в моей библиотеке, поэтому не могу ни подтвердить, ни опровергнуть.
//* Generated : AT91 SW Application Group 09/12/2005 (15:39:14)


Цитата(zltigo @ Aug 19 2008, 01:28) *
Может стоит освежить знания языка? А то, право, как-то странно общаться sad.gif.

ок давайте освежим
это что:
(int *)(0xFFFF0000)

Цитата
Ага, но именно ТАК Вы пишите и работает по той причине, что это на самом деле НЕ указатель (мамнадчатый раз уже пишу) хотя перед ним и у Вас ОШИБОЧНО стоит 'p' а выражение эквивалентное:
*pBASE_NAME = x;

'p' там правильно стоит.
Выражение эквивалентное *pBASE_NAME = x; - запись ПО адресу pBASE_BAME.


Цитата
Цитата
pBASE_NAME = x - не имеет смысла вообще.

Ага, но именно ТАК Вы пишите и работает по той причине, что это на самом деле НЕ указатель (мамнадчатый раз уже пишу) хотя перед ним и стоит 'p'. Это, простите, Ваш "стиль" и Ваш код:
Код
pPITC->PITC_PIMR = x;


Как так?
pPITC->PITC_PIMR = x; != pPITC = x;

pPITC->PITC_PIMR = x; == *((U32 *)pPITC + PIMR_OFFSET) = x;
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 18 2008, 22:40
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(defunct @ Aug 19 2008, 02:29) *
Вот мои слова:

А это, интересно, чьи:
Цитата
Можно ничего не читая про DMA правильно с ним работать!


Цитата(defunct @ Aug 19 2008, 02:29) *
Честно сказать, я не нашел функций на которые Вы ссылались в моей библиотеке, поэтому не могу ни подтвердить, ни опровергнуть.
//* Generated : AT91 SW Application Group 09/12/2005 (15:39:14)

Google по этой строчке находит at91sam7x256.h. Неужели в одну секунду lib_ и .h сделали?
Go to the top of the page
 
+Quote Post

6 страниц V  « < 2 3 4 5 6 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:06
Рейтинг@Mail.ru


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