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

 
 
> at91, помогите разобраться
i.dmitry
сообщение Aug 15 2008, 19:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 8-07-07
Пользователь №: 28 963



Помогите разобраться, пожалуйста.

в Header AT91SAM7S256.h файле написано:
Код
typedef struct _AT91S_PMC {
    AT91_REG     PMC_SCER;     // System Clock Enable Register
    AT91_REG     PMC_SCDR;     // System Clock Disable Register
    AT91_REG     PMC_SCSR;     // System Clock Status Register
    AT91_REG     Reserved0[1];     //
    AT91_REG     PMC_PCER;     // Peripheral Clock Enable Register
    AT91_REG     PMC_PCDR;     // Peripheral Clock Disable Register
    AT91_REG     PMC_PCSR;     // Peripheral Clock Status Register
    AT91_REG     Reserved1[1];     //
    AT91_REG     PMC_MOR;     // Main Oscillator Register
    AT91_REG     PMC_MCFR;     // Main Clock  Frequency Register
    AT91_REG     Reserved2[1];     //
    AT91_REG     PMC_PLLR;     // PLL Register
    AT91_REG     PMC_MCKR;     // Master Clock Register
    AT91_REG     Reserved3[3];     //
    AT91_REG     PMC_PCKR[3];     // Programmable Clock Register
    AT91_REG     Reserved4[5];     //
    AT91_REG     PMC_IER;     // Interrupt Enable Register
    AT91_REG     PMC_IDR;     // Interrupt Disable Register
    AT91_REG     PMC_SR;     // Status Register
    AT91_REG     PMC_IMR;     // Interrupt Mask Register
} AT91S_PMC, *AT91PS_PMC;


далее ниже
Код
#define AT91C_BASE_PMC       ((AT91PS_PMC)     0xFFFFFC00) // (PMC) Base Address


в программе:
Код
    AT91C_BASE_PMC->PMC_SCER = AT91C_PMC_UDP;


правильно ли я понял, что AT91PS_PMC - указатель на структуру_AT91S_PMC.
AT91C_BASE_PMC - ее начальный адресс,
строчка в программе означает, в регистр PMC_SCER (по адресу AT91C_BASE_PMC + 5*AT91_REG) записать значение AT91C_PMC_UDP?

-----------------
теперь файл: lib_AT91SAM7S256.h

Код
__inline unsigned int AT91F_AIC_ConfigureIt (
    AT91PS_AIC pAic,  // \arg pointer to the AIC registers
    unsigned int irq_id,     // \arg interrupt number to initialize
    unsigned int priority,   // \arg priority to give to the interrupt
    unsigned int src_type,   // \arg activation and sense of activation
    void (*newHandler) () ) // \arg address of the interrupt handler
{
    unsigned int oldHandler;
    unsigned int mask;

    oldHandler = pAic->AIC_SVR[irq_id];

    mask = 0x1 << irq_id;
    //* Disable the interrupt on the interrupt controller
    pAic->AIC_IDCR = mask;
    //* Save the interrupt handler routine pointer and the interrupt priority
    pAic->AIC_SVR[irq_id] = (unsigned int) newHandler;
    //* Store the Source Mode Register
    pAic->AIC_SMR[irq_id] = src_type | priority;
    //* Clear the interrupt on the interrupt controller
    pAic->AIC_ICCR = mask;

    return oldHandler;
}


как компилятор узнает адрес регистра AIC_IDCR?
Код
pAic->AIC_IDCR = mask;


ведь pAic это есть AT91PS_AIC, но на какой начальный адрес он указывает НЕТ в библиотеке
Код
typedef struct _AT91S_AIC {
    AT91_REG     AIC_SMR[32];     // Source Mode Register
    AT91_REG     AIC_SVR[32];     // Source Vector Register
    AT91_REG     AIC_IVR;     // IRQ Vector Register
    AT91_REG     AIC_FVR;     // FIQ Vector Register
    AT91_REG     AIC_ISR;     // Interrupt Status Register
    AT91_REG     AIC_IPR;     // Interrupt Pending Register
    AT91_REG     AIC_IMR;     // Interrupt Mask Register
    AT91_REG     AIC_CISR;     // Core Interrupt Status Register
    AT91_REG     Reserved0[2];     //
    AT91_REG     AIC_IECR;     // Interrupt Enable Command Register
    AT91_REG     AIC_IDCR;     // Interrupt Disable Command Register
    AT91_REG     AIC_ICCR;     // Interrupt Clear Command Register
    AT91_REG     AIC_ISCR;     // Interrupt Set Command Register
    AT91_REG     AIC_EOICR;     // End of Interrupt Command Register
    AT91_REG     AIC_SPU;     // Spurious Vector Register
    AT91_REG     AIC_DCR;     // Debug Control Register (Protect)
    AT91_REG     Reserved1[1];     //
    AT91_REG     AIC_FFER;     // Fast Forcing Enable Register
    AT91_REG     AIC_FFDR;     // Fast Forcing Disable Register
    AT91_REG     AIC_FFSR;     // Fast Forcing Status Register
} AT91S_AIC, *AT91PS_AIC;


спасибо

Сообщение отредактировал i.dmitry - Aug 15 2008, 19:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Aug 19 2008, 06:15
Сообщение #2


Гуру
******

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



Тем, кто имеет слабость лениться думать самостоятельно, наличие этой библиотеки может навредить. А для остальных использование lib_ просто лишено смысла по причине примитивности функций и простоты периферии SAM'ов.

Как разработчик я бы предпочел иметь от Atmel'а пустую errat'у, а не сомнительного качества библиотеку.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 19 2008, 08:52
Сообщение #3


Гуру
******

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



Цитата(aaarrr @ Aug 19 2008, 08:15) *
Тем, кто имеет слабость лениться думать самостоятельно, наличие этой библиотеки может навредить.

Для начинающих это еще сразу дает образчик дурнейшего стиля программирования с функциями в хидерах, многократно обернутых, зачастую просто небрежно написанных... При этом все запихивается а один файл....Чему это может научить? Ну разве только инлайнить smile.gif, правда бездумно sad.gif, даже одну строчку.



Цитата(aaarrr @ Aug 19 2008, 10:36) *
...проблем с multiple definition быть не должно.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 19 2008, 10:34
Сообщение #4


кекс
******

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



Цитата(zltigo @ Aug 19 2008, 11:52) *
это еще сразу дает образчик дурнейшего стиля программирования с функциями в хидерах, многократно обернутых, зачастую просто небрежно написанных...

Нормальный там стиль.
inline функциям как раз и место только в хидерах, они по своей природе равносильны макросам.
Качество кода я тоже демонстрировал - абсолютно ничего лишнего, одного взгляда достаточно для понимания сути. Коментарии тоже в порядке.
Цитата
При этом все запихивается а один файл....Чему это может научить?

А почему бы и нет. Чем это плохо если речь идет о hal функциях. Неужели удобнее цеплять с десяток хидеров, по одному для каждой мелочи типа SPI?
Цитата
как впрочем и выбрасывать неиспользованые функции, хоть они и с __inline

Хоть один компилятор не выбрасывающий неиспользуемые __inline функции можете назвать?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 19 2008, 11:19
Сообщение #5


Гуру
******

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



Цитата(defunct @ Aug 19 2008, 14:34) *
Качество кода я тоже демонстрировал - абсолютно ничего лишнего, одного взгляда достаточно для понимания сути. Коментарии тоже в порядке.

По поводу качества кода: Вы AT91F_PITInit не нашли? Или мы обсуждаем только положительные стороны lib_?

Copy->paste комментарии - это порядок?

Цитата(defunct @ Aug 19 2008, 14:34) *
А почему бы и нет. Чем это плохо если речь идет о hal функциях. Неужели удобнее цеплять с десяток хидеров, по одному для каждой мелочи типа SPI?

А Вам удобно редактировать файл размером 150 кбайт? А если туда еще HAL для EMAC'а и USB запихать - еще удобней станет?


Да, нашел я у себя в закромах Вашу версию lib, AT91F_PITInit там, естественно, есть.

Код
//* File Name           : lib_AT91SAM7X256.h
//* Object              : AT91SAM7X256 inlined functions
//* Generated           : AT91 SW Application Group  09/12/2005 (15:39:14)
...
//* CVS Reference       : /lib_pitc_6079A.h/1.2/Thu Nov  4 14:01:11 2004//

...


/* *****************************************************************************
                SOFTWARE API FOR PITC
   ***************************************************************************** */
//*----------------------------------------------------------------------------
//* \fn    AT91F_PITInit
//* \brief System timer init : period in µsecond, system clock freq in MHz
//*----------------------------------------------------------------------------
__inline void AT91F_PITInit(
        AT91PS_PITC pPITC,
        unsigned int period,
        unsigned int pit_frequency)
{
    pPITC->PITC_PIMR = period? (period * pit_frequency + 8) >> 4 : 0; // +8 to avoid %10 and /10
    pPITC->PITC_PIMR |= AT91C_PITC_PITEN;    
}
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 19 2008, 12:18
Сообщение #6


кекс
******

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



Цитата(aaarrr @ Aug 19 2008, 14:19) *
По поводу качества кода: Вы AT91F_PITInit не нашли? Или мы обсуждаем только положительные стороны lib_?

Нашел. Да с Вами можно согласиться - это баг.
Правда ничего ужасающе страшного в нем на мой взгляд нет - вопрос округления.
Для маленьких значений period'a (единицы us) точного значения не будет практически никогда, добавляй туда -1 или не добавляй, на 55Mhz их реализация будет даже более точно работать.
Для больших значений периода доли us не играют роли.

Плюс это не единственная функция для настойки PIT'a в этой библиотеке.
Цитата
Copy->paste комментарии - это порядок?

Не коментарии, а шапки функций. Это простительно, на brief редко кто смотрит, а в коде с коментариями порядок.

Цитата
А Вам удобно редактировать файл размером 150 кбайт? А если туда еще HAL для EMAC'а и USB запихать - еще удобней станет?

1. Мне привычно работать с большими файлами.
2. Меня никто не заставляет его редактировать. (зачем его редактировать?)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- i.dmitry   at91   Aug 15 2008, 19:08
- - aaarrr   Цитата(i.dmitry @ Aug 15 2008, 23:08) пра...   Aug 15 2008, 19:32
|- - defunct   Цитата(aaarrr @ Aug 15 2008, 22:32) P.S. ...   Aug 16 2008, 22:32
|- - aaarrr   Цитата(defunct @ Aug 17 2008, 02:32) А ес...   Aug 16 2008, 22:44
|- - defunct   ЦитатаСкажите, а форум мне покажет тело функции пр...   Aug 16 2008, 23:00
|- - aaarrr   Цитата(defunct @ Aug 17 2008, 03:00) Копи...   Aug 16 2008, 23:27
|- - defunct   Цитата(aaarrr @ Aug 17 2008, 02:27) В сво...   Aug 16 2008, 23:49
|- - aaarrr   Цитата(defunct @ Aug 17 2008, 03:49) Это ...   Aug 17 2008, 00:09
|- - defunct   Цитата(aaarrr @ Aug 17 2008, 03:09) ...да...   Aug 17 2008, 00:42
|- - aaarrr   Цитата(defunct @ Aug 17 2008, 04:42) Не п...   Aug 17 2008, 09:52
- - injen-d   ЦитатаВзгляните на это с т.з. человека который в г...   Aug 17 2008, 10:20
|- - aaarrr   Цитата(injen-d @ Aug 17 2008, 14:20)...   Aug 17 2008, 10:41
||- - injen-d   Цитата(aaarrr @ Aug 17 2008, 14:41) По-мо...   Aug 17 2008, 13:05
||- - aaarrr   Цитата(injen-d @ Aug 17 2008, 17:05)...   Aug 17 2008, 13:18
||- - injen-d   Цитата(aaarrr @ Aug 17 2008, 17:18) Если ...   Aug 17 2008, 14:31
|- - zltigo   Цитата(injen-d @ Aug 17 2008, 12:20)...   Aug 17 2008, 14:01
|- - injen-d   Цитата(zltigo @ Aug 17 2008, 18:01) Ну в ...   Aug 17 2008, 14:54
- - SpiritDance   Мне схемотехник еще со старой работы сказал что ко...   Aug 17 2008, 14:45
|- - zltigo   Цитата(SpiritDance @ Aug 17 2008, 16:45) ...   Aug 17 2008, 20:58
- - aaarrr   Цитата(injen-d @ Aug 17 2008, 18:31)...   Aug 17 2008, 15:00
|- - defunct   Цитата(aaarrr @ Aug 17 2008, 18:00) Для м...   Aug 17 2008, 16:19
|- - aaarrr   Цитата(defunct @ Aug 17 2008, 20:19) Не п...   Aug 17 2008, 16:30
|- - defunct   Цитата(aaarrr @ Aug 17 2008, 19:30) Если ...   Aug 17 2008, 17:22
- - sergeeff   Ну я бы еще отметил следующие. Atmel, особенно в п...   Aug 17 2008, 17:25
- - aaarrr   Цитата(defunct @ Aug 17 2008, 21:22) Ипро...   Aug 17 2008, 18:15
- - sergeeff   Я считал, что "разумное использование возможн...   Aug 18 2008, 06:44
|- - zltigo   Цитата(sergeeff @ Aug 18 2008, 08:44) Я с...   Aug 18 2008, 07:47
- - aaarrr   Еще один показательный пример для любителей lib_A...   Aug 18 2008, 09:54
|- - sergeeff   Цитата(aaarrr @ Aug 18 2008, 13:54) Еще о...   Aug 18 2008, 12:13
||- - aaarrr   Цитата(sergeeff @ Aug 18 2008, 16:13) Нор...   Aug 18 2008, 12:21
|- - SergeiCh   По мне структуры хороши хотя бы тем, что при отлад...   Aug 18 2008, 12:19
|- - zltigo   Цитата(SergeiCh @ Aug 18 2008, 14:19) По ...   Aug 18 2008, 12:48
||- - SergeiCh   Цитата(zltigo @ Aug 18 2008, 19:48) А смо...   Aug 18 2008, 13:57
||- - zltigo   Цитата(SergeiCh @ Aug 18 2008, 15:57) Но ...   Aug 18 2008, 14:15
||- - aaarrr   Цитата(zltigo @ Aug 18 2008, 18:15) Зато ...   Aug 18 2008, 14:21
||- - zltigo   Цитата(aaarrr @ Aug 18 2008, 16:21) после...   Aug 18 2008, 14:25
|||- - aaarrr   Цитата(zltigo @ Aug 18 2008, 18:25) А иде...   Aug 18 2008, 14:30
||- - defunct   Цитата(aaarrr @ Aug 18 2008, 17:21) Ну, н...   Aug 18 2008, 20:40
||- - aaarrr   Цитата(defunct @ Aug 19 2008, 00:27) Не о...   Aug 18 2008, 20:55
||- - zltigo   Цитата(defunct @ Aug 18 2008, 22:40) Не о...   Aug 18 2008, 21:05
|- - Сергей Борщ   Цитата(SergeiCh @ Aug 18 2008, 15:19) По ...   Aug 20 2008, 10:12
|- - injen-d   Цитата(Сергей Борщ @ Aug 20 2008, 14:12) ...   Aug 20 2008, 16:51
||- - Сергей Борщ   Цитата(injen-d @ Aug 20 2008, 19:51)...   Aug 20 2008, 16:58
|- - SergeiCh   Цитата(Сергей Борщ @ Aug 20 2008, 17:12) ...   Aug 21 2008, 07:05
|- - SergeiCh   И как правильно заметил zltigo, не все регистры од...   Aug 21 2008, 08:38
- - zltigo   Причем о качестве написания библиотек тоже можно п...   Aug 18 2008, 12:36
|- - AHTOXA   Цитата(zltigo @ Aug 18 2008, 18:36) Что-т...   Aug 18 2008, 12:44
- - defunct   zltigo и aaarrr Я там выше прикрепил рисунок. Собс...   Aug 18 2008, 21:07
|- - zltigo   Цитата(defunct @ Aug 18 2008, 23:07) ..и ...   Aug 18 2008, 21:40
|- - defunct   Цитата(zltigo @ Aug 19 2008, 00:40) Нет,н...   Aug 18 2008, 21:50
- - zltigo   Цитатаzltigo и aaarrr Я там выше прикрепил рисунок...   Aug 18 2008, 21:30
|- - defunct   Цитата(zltigo @ Aug 19 2008, 00:30) Проси...   Aug 18 2008, 21:36
|- - zltigo   Цитата(defunct @ Aug 18 2008, 23:36) Драс...   Aug 18 2008, 21:57
|- - aaarrr   Цитата(zltigo @ Aug 19 2008, 01:54) Зачем...   Aug 18 2008, 21:57
||- - zltigo   Цитата(aaarrr @ Aug 18 2008, 23:57) А тут...   Aug 18 2008, 22:06
|- - defunct   Цитата(zltigo @ Aug 19 2008, 00:54) Вы по...   Aug 18 2008, 21:58
|- - aaarrr   Цитата(defunct @ Aug 19 2008, 01:58) Если...   Aug 18 2008, 22:02
||- - defunct   Цитата(aaarrr @ Aug 19 2008, 01:02) Нет, ...   Aug 18 2008, 22:09
||- - aaarrr   Цитата(defunct @ Aug 19 2008, 02:09) Насч...   Aug 18 2008, 22:15
||- - defunct   Цитата(aaarrr @ Aug 19 2008, 01:15) Какой...   Aug 18 2008, 22:40
||- - aaarrr   Цитата(defunct @ Aug 19 2008, 02:29) Вот ...   Aug 18 2008, 22:40
|||- - defunct   Цитата(aaarrr @ Aug 19 2008, 01:40) А это...   Aug 18 2008, 22:50
|||- - aaarrr   Цитата(defunct @ Aug 19 2008, 02:50) Фраз...   Aug 18 2008, 23:03
|||- - defunct   Цитата(aaarrr @ Aug 19 2008, 02:03) ОК. И...   Aug 18 2008, 23:19
|||- - aaarrr   Цитата(defunct @ Aug 19 2008, 03:19) нет ...   Aug 18 2008, 23:32
|||- - defunct   Цитата(aaarrr @ Aug 19 2008, 02:32) Стран...   Aug 18 2008, 23:57
|||- - aaarrr   Цитата(defunct @ Aug 19 2008, 03:57) Там ...   Aug 19 2008, 00:09
|||- - defunct   Цитата(aaarrr @ Aug 19 2008, 03:09) но пр...   Aug 19 2008, 00:17
||- - zltigo   Цитата(defunct @ Aug 19 2008, 00:40) Как ...   Aug 18 2008, 22:52
||- - defunct   Цитата(zltigo @ Aug 19 2008, 01:52) Тфу, ...   Aug 18 2008, 23:01
||- - zltigo   Цитата(defunct @ Aug 19 2008, 01:01) Быва...   Aug 18 2008, 23:24
|- - zltigo   Цитата(defunct @ Aug 18 2008, 23:58) т.е....   Aug 18 2008, 22:10
|- - defunct   Цитата(zltigo @ Aug 19 2008, 01:10) pNAME...   Aug 18 2008, 22:16
|- - zltigo   Цитата(defunct @ Aug 19 2008, 00:16) это ...   Aug 18 2008, 22:28
- - aaarrr   Цитата(zltigo @ Aug 19 2008, 01:05) Челов...   Aug 18 2008, 21:52
- - sergeeff   Я бы несколько по-другому поставил вопрос. Полезно...   Aug 19 2008, 05:52
|- - SergeiCh   Цитата(sergeeff @ Aug 19 2008, 12:52) Пол...   Aug 19 2008, 06:40
||- - aaarrr   Цитата(defunct @ Aug 19 2008, 16:18) Прав...   Aug 19 2008, 12:34
|- - zltigo   Цитата(defunct @ Aug 19 2008, 12:34) inli...   Aug 19 2008, 12:42
|- - defunct   Цитата(zltigo @ Aug 19 2008, 15:42) Не со...   Aug 20 2008, 00:09
|- - zltigo   Цитата(defunct @ Aug 20 2008, 02:09) Вопр...   Aug 20 2008, 09:26
- - asket   Работаю в Crossworks, хотелось бы поработать с lib...   Aug 19 2008, 07:53
- - aaarrr   Цитата(asket @ Aug 19 2008, 11:53) Работа...   Aug 19 2008, 08:36


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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