JeDay
-
Постов
278 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные JeDay
-
-
Спасибо за помощь.
-
В синтаксис директив компилятора не освоил еще. В коде ИАРа есть такие строки:
RSEG CODE:CODE:NOROOT(2) CODE32
Не знаю что с ними в Кейле делать...
Может у кого нить есть файлик "os_cpu_a.asm" уже переделанный ?
-
т.е. если пишу на СИ вложенные функции, компилятор сам сохраняет LR в памяти а потом восстанавливает обратно(я на асме еще не пробовал писать) ?
В кейловском startup.s есть инициализация стеков для различных режимов. Это указатели на разные участки памяти в которые будет производиться програмное сохранение LR ?
-
У кого есть юзер-мануалы по данное тематике? В полных даташитах и описании АРМ ядра этого ненашел. Как адреса возврата сохраняются при вложенных прерываниях и функциях ?
-
Спасибо.
Я еще ниразу не применял АРМ, с документацией разбираюсь пока.
-
Можно ли как нибуть при старте МК прогу, прошитую во флеш, скопировать во внешнее ОЗУ (CS0), а потом как то выполнение кода делать из нее?
По даташиту флеш работает на 20МГц, хотелось бы выполнение проги ускорить.
-
Большое спасибо.
-
А что в 3-й не так ? Я уже начал ее разводить :)
-
Решил платку Виглера сделать, нашел 3 схемы. В каждой цоколевка концевика и LPT разная. Подскажите какой Wigler из 3-х выбрать.
(Мне больше всего wig_mt понравился - дака самая полная. Он рабочий ?)
-
Не получается с помощью ф-й: SHR SHL самого простого сдвигового регистра сгородить.
Может надо место сигналов переменные использовать или еще какой то заковык...
Дайте плиз кусочек кода который реализует сдвиг и выдачу результата заборт.
-
Всем спасибо.
В моей схемке клоков нет, так что данная схемка наиболее правильное решение.
-
Помогите кому еще не надоел своей елементарщиной.
Пытаюсь данную задачу на языке реализовать, никак не получается.
-
Можно взять CYCLONE от ALTERA. Там есть внутри 96 кбит ОЗУ, на них можна 2 портовое ОЗУ сгородить(очень удобная штука). Тригеров хватит чтобы сдвиговые регистры организовать, еще процентов 80 будет свободного места. Например EP1C6xxx. Стоит примерно 15 у.е.
-
Спасибо amoniev и vikk.
Это и есть ответ на вопрос.
-
Я хачу эту схему (Strobe.zip) на VHDL написать.
А как заставить Active-HDL выдавать ошибки, если нельзя схемку на FPGA синтезировать ?
Из него вроди можна через TCL консоль проект в Quartus передавать. Может такое быть что Active-HDL ошибок не нашел, а в Quartus мрак полный...
-
Я когда вопрос задавал писал проект в 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 не умеет тригером по двум фронтам управлять ?
-
Всем спасибо. Я сделал вот так:
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;
Работает максимально быстро из всего изложенного.
-
Внешний импульс никак не связан с 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;
Это код с кучей ошибок (поведенческое описание того что мне надо).
Помогите плиз этот хлам в рабочи код превратить.
<Тяжело в ученьи, легко в бою :)>
-
Есть событие - внешний импульс и тактовая частота. После прихода етого импульса надо сформировать строб: по нарастающему фронту CLK установить в "1", а по спадающему в "0". В графике проблем нет, а как на языке описать не знаю. Когда в одном процесе пытаюсь отловить 2 фронта сигнала и по ним изменять выходной сигнал то компилятор выдает ошибку.
Подскажите как это правильно делается.
-
ATMEGA128, порт AN-1128.
Попробую в AVRStudio прошагать, мож действительно что нить нарою.
-
Пробовал версию 2.81 тоже самое.
При установке флага из другого потока - все работает (при установке OS_FLAG_CONSUME тоже работает).
При установке флага из обработчика прерывания ОС виснет, если я пытаюсь сбросить флаг в потоке. С этого же обработчика прерывания устанавливаю и другие события, с ними проблем нету.
Может кто нить с этим сталкивался ? Подскажите в чем трабл.
-
Обе ссылки не рабочие :(
На ихнем сайте доков по этому поводу нету.
Кстати версия ОС у меня 2.80
-
Большое спасибо.
-
С прерывания устанавливаю флаг:
OSFlagPost(pFlag, Flag_test, OS_FLAG_SET, &err);
В основном потоке ожидаю флаг без сброса (OS_FLAG_CONSUME). Поток оживает выполняет команду и засыпает снова, все это дело вертится по кругу бо флаг не сброшен.
Когда в функции OSFlagPend использую OS_FLAG_CONSUME, то после установки флага МК перезагружается. (???) В чем проблема ? Мож кто сталкивался с этим ?
Мне надо узнать событие, сбросить флаг и выполнить действие...
Как мне это реализовать ?
Порт для uCOS-II (AN-1014)
в ARM
Опубликовано · Пожаловаться
А какие там еще подводные камни есть ? Может лучше в IAR писать ?