[an error occurred while processing this directive]
Спасибо
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено kybikrybik 06 ноября 2006 г. 14:14
В ответ на: Попробую помочь отправлено <font color=gray>Shtirlits</font> 05 ноября 2006 г. 17:35

Про 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' )

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание