Перейти к содержанию
    

KosTTTT

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Мне следует просто вставить код программы в созданный файл .S? Не будет ли при этом отличаться синтаксис от компилятора в AVR Studio? И как быть с файлами .inc, которые я использовал? Нужно ли при этом оформлять заголовочный файл с прототипом функции, которую я вызову из главной программы на Си. И как мне оформить этот прототип? Не void function (void);?
  2. Объектный файл, сформированный AVR Stuio имеет формат .obj, а компилятор Си, GCC - .o. Я так понял, я не смогу их соединить на этапе линковки? Кстати не могли бы вы объяснить, как мне в какой-нибудь среде (WinAVR, Eclipse, CVAVR) присоединять готовые объектные файлы, чтобы не компилировать по нескольку раз файлы .с?
  3. Как присоединить большую программу, написанную в AVR Studio на ассемблере к программе на С? В интернете вроде бы прочел, что надо присоединить объектный файл программы на ассемблере на этапе линковки, но как это сделать?
  4. Здравствуйте! Я новичок в области электроники и пытаюсь разобраться с программой для 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 и больше ничего.
×
×
  • Создать...