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

 
 
> at91sam7s64 + USART... как правильно настроить?, док вроед прочитал но не работает...
Mozart
сообщение Aug 27 2007, 14:36
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829



Код
volatile AT91PS_PIO    pPIO = AT91C_BASE_PIOA;
pPIO->PIO_ASR |= (1 << 6);
pPIO->PIO_OER = (1 << 6);

volatile AT91PS_USART pUS1 = AT91C_BASE_US1;
    
    pUS1->US_MR |= AT91C_US_CHRL            /*8 bits*/
                  |AT91C_US_PAR_NONE        /*no parity*/
                  |AT91C_US_NBSTOP_2_BIT    /*2 stop bits*/
                  |AT91C_US_OVER            /*8x oversampling*/
                  |AT91C_US_INACK;

    pUS1->US_CR &= ~AT91_US_TXDIS;
    pUS1->US_CR |= AT91_US_TXEN;
    
    //pUS1->US_BRGR = 60;
    pUS1->US_BRGR = 30;

настроил так скажите пжлста так ли, а то совсем закопался...


--------------------
все косяки, даже о которых не знает сам разработчик, - мои
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mozart
сообщение Sep 5 2007, 07:47
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829



люди, что делаю не так??? вот код начальной инициализации...
Код
void LowLevelInit(void)
{
    int            i;
    AT91PS_PMC     pPMC = AT91C_BASE_PMC;

    //* Set Flash Wait sate
    //  Single Cycle Access at Up to 30 MHz, or 40
    //  if MCK = 48 054 841 I have 50 Cycle for 1 usecond ( flied MC_FMR->FMCN
    //  result: AT91C_MC_FMR = 0x00320100  (MC Flash Mode Register)
    AT91C_BASE_MC->MC_FMR = ((AT91C_MC_FMCN)&(50 << 16)) | AT91C_MC_FWS_1FWS;

    //* Watchdog Disable
    // result: AT91C_WDTC_WDMR = 0x00008000  (Watchdog Mode Register)
    AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;

    //* Set MCK at 48 054 841
    // 1 Enabling the Main Oscillator:
    // SCK = 1/32768 = 30.51 uSecond
    // Start up time = 8 * 6 / SCK = 56 * 30.51 = 1,46484375 ms
    // result: AT91C_CKGR_MOR = 0x00000601  (Main Oscillator Register)

    pPMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 << 8) | AT91C_CKGR_MOSCEN ));
    
    
    // Wait the startup time
    while(!(pPMC->PMC_SR & AT91C_PMC_MOSCS));
    
    // PMC Clock Generator PLL Register setup
    //
    // The following settings are used:  DIV = 14
    //                                   MUL = 72
    //                                   PLLCOUNT = 10
    //
    // Main Clock (MAINCK from crystal oscillator) = 18432000 hz (see AT91SAM7-EK schematic)
    // MAINCK / DIV = 18432000/14 = 1316571 hz
    // PLLCK = 1316571 * (MUL + 1) = 1316571 * (72 + 1) = 1316571 * 73 = 96109683 hz
    //
    // PLLCOUNT = number of slow clock cycles before the LOCK bit is set
    //            in PMC_SR after CKGR_PLLR is written.
    //
    // PLLCOUNT = 10
    //
    // OUT = 0 (not used)
    // result: AT91C_CKGR_PLLR = 0x00000000480A0E   (PLL Register)
    
    pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 14) |
                      (AT91C_CKGR_PLLCOUNT & (10<<8)) |
                      (AT91C_CKGR_MUL & (72<<16)));


    // Wait the startup time (until PMC Status register LOCK bit is set)

    while(!(pPMC->PMC_SR & AT91C_PMC_LOCK));
    
    // PMC Master Clock (MCK) Register setup
    //
    // CSS  = 3  (PLLCK clock selected)
    //
    // PRES = 1  (MCK = PLLCK / 2) = 96109683/2 = 48054841 hz
    //
    // Note: Master Clock  MCK = 48054841 hz  (this is the CPU clock speed)
    // result:  AT91C_PMC_MCKR = 0x00000007  (Master Clock Register)
    pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2;
    //pPMC->PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;    //18432000 HZ
    
    // Set up the default interrupts handler vectors
    
    AT91C_BASE_AIC->AIC_IECR = 0x0;
    AT91C_BASE_AIC->AIC_IDCR = 0xffffffff;
    /*
    AT91C_BASE_AIC->AIC_SVR[0] = (int) AT91F_Default_FIQ_handler;
    for (i=1; i < 31; i++)
    {
        AT91C_BASE_AIC->AIC_SVR[i] = (int) AT91F_Default_IRQ_handler;
    }
    AT91C_BASE_AIC->AIC_SPU  = (int) AT91F_Spurious_handler;
    */
}

вот мой код настройки УСАРТА
Код
    volatile AT91PS_PIO pPIO = AT91C_BASE_PIOA;
//for LED    
    pPIO->PIO_PER = LED_MASK;    //perepherial enable register
    pPIO->PIO_OER = LED_MASK;    //output enable register
    pPIO->PIO_SODR = LED_MASK;
    pPIO->PIO_CODR = LED_MASK;

/*for USART*/
    volatile  AT91PS_PMC pPMC = AT91C_BASE_PMC;            //peripheal clock
    pPMC->PMC_PCER = (1 << AT91C_ID_US1)|(1 << AT91C_ID_US0);        //clock USART1
    
    pPIO->PIO_PDR = (1 << 5)|    /*disable PIO */
                    (1 << 6)|
                    (1 << 21)|
                    (1 << 22);
    
    pPIO->PIO_ASR = (1 << 5)|    /*enable peripheral A*/
                    (1 << 6)|
                    (1 << 21)|
                    (1 << 22);
    int maskPIO;
    maskPIO = pPIO->PIO_OSR | (1 << 6) | (1 << 22);
    pPIO->PIO_OER = maskPIO;    //output USART
    
    volatile AT91PS_USART    pUS1 = AT91C_BASE_US1;        //settings USART
    pUS1->US_BRGR     = CD1;    //baudrate
    pUS1->US_IDR = 0xffffffff;

    pUS1->US_MR     = AT91C_US_USMODE_NORMAL|    
                      AT91C_US_CLKS_CLOCK|    /*AT91C_US_CLKS_SLOW*/
                      AT91C_US_CHRL_8_BITS|
                      AT91C_US_NBSTOP_2_BIT|
                      AT91C_US_DSNACK;
                          
    pUS1->US_CR = 0x50;    //RXEN and TXEN enable

вот мой код передачи байта и зажигание светодиода...
Код
    while(1)
    {
        pPIO->PIO_SODR |= LED_MASK;
    
        for(qwe = 0; qwe < 100000; qwe++);
        
        pPIO->PIO_CODR |= LED_MASK;
        
        for(qwe = 0; qwe < 100000; qwe++);
        
        pUS1->US_THR = 0x1CC;    //transmit char to PC!!!
        
    }

связка у меня такая eclipse + arm-elf-gb + openOCD + wiggler + МК at91sam7...
помогите... мозг уже плавится... руки дрожат... не дайте пропасть душе моей...
светодиодами моргает прекрасно... на кнопочки реагирует...


--------------------
все косяки, даже о которых не знает сам разработчик, - мои
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mozart   at91sam7s64 + USART... как правильно настроить?   Aug 27 2007, 14:36
- - a3r3   ЦитатаpPIO->PIO_ASR |= (1 << 6); Читать w...   Aug 27 2007, 15:41
- - Mozart   Цитата(a3r3 @ Aug 27 2007, 19:41) Читать ...   Aug 28 2007, 16:17
|- - a3r3   Цитата(Mozart @ Aug 28 2007, 20:17) всмыс...   Aug 28 2007, 17:24
|- - AlexBoy   Цитата(Mozart @ Aug 28 2007, 19:17) всмыс...   Aug 28 2007, 18:07
|- - Mozart   что-то нифига не получается смотрел осцилом ничего...   Aug 29 2007, 11:43
|- - Сергей Борщ   Цитата(Mozart @ Aug 29 2007, 14:43) что-т...   Aug 29 2007, 15:52
|- - Mozart   Цитата(Сергей Борщ @ Aug 29 2007, 19:52) ...   Aug 29 2007, 16:46
- - Mozart   ЦитатаЭто: pPIO->PIO_ASR |= (1 << 6); Чт...   Aug 28 2007, 17:28
- - _dem   pPMC->PMC_PCER = (1 << AT91C_ID_US1)|(1 ...   Sep 5 2007, 08:02
|- - Mozart   Код pPMC->PMC_PCER = (1 << AT91C_...   Sep 5 2007, 09:23
- - _dem   у вас отладчик работает ? что в регистре статуса у...   Sep 5 2007, 09:49
|- - Mozart   если честно под отладчиком не смотрел, просто ...   Sep 5 2007, 10:25
- - _dem   Косяки вряд ли - все-таки у многих эта плата и ник...   Sep 5 2007, 11:49
- - Mozart   может быть джампер где-то поставить надо... потому...   Sep 5 2007, 12:00
- - _dem   какая у вас плата (точное название и ревизия) ? на...   Sep 5 2007, 12:37
- - Mozart   at91sam7s-ek вот ссылка на неё...   Sep 5 2007, 12:44
- - _dem   сэр, согласно http://www.atmel.com/dyn/resources/...   Sep 5 2007, 12:53
- - Mozart   вот что значит не уметь читать... а что исходник м...   Sep 5 2007, 13:25
- - _dem   мдя, они это любят... как доберетесь до SPI или, н...   Sep 5 2007, 13:27
- - Mozart   а я ведь доберусь до SPI!!! пускай пут...   Sep 5 2007, 13:39


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

 


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


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