[an error occurred while processing this directive]
|
Про 4 младших бита(не байта, оговорился) - в AVRStudio во вкладке I/O View в режиме пошаговой отладки (debug) после FISUD=data в битах FISUD: присваиваются к FISUD только младшие 4 бита от data, а старшие 4 бита - нули, независимо от значения data.
...
SREG &= ~(0x80); //в начале программы отключаю прерывания
...
FISCR=0x03;//IO SEL 15
FISUD=datad;// так даю значения в ADINA[7:0] - правильно?
...
FISCR=0x02;//IO SEL 14
FISUD=datac;
...
Прерывания я отключил, с ними проблем не должно возникать.
Правильно ли написан код, что может быть не так?
------------------------------------------------
Привожу далее часть FPGA. Делал 2 порта:C и D.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity PORTOUT is
port (
CLOCK :in std_logic;
LOADSEL15C :in std_logic;
LOADSEL14D :in std_logic;
FIOWEA :in std_logic;
DATAIN :in std_logic_vector(7 downto 0);
C :out std_logic_vector(7 downto 0);
D :out std_logic_vector(7 downto 0)
);
end PORTOUT;
architecture BEHAV of PORTOUT is
begin
process (CLOCK,LOADSEL15C,FIOWEA,DATAIN)
variable PORTCINT : std_logic_vector(7 downto 0);
begin
if (rising_edge(CLOCK) and CLOCK'event) then
if (LOADSEL15C='1' and FIOWEA = '1') then
PORTCINT := DATAIN;
end if;
end if;
C <= PORTCINT;
end process;
process (CLOCK,LOADSEL14D,FIOWEA,DATAIN)
variable PORTDINT : std_logic_vector(7 downto 0);
begin
if (rising_edge(CLOCK) and CLOCK'event) then
if (LOADSEL14D='1' and FIOWEA = '1') then
PORTDINT := DATAIN;
end if;
end if;
D <= PORTDINT;
end process;
end BEHAV;
VHDL компилится и показывает правильное поведение в процессе симулирования.
-----------------------------------------
Как я уже сказал, я делал 2 порта, попробую сделать с одним портом.
В файле .pin для C (7..0) и D (7..0) указывал выводы, выводы располагал на одной стороне.
Из Вашего ответа понял, что порты надо разводить на разные стороны микросхемы. Почему на одной стороне микросхемы может быть только один порт?
---------------------------------------
Что было в .ict(Вроде все есть,что нужно):
AVR_IO_Selects ('loadsel14d'='IOSELA14' 'loadsel15c'='IOSELA15' )
AVR_Controls ('fiowea'='FIOWEA' )
Data_from_AVR ('datain[0]'='ADINA0' 'datain[6]'='ADINA6' 'datain[1]'='ADINA1' 'datain[7]'='ADINA7' 'datain[2]'='ADINA2' 'datain[3]'='ADINA3' 'datain[4]'='ADINA4' 'datain[5]'='ADINA5' )
AVR_Side_Clocks ('clock'='GCLK6' )