Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 24.04.2014, 00:07  
Tronix286
Частый гость
 
Регистрация: 23.04.2014
Сообщений: 20
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Tronix286 на пути к лучшему
По умолчанию PIC parallel slave port (PSP) или PIC и ISA-8

Добрый день!

Есть у меня задумка - сделать контроллер SD-карт для старых компьютеров типа XT (8088 процессор). Для чего вся эта рухлядь - не спрашивайте, все равно вряд-ли получится объяснить. Ну есть типа странные люди, которые коллекционируют и возятся со старыми компами. За бугром многие тащатся по Atari/Amiga/Commodore 64/MSX и тд. У нас ZX Spectrum в почёте. Типа ностальджи, что-ли, и все такое. Шина ISA-8 соответственно.

И вот не так давно я заинтересовался PIC'ами, и прочитал про такую феню в них, как Parallel Slave Port aka PSP. На бумаге все вроде здорово - данные к данным, /WR /RD и /CS в соответствии с внешним дешифратором. Цикл обмена у ISA ~180us, а значит если процедура обработки PSP прерывания небольшая, должен укладываться. Теоретически.

Ну и вот купил я значится PIC18F452, у которого есть аппаратный SPI, PSP, памяти дофига и в DIP корпусе. Так, как я нуб в электронике а тем более в PIC, решено было писать не на православном асме или хотя бы на человеческом си, а на инструменте для нубов - mikroc. Мне хотелось проверить быстрее аппаратную часть, и просто пообщаться с контроллером.

Суть идеи такова, что контроллер должен принимать управляющие команды с компа, через регистр команд. Команды типа: "установить сектор", "читать сектор", "писать сектор" и тд. Это порт 0x3b1h. И через порт данных слать или принимать данные. Это порт 0x3b0h.

Спаял и вроде как-то даже работает, но, есть глюки: когда я начинаю быстро читать из порта данные, например так:
Код:
mov dx,3b0h
in al,dx
xchg al,ah
in al,dx
То в AX у меня сидит только первый байт, а второй - ноль. Если же вставить небольшую задержку между чтением, то все читается нормально.
Код:
mov dx,3b0h
in al,dx
jmp $+2
jmp $+2
xchg al,ah
in al,dx
Из иструментов ессно нет нихрена, кроме китайского мультиметра, поэтому что там у меня творится с сигналами я могу только гадать. Идеи две: 1) я не придерживаюсь временных диаграмм чтения/записи из даташита, например сигнал /CS у меня выдается позже чем сигнал /RD или /WR. 2) я не успеваю обрабатывать PSP-прерывание.

Такой вот говнокод:
PHP код:
void Interrupt() { 
     
TRISA.B0 0
     
PORTA.B0 0;      // set READY signal low for IO 
      
     
if (intcon3.B0) {  // RB1 (INT1). Connected to "command write" 0x3b1h 
            
flag_b1 1
            
intcon3.B0 0
        } 
     else              
// 0x3b0h 
     

      if (
trise.B7 == 1) { // RD (data read) 
                 
dataBuffer[t_x] = portd
                 if ((
flag_b1 == 0) && (t_x ‹ 514)) t_x++; 
             } 
      else                 
// WR (data write) 
      
if ((trise.B6 == 0) && (flag_b1 == 0)) { 
                
portd dataBuffer[r_x]; 
                if (
r_x ‹ 514r_x++; 
             } 
     
pir1.B7 0;       // clear PSP Interrupt flag 
     

      
     
TRISA.B0 1;      // set READY signal high impedance 

Основной цикл:
PHP код:
while (1
  { 

  if (
flag_b1 == 1
     { 
          
cmd dataBuffer[t_x]; 
          
do_command(); 
          
flag_b1 0
     } 
  } 

Может у кого был опыт сопряжения пик и иса, гляньте опытным взглядом? В архиве там сорец на MikroC...
Миниатюры:
Нажмите на изображение для увеличения
Название: P1110798.jpg
Просмотров: 135
Размер:	563.5 Кб
ID:	63372   Нажмите на изображение для увеличения
Название: P1110801.jpg
Просмотров: 113
Размер:	571.6 Кб
ID:	63373  
Вложения:
Тип файла: pdf poisk_sd.pdf (334.4 Кб, 43 просмотров)
Тип файла: zip poisk_sd_en.zip (338.0 Кб, 41 просмотров)
Реклама:
Tronix286 вне форума  
Непрочитано 24.04.2014, 01:23  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Сообщение от Tronix286 Посмотреть сообщение
Цикл обмена у ISA ~180us, а значит если процедура обработки PSP прерывания небольшая, должен укладываться. Теоретически
это при 4.77-8МГц на шине и 2-х тактах на пересылку?
ваш документ в студию!
и еще - тестером вы ничего не измерите, да еще и с таким монтажом. осциллограф вам крайне необходим, хотя б 10-20МГц
jump вне форума  
Непрочитано 24.04.2014, 08:50  
Tronix286
Частый гость
 
Регистрация: 23.04.2014
Сообщений: 20
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Tronix286 на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Сообщение от jump Посмотреть сообщение
это при 4.77-8МГц на шине и 2-х тактах на пересылку?
ваш документ в студию!
и еще - тестером вы ничего не измерите, да еще и с таким монтажом. осциллограф вам крайне необходим, хотя б 10-20МГц
Ориентируюсь на книжку "Разработка устройств сопряжения для персонального компьютера типа IBM PC" Ю.В.Новиков, О.А.Калашников, С.Э.Гуляев.

Плюс, я ж еще вроде контролирую сигнал IO READY, то есть по входу в прерывание делаю его низким, по выходу перевожу в высокоимпедальное состояние. Теоретически, если бы я не влазил в цикла обмена, на это время (на время занижения READY) он должен продляться. И с другой стороны, если бы я его держал слишком долго, то у меня бы не отрефрешивалась системная динамическая память и комп бы вис постоянно.

Осциллограф да, хочется но пока колится, коплю постепенно. Подумываю пока над логическим анализатором типа USBee за 300 рублей из китая. Вроде 10Mhz то точно должен держать.
Tronix286 вне форума  
Непрочитано 24.04.2014, 10:03  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Tronix286, что делает проверка трисов ? Что проверяем ?

Код:
if (trise.B7 == 1)
...
if ((trise.B6 == 0)
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 24.04.2014 в 10:05.
dosikus вне форума  
Непрочитано 25.04.2014, 22:41  
Tronix286
Частый гость
 
Регистрация: 23.04.2014
Сообщений: 20
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Tronix286 на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Сообщение от dosikus Посмотреть сообщение
Tronix286, что делает проверка трисов ? Что проверяем ?

Код:
if (trise.B7 == 1)
...
if ((trise.B6 == 0)
Я все думал думал и не понял - это вопрос или намек? Ну по идее, trise.b7 это бит статуса приемного буфера PSP. Как я понимаю, если байт принят - оно должно быть равно 1.

trise.b6 - это бит статуса передающего буфера. Если 1 - то байт, ранее выданный в порт, еще не был прочитан.
Tronix286 вне форума  
Непрочитано 26.04.2014, 00:10  
gromovi
Заблокирован
 
Регистрация: 12.09.2009
Сообщений: 420
Сказал спасибо: 148
Сказали Спасибо 166 раз(а) в 118 сообщении(ях)
gromovi на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Сообщение от Tronix286 Посмотреть сообщение
Я все думал думал и не понял - это вопрос или намек? Ну по идее, trise.b7 это бит статуса приемного буфера PSP. Как я понимаю, если байт принят - оно должно быть равно 1.

trise.b6 - это бит статуса передающего буфера. Если 1 - то байт, ранее выданный в порт, еще не был прочитан.
вы уверены что через trise проверяется? trise вроде направление порта вход\ выход. могу конечно ошибаться, но trise не связан "с уровнем на порту".

Последний раз редактировалось gromovi; 26.04.2014 в 00:13.
gromovi вне форума  
Непрочитано 26.04.2014, 10:26  
Tronix286
Частый гость
 
Регистрация: 23.04.2014
Сообщений: 20
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Tronix286 на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Сообщение от gromovi Посмотреть сообщение
вы уверены что через trise проверяется? trise вроде направление порта вход\ выход. могу конечно ошибаться, но trise не связан "с уровнем на порту".
Судя по этой доке http://www.microchip.su/attachment.p...4&d=1392211389 да, в режиме PSP именно trise
Tronix286 вне форума  
Непрочитано 26.04.2014, 11:03  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

gromovi, Да не, здесь вроде все верно ...
Не въеду пока в код , но надо рыть листинг а МикроС для сего не лучший вариант .
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 30.04.2014, 11:17  
Tronix286
Частый гость
 
Регистрация: 23.04.2014
Сообщений: 20
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Tronix286 на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Может в порт сразу значения выдавать, не дожидаясь прерывания? А в прерывании если пошло считывание только увеличивать индекс массива....
Tronix286 вне форума  
Непрочитано 30.04.2014, 12:02  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: PIC parallel slave port (PSP) или PIC и ISA-8

Tronix286, Надо логический анализатор и смотреть листинг .
Так только гадать будем...
__________________
Осторожно , злой кот
dosikus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU] yurinform Микроконтроллеры, АЦП, память и т.д 5 05.07.2011 19:00
USB интерфейс для PIC (или FPGA) VVK Микроконтроллеры, АЦП, память и т.д 8 09.08.2007 13:38
Передача по PSP (Parallel Slave Port) для PIC moyaproba Микроконтроллеры, АЦП, память и т.д 6 29.11.2006 21:54


Часовой пояс GMT +4, время: 12:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot