MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

Кто нибудь пробовал эмулировать.....

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Кто нибудь пробовал эмулировать.....
Автор: dennis ()
Дата:   05/03/2005 10:06

.....параллельный ввод/вывод с помощью ПИК? В общем беда такая. Нужно, что бы ПИК управлял
устройством со стандартным микропроцессорным интерфейсом (шина данных D[0-7], шина адреса A[0-
3], и сигналы управления CS*, RD*, WR*). Схемку собрал на PIC16F877, шину данных сделал на
PORTD (порт настроен как простой порт ввода/вывода, а не ведомый параллельный порт), шину
адреса на PORTB, CS*, WR*, RD* на PORTE (опять же настроен как простой порт ввода/вывода, а не
аналоговый). Так вот беда в следующем, записываю значение в PORTD = 0xXX; и настраиваю его на
вывод, TRISD = 0x00; Дальше настраиваю порт D на ввод, TRISD = 0xFF, и читаю регистр PORTD, а
он мне возвращает 0xXX, то есть предыдущее значение, которое в него было записано. В чем дело?
Я конечно в курсе, что надо вводить задержки из-за паразитной емкости монтажа и все такое, но я
уже довел задержку до 4ms, и все одно. Кстати, пробовал таким образом в Протеусе читать/писать
обычную микросхему памяти с таким интерфейсом, все нормально работает.

Заранее благодарен.




 
 Re: Кто нибудь пробовал эмулировать.....
Автор: GRR ()
Дата:   05/03/2005 10:54

Я работал с флешками K9F2808. Проблем нет, все работает...


 
 Re: Кто нибудь пробовал эмулировать.....
Автор: dennis ()
Дата:   05/03/2005 11:00

Кусок кода как это все происходит можешь показать? Если не трудно.




 
 Не-е, не трудно...
Автор: GRR ()
Дата:   05/03/2005 12:01

read_page() {
unsigned char p;
unsigned int loop;
// Выдаем команду чтения
CE = 0;
CLE = 1;
ALE = 0;
WE = 0;
PORTD = 0;
WE = 1;
CLE = 0;

// Выдаем адрес
ALE = 1;
WE = 0;
PORTD = address0;
WE = 1;
WE = 0;
PORTD = address1;
WE = 1;
WE = 0;
PORTD = address2;
WE = 1;
ALE = 0;

// Ожидание готовности
while(!BUSY);

// Читаем
TRISD = 0xff;
loop = 0;
do {
RE = 0;
RE = 1;
buf1[loop] = PORTD;
loop++;
}while(loop < 512);

TRISD = 0;
CE = 1;
}


 
 Re: Не-е, не трудно...
Автор: dennis ()
Дата:   09/03/2005 13:27

Спасибо! Извиняюсь за беспокойство, проблема была в том, что панель PLCC44 плохо контачила,
несколько контактов были сильно загнуты. Теперь все работает.




 
 Радиотехника - наука о контактах
Автор: bzx ()
Дата:   09/03/2005 13:58

.