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

 
 
> Скорость ног SAM7, проблема с выводом
Iezuit
сообщение May 4 2008, 12:23
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 13-12-07
Пользователь №: 33 263



Добрый день!
На AT91S64 начал программно (т.е. сам через порт, а не через стандартные функции периферии) выводить информацию на ноги частотой ~10-15 МегаГерц но, по осциллографу, выходит не более 1. Подскаже, я чего-то не понимаю или это ошибка, связанная с мои неправильными действиями?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Iezuit
сообщение May 5 2008, 08:00
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 13-12-07
Пользователь №: 33 263



Ниже привожу код (IAR). Прошу прощения, что не сделал сразу.
Код
#include <inarm.h>
#include "main.h"


void AT91F_LowLevelInit(void) @ "ICODE"
{//low_level_init

    AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_0FWS;

    AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN ));
    // Wait Main Oscillator stabilization
    while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));

    AT91C_BASE_PMC->PMC_PLLR = AT91C_CKGR_USBDIV_1 |
                    (16 << 8) |
                               (AT91C_CKGR_MUL & (405 << 16)) |   //18.432*(405+1)/250=29.933
                               (AT91C_CKGR_DIV & 250);
    // Wait for PLL stabilization
    while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
    while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );

    AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK;
    // Wait until the master clock is established
    while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );

    AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
    // Wait until the master clock is established
    while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );

    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
}



int main()
{

  AT91F_LowLevelInit(); //инициализируем рабочую частоту

//разрешаем периферические часы  
  AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,(1 << AT91C_ID_PIOA)/);


AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,SCREEN_DB|SCREEN_D_C|SCREEN_RES|SCREEN_WR|SCREEN_RD);

  AT91F_PIO_CfgDirectDrive(AT91C_BASE_PIOA,SCREEN_DB);

while (1)
  {
   AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,SCREEN_WR);
AT91F_PIO_ForceOutput(AT91C_BASE_PIOA,0x5555<<16);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,SCREEN_WR);
    }  
  
}

Стандартная отладочная плата SAM7S64
При частоте - 30 MHz (от PLL, кварц - 18.432) в режиме Thumb, период главного цикла (по осциллографу) - 2 мкс, 0 на SCREEN_WR примерно 0.5мкс, 1 - 1мкс

в режиме ARM, период главного цикла (по осциллографу) - 2 мкс, 0 на SCREEN_WR 0.75мкс, 1 - 1.25мкс
Скложилось впечатление, что само обращение к порту происходит крайне медленно (ИАР обрезанный, ассемблер посмотреть не могуsad.gif )
Предполагал, что АРМ должен обеспечивать большую скорость - ведь даже на меге результаты лучше!
Или я что-то делаю не так?

Сообщение отредактировал Iezuit - May 5 2008, 08:11
Go to the top of the page
 
+Quote Post
amw
сообщение May 5 2008, 09:56
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Iezuit @ May 5 2008, 11:00) *
Код
while (1)
  {
   AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,SCREEN_WR);
AT91F_PIO_ForceOutput(AT91C_BASE_PIOA,0x5555<<16);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,SCREEN_WR);
    }  
  
}

Ну если чуть поразмыслить, то получается что-то вроде
Код
    ldr r0, =AT91C_BASE_PIOA
label:
    ldr r1, SCREEN_WR
    str r1, [r0 + КАК_ЕГО_ТАМ_PIOA_CLR]
    mov r1, #0x5555 lsl 16; Не уверен, что это можно mov
    str r1, [r0 + КАК_ЕГО_ТАМ_PIOA_SET]
    bic r1, r1, 0xFFFFFFFF; ??????
    str r1, [r0 + КАК_ЕГО_ТАМ_PIOA_CLR]
    ldr r1, SCREEN_WR
    str r1, [r0 + КАК_ЕГО_ТАМ_PIOA_SET]
    b label

Посчитайте такты.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Iezuit
сообщение May 5 2008, 10:59
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 13-12-07
Пользователь №: 33 263



Цитата(amw @ May 5 2008, 13:56) *
Посчитайте такты.

Спасибо!
Скачал описание ассемблера с атмела и посчитал. Результат меня расстроил.
А есть ли какие-то альтернативные способы? Задача стоит так: обеспечить общение АРМ с OLED экраном по паралленому интерфейсу (8битная шина). На Меге приемлемая скорость получалось за счет использования механизма работы с внешней памятью (т.е. чтение и запись аппаратно устанавливались). А в АРМе есть какие-нибудь возможности несколько быстрее общаться с шиной?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Iezuit   Скорость ног SAM7   May 4 2008, 12:23
- - bureau   Приведите листинг своего кода, если вас не затрудн...   May 4 2008, 12:45
- - aaarrr   Цитата(Iezuit @ May 4 2008, 16:23) На AT9...   May 4 2008, 14:49
- - aaarrr   А оптимизация-то включена?   May 5 2008, 09:04
|- - Iezuit   Цитата(aaarrr @ May 5 2008, 13:04) А опти...   May 5 2008, 09:25
|- - bureau   2 Iezuit Неправильно понимаешь. Ты сравни с и без,...   May 5 2008, 09:36
|- - Iezuit   Цитата(bureau @ May 5 2008, 13:36) 2 Iezu...   May 5 2008, 09:44
|- - KAlex   Цитата(Iezuit @ May 5 2008, 12:44) У меня...   May 5 2008, 11:10
|- - Iezuit   Цитата(KAlex @ May 5 2008, 15:10) Это как...   May 5 2008, 11:14
|- - KAlex   Здесь все давно разжевано.   May 5 2008, 11:20
- - vet   простое дергание ноги должно выливаться в гораздо ...   May 5 2008, 11:21
- - aaarrr   Ну, amw написал уж очень страшный вариант. На деле...   May 5 2008, 11:31
|- - amw   Цитата(aaarrr @ May 5 2008, 14:31) Ну, am...   May 5 2008, 11:59
- - Iezuit   Простое - да, но у меня между дерганьями было еще ...   May 5 2008, 11:37
|- - aaarrr   Цитата(Iezuit @ May 5 2008, 15:33) Просто...   May 5 2008, 11:39
|- - Iezuit   Цитата(aaarrr @ May 5 2008, 15:39) Для на...   May 5 2008, 11:46
- - aaarrr   Цитата(Iezuit @ May 5 2008, 15:46) Ну я в...   May 5 2008, 12:04
- - Iezuit   Большое спасибо! Пробую...   May 5 2008, 12:24


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

 


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


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