Jump to content
    

А вот кто такой TBD я что-то не понял...

TBD (сокр. от To Be Determined) = подлежит определению. Короче, в следующих ревизиях значение возможно появится.

Share this post


Link to post
Share on other sites

С температурным сенсором ситуация начинает проясняться. Оказывается я малость протупил - кроме переключения мультиплексора этот сенсор еще надо включать специальным битом в регистре REFCTRL.

А тут и ответ от Atmel подоспел:

The internal temperature sensor is ideally linear from 0°K to the measured value in the production. The temperature reference value in the signature row which the measurement is done at is 85°C (358°K) but with an inaccuracy of +- 5 degrees. This deviation will result in some error when measuring at other temperatures. The measurement stored in the signature row is done in unsigned mode with 12-bit resolution and the internal 1V reference. The ADC setup has to be the same if this value is going to be used in the application. The stored value can be used for a 2-point calibration where the second point will be 0°K and the ADC value will be 0.

Share this post


Link to post
Share on other sites

Добрый день. Кто нибудь работал с таймерами. Я использую Xmegу 128A и появился вопрос. Когда включаю таймер/счетчик в режиме захвата(настраиваю на событие по появлению фронтов с пина), то удается работать только с каналом A. На остальных(B, C и D) прерываний не возникает. Может так и должно быть, но в datasheet ничего не нашел?

Share this post


Link to post
Share on other sites

Кто-нибудь работал с внешней SRAM на Xmega? До конца не понятно, сигнал ALE инвертированный или нет. Если да, то что вместо регистра-защёлки типа 573 можно использовать? Инвертор на ALE лепить не хочется.

Share this post


Link to post
Share on other sites

Ничего не надо. Подключал на прямую.

// Initialize EBI.
    EBI_Enable( EBI_SDDATAW_8BIT_gc,
                EBI_LPCMODE_ALE1_gc,
                EBI_SRMODE_NOALE_gc,
                EBI_IFMODE_3PORT_gc );

    // Initialize SRAM 
    EBI_EnableLPC ( &EBI.CS1,               // Chip Select 1.
                    EBI_CS_ASPACE_128KB_gc, // 128 KB Address space.
                    (void *) SRAM_ADDR,     // Base address.
                    EBI_CS_SRWS_0CLK_gc );

Share this post


Link to post
Share on other sites

Инвертор на ALE лепить не хочется.

 

Кстати, на портах Хмеги есть такая фича, как Inverted I/O. Включается соответствующим битом в регистрах PINnCTRL. Если посмотреть на структурную схему портов, то она должна действовать и на альтернативные функции портов. Сейчас ради интереса проверил на COM порте - инвертирует! А ведь иногда это действительно удобно.

Share this post


Link to post
Share on other sites

Alexey Belyaev, 573 использовали?

MDD, инверсию на портах видел, но то, что она действует - хорошая новость.

Share this post


Link to post
Share on other sites

Никак не могу понять, может ли EBI тактироваться тактовой частотой 64 MHz.

С одной стороны в мануале на Xмегу на странице 268 написано:

The EBI is clocked from the Fast Peripheral clock, running up to two times faster than the CPU and supporting speeds of up to 64 MHz.
Но с другой стороны в даташите на XMega128A1 в эл. характеристиках на странице 69 написано, что ClkSYS 32 MHz максимум. И если взглянуть на схему распределения тактовых сигналов в мануале на Xмегу на странице 77, то видно, что единственный PLL стоит до ClkSYS и вроде бы больше неоткуда взять удвоенную частоту.

И еще в мануале на Xмегу на странице 270 упоминается сигнал Clk2PER, которого нет на схеме дистрибуции клока. Мне интересно, Atmel просто перепутал и вместо ClkPER2 написал Clk2PER, или сигнал Clk2PER действительно существует, но просто нигде не описан?

Share this post


Link to post
Share on other sites

Всем доброго дня

Начал юзать Xmegu. С портами проблем не возникло

А вот с UART затык

Привожу код

 

#define    CPU_FREQ                2000000
#define    BAUD_RATE                9600
#define BRREG_VALUE                12

// definition for UART control
#define UART_PORT                PORTF
#define UART_TX_PIN                PIN7_bm
#define BAUD_RATE_LOW_REG        USARTF1.BAUDCTRLA
#define UART_CONTROL_REG        USARTF1.CTRLB
#define ENABLE_TRANSMITTER_BIT    USART_TXEN_bp
#define ENABLE_RECEIVER_BIT        USART_RXEN_bp
#define UART_STATUS_REG            USARTF1.STATUS
#define TRANSMIT_COMPLETE_BIT    USART_TXCIF_bp
#define DATA_REG_EMPTY_BIT        USART_DREIF_bp
#define RECEIVE_COMPLETE_BIT    USART_RXCIF_bp
#define UART_DATA_REG            USARTF1.DATA

/******************************************************************************
* Функция            :
* Описание            :
* Вх. параметры    :
* Возвр. значение    :
*****************************************************************************/
void UART_Init(void)
     {
       UART_PORT.DIRSET |= UART_TX_PIN;
       BAUD_RATE_LOW_REG = BRREG_VALUE;
       UART_CONTROL_REG  = (1<<ENABLE_RECEIVER_BIT)|
                           (1<<ENABLE_TRANSMITTER_BIT);
     }
/******************************************************************************
* Функция            :
* Описание            :
* Вх. параметры    :
* Возвр. значение    :
*****************************************************************************/
void UART_Tx(u08 D)
     {
       UART_DATA_REG = D;
       while(!(UART_STATUS_REG &(1<<TRANSMIT_COMPLETE_BIT)));
       UART_STATUS_REG |= (1<<TRANSMIT_COMPLETE_BIT);
     }
/******************************************************************************
* Функция            :
* Описание            :
* Вх. параметры    :
* Возвр. значение    :
*****************************************************************************/
u08  UART_Rx(void)
     {
       u08 ret=0;
       while(!(UART_STATUS_REG&(1<<RECEIVE_COMPLETE_BIT)));
       //while(bit_is_clear());
       ret = UART_DATA_REG;
       return ret;
     }


int main(void)
     {
       u08 val=0;
       
       //PORTF.DIR = (1<<6) | (1<<7);
       //PORTF.OUT = (1<<6) | (1<<7);
       
       UART_Init();
       for(;;)
         {
          
           val = UART_Rx();
           if(val=='a')
             {
               UART_Tx('Y');
             }
           else if(val=='A')
             {
               UART_Tx('N');
             }
           
           //UART_Tx('*');
         }
     }

Прошиваю и получаю тиши

Мож я не доконча вкулил мануал?

Прошу помочь

Share this post


Link to post
Share on other sites

USART работает нормально и по опросу, и по прерываниям.

Как по мне, у Вас в инициализации не хватает установки регистра USARTx.CTRLC для задания протокола. Например, для асинхронного 8N1 там дожно быть 0x03.

Share this post


Link to post
Share on other sites

USART работает нормально и по опросу, и по прерываниям.

Как по мне, у Вас в инициализации не хватает установки регистра USARTx.CTRLC для задания протокола. Например, для асинхронного 8N1 там дожно быть 0x03.

Спасибо

Share this post


Link to post
Share on other sites

Начал работать с EBI, и впал в ступор.

Задумка следующая - прицепить циклок как внешкюю память

По мануалу есть режим без использования адресной защелки ALE

1486a2a381d0.jpg

e626227b7d49.jpg

По ногам получаеться следующее:

PH0 WE

PH1 RE

PH2 ALE - не использую

PH3

PH4 CS0/A16

PH5 CS1/A17

PH6 CS2/A18

PH7 CS3/A19

 

PJ0..PJ7 -> D0..D7

PR0..PR7 -> A0..A7/A8..A15

 

а вот с конфигурированием регистров встал...

ALE должен использоваться всегда получаеться

Share this post


Link to post
Share on other sites

Начал работать с EBI, и впал в ступор.

Задумка следующая - прицепить циклок как внешкюю память

а вот с конфигурированием регистров встал...

ALE должен использоваться всегда получаеться

Если ALE не использовать, то можно адресовать максимум 256 байт внешней SRAM. А у тебя SRAM какого размера?

Share this post


Link to post
Share on other sites

Так мне и не надо пока много

суть такая что к плисине цепляеться 6 АЦП, которые непрывно молотят данные

И эти данные складыаються в внтренюю память плисины

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...