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

JeDay

Свой
  • Постов

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

  • Посещение

Сообщения, опубликованные JeDay


  1. т.е. если пишу на СИ вложенные функции, компилятор сам сохраняет LR в памяти а потом восстанавливает обратно(я на асме еще не пробовал писать) ?

    В кейловском startup.s есть инициализация стеков для различных режимов. Это указатели на разные участки памяти в которые будет производиться програмное сохранение LR ?

  2. Можно ли как нибуть при старте МК прогу, прошитую во флеш, скопировать во внешнее ОЗУ (CS0), а потом как то выполнение кода делать из нее?

    По даташиту флеш работает на 20МГц, хотелось бы выполнение проги ускорить.

  3. Решил платку Виглера сделать, нашел 3 схемы. В каждой цоколевка концевика и LPT разная. Подскажите какой Wigler из 3-х выбрать.

    (Мне больше всего wig_mt понравился - дака самая полная. Он рабочий ?)

    JTAG_ARM.ZIP

    wiggler.rar

    wig_mt.pdf

  4. Не получается с помощью ф-й: SHR SHL самого простого сдвигового регистра сгородить.

    Может надо место сигналов переменные использовать или еще какой то заковык...

    Дайте плиз кусочек кода который реализует сдвиг и выдачу результата заборт.

  5. Можно взять CYCLONE от ALTERA. Там есть внутри 96 кбит ОЗУ, на них можна 2 портовое ОЗУ сгородить(очень удобная штука). Тригеров хватит чтобы сдвиговые регистры организовать, еще процентов 80 будет свободного места. Например EP1C6xxx. Стоит примерно 15 у.е.

  6. Я хачу эту схему (Strobe.zip) на VHDL написать.

     

    А как заставить Active-HDL выдавать ошибки, если нельзя схемку на FPGA синтезировать ?

    Из него вроди можна через TCL консоль проект в Quartus передавать. Может такое быть что Active-HDL ошибок не нашел, а в Quartus мрак полный...

    Strobe.zip

  7. Я когда вопрос задавал писал проект в Quartus II v5.0, на вышенаписанных исходник он выругался так:

    Error: VHDL error at Str.vhd(22): can't infer register for signal "tr1" because signal does not hold its value outside clock edge

     

    Тем временем мне скачали Active-HDL 7.1, он этот же исходник прохавал нормально.

    Может подскажете в чем прикол ? Quartus не умеет тригером по двум фронтам управлять ?

  8. Всем спасибо. Я сделал вот так:

     

    library ieee;

    use ieee.std_logic_1164.all;

     

     

    entity Str is

    port( Reset : in std_logic;

    Clk : in std_logic;

    str_in : in std_logic;

    str_out : out std_logic);

    end entity Str;

     

    architecture Str of Str is

    signal tr1, tr2 : std_logic;

    begin

     

    tr: process(Reset, str_in, Clk)

    begin

    if Reset = '0' then

    tr1 <= '0';

    tr2 <= '0';

    end if;

    if str_in'event and str_in = '1' then

    tr1 <= '1';

    end if;

    if Clk'event and Clk = '1' and tr1 = '1' then

    str_out <= '0';

    tr2 <= '1';

    end if;

    if Clk'event and Clk = '0' and tr1 = '1' and tr2 = '1' then

    str_out <= '1';

    tr1 <= '0';

    tr2 <= '0';

    end if;

    end process tr;

    end architecture;

     

     

    Работает максимально быстро из всего изложенного.

  9. Внешний импульс никак не связан с CLK. В графическом редакторе у меня большой опыт работы.

    В VHDL нет понятия тригер. Я щас этот язык осваиваю, пытаюсь графический рабочий проект на VHDL написать.

     

    entity strobe is

    port( str_in : in std_logic;

    Clk : in std_logic;

    str_out : out std_logic;

    end strobe;

     

    architecture first of strobe is

    signal triger : std_logic;

    begin

     

    tr: process (str_in)

    begin

    if str_in'event and str_in = '1' then

    triger <= '1';

    end if;

    end process;

     

    st: process (str_in, Clk)

    begin

    str_out <= '1';

    if Clk'event and Clk = '0' and triger = '1' then

    str_out <= '0';

    end if;

    if Clk'event and Clk = '1' and triger = '1' then

    str_out <= '1';

    triger <= '0';

    end if;

    end process;

    end first;

     

    Это код с кучей ошибок (поведенческое описание того что мне надо).

    Помогите плиз этот хлам в рабочи код превратить.

     

    <Тяжело в ученьи, легко в бою :)>

  10. Есть событие - внешний импульс и тактовая частота. После прихода етого импульса надо сформировать строб: по нарастающему фронту CLK установить в "1", а по спадающему в "0". В графике проблем нет, а как на языке описать не знаю. Когда в одном процесе пытаюсь отловить 2 фронта сигнала и по ним изменять выходной сигнал то компилятор выдает ошибку.

    Подскажите как это правильно делается.

  11. Пробовал версию 2.81 тоже самое.

    При установке флага из другого потока - все работает (при установке OS_FLAG_CONSUME тоже работает).

    При установке флага из обработчика прерывания ОС виснет, если я пытаюсь сбросить флаг в потоке. С этого же обработчика прерывания устанавливаю и другие события, с ними проблем нету.

     

    Может кто нить с этим сталкивался ? Подскажите в чем трабл.

  12. С прерывания устанавливаю флаг:

    OSFlagPost(pFlag, Flag_test, OS_FLAG_SET, &err);

    В основном потоке ожидаю флаг без сброса (OS_FLAG_CONSUME). Поток оживает выполняет команду и засыпает снова, все это дело вертится по кругу бо флаг не сброшен.

    Когда в функции OSFlagPend использую OS_FLAG_CONSUME, то после установки флага МК перезагружается. (???) В чем проблема ? Мож кто сталкивался с этим ?

    Мне надо узнать событие, сбросить флаг и выполнить действие...

    Как мне это реализовать ?

×
×
  • Создать...