Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы новичка по ADSP 2184
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > Образование в области электроники
KosTTTT
Здравствуйте!
Я новичок в области электроники и пытаюсь разобраться с программой для ADSP 2184 (http://www.analog.com/static/imported-files/data_sheets/ADSP-2184.pdf)
Вот кусок из кода:
Код
start:

           // Установка задержки при записи во внешнее устройство 1 такт
           ax0 = b#0111111111111001;
           dm(Dm_Wait_Reg) = ax0;
                             
        // Инициализация таймера
        ax0=0;
        dm(Tscale_Reg)=ax0;
        ax0=40;
        dm(Tperiod_Reg)=ax0;
        dm(Tcount_Reg)=ax0;
        
        // Разрешение прерываний от таймера и по входу IRQE//
        ICNTL=0;//
        IFC=1;//
        IMASK=1;
        ena INTS;
        
        // Старт таймера
        ena TIMER;//(установка бита TE MSTAT)

        af = pass 0;
        
wait:    idle;
        jump wait;


Вопросы:
1)
Код
ax0 = b#0111111111111001;
dm(Dm_Wait_Reg) = ax0;

Это, я понимаю, мы обращаемся к Data memory waistate register и устанавливаем ожидание-один такт при обращении к следующим диапазонам адресов адресного пространства ввода/вывода: 0x000-0x1FF.
Подскажите, зачем это может быть нужно?
2)
Далее мы инициализируем таймер. Тактовая частота внешнего генератора - 40MHz. Насколько я правильно понял, смотря в Datasheet, внутренняя тактовая частота для этого процессора будет в 2 раза выше, то есть 80MHz? Согласно формуле Tint = (TPERIOD + 1) * (TSCALE + 1) / Fclkout получается, что каждые 0,5125 *10^-6 будет возникать прерывание, так ли это?
3)
Что означает команда
Код
IFC=1;
? В мануале написано, что тем самым мы очищаем прерывание по таймеру. Зачем это может быть здесь нужно?
4) Где-то в этом коде мы разрешаем прерывание по IRQE, но в IMASK записывается только 1 и больше ничего.
Fat Robot
Вот здесь собрана документация на это семейство. Вас для ответов на ваши вопросы будет интересовать
ADSP-218x DSP Hardware Reference (Rev 1.0, February 2001) (zip, 2439 kB) - обратите внимание на год выпуска.

Отвечая на ваши вопросы
1. Это нужно для того, чтобы привести в соответствие временную диаграмму внешней шины процессора и устройства/устройств, подключенных к этой внешней шине. Выбрано такое кол-во тактов ожидания, чтобы внешнее устройство на шине успело отреагировать на шинную транзакцию

2. (41 / 80.0) мкс таков период возникновения прерывания от таймера. Первое прерывание от таймера возникнет через (41 / 80.0) мкс после выполнения команды ena TIMER;

3. Это нужно, чтобы очистить прерывание от таймера, которое может быть защелкнуто в регистре прерываний до разрешения прерываний. Если этого не сделать, то потенциально первое прерывание может возникнуть сразу после выполнения команды ena INTS;

4. В этом коде мы не разрешаем irqe и вообще никак с irqe не работаем. Только таймер.

По нынешним меркам место этого процессора - на свалке истории (а, точнее, на помойке). Избавляйтесь от него поскорее, т.к. "ни денег, ни венца, ни славы" он вам не принесет.

Успехов
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.