Опять динамическая память 565РУ5, 565РУ7. Тестер на PIC16F73

8-битные микроконтроллеры PICmicro (ПИКи) от Microchip и совместимые, а также 16-битные PIC24 и 32-битные PIC32

Moderator: Shaos

Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Опять динамическая память 565РУ5, 565РУ7. Тестер на PIC16F73

Post by Tronix »

Все-таки хочу сделать сабж. Набросал, но не работает с РУ5. Регенерация происходит по таймеру:

Code: Select all

#int_timer1
void Refresh ( )
{
   unsigned int16 i;
   // to output, CAS must be high, then each row is output followed
   // by an RAS cycle
   output_high(RAS);
   output_high(CAS);
   for(i=0;i<0x100;i++)
   {
      addressByte(i);
      output_low(RAS);
      output_high(RAS);
   }
   // set the timer up so that it will role over in 4ms
   set_timer1(0xC800);
}
Выглядит так:

Image

Вопрос - это хоть похоже на правду? Пробовал РУ5 и 4164 - пишу в ячейки 0xAA, читаю постоянно со всех адресов 0x00...
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Если не отшибло память, то регенерация тактированием начала применяться с 41256 (РУ7). От 4116 до 4164 нужно выставлять адрес на адресные линии. На этом, кстати, некоторые программы для z80 делали защиту, переписывая значения регистра R, тем самым не давли регенерироваться некоторым пулам адресов.

P.S. Еще по памяти 41256 и РУ7 могут работать в пакетном режиме, тактированием по 4 бита с автоинкрементом адреса (EDO?).
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

jdigreze wrote: От 4116 до 4164 нужно выставлять адрес на адресные линии.
Дык я выставляю:

Code: Select all

   for(i=0;i<0x100;i++) 
   { 
      addressByte(i); // здесь на ноги A0..A7 выставляется адрес (i)
      output_low(RAS); // защелкивается
      output_high(RAS); // поехали дальше
   }
В итоге что-то вроде того получается при приближении:

Image

На A0..A7 - адрес (от 0 до 255), потом опускаем RAS, потом поднимаем. И так до 255.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Прости, не заметил выставление адреса. Завтра попробую почитать свои маны по регенерации.

А картинки я почему-то не вижу :(
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Посмотрел, ремонт дома - это капец, вроде бы всё правильно написано. Однако, проверь: после установки /RAS=0 нужна задержка, порой в 200нс, а то и того больше, до /RAS=1, после чего задержка минимум 120нс.

Code: Select all

for(i=0;i<0x100;i++) 
   { 
      addressByte(i); // здесь на ноги A0..A7 выставляется адрес (i) 
      output_low(RAS); // защелкивается
      delay(200); //200ns
      output_high(RAS); // поехали дальше
      delay(120); //120ns 
   }
Вот почему я недолюбливаю Си для управления чем либо - хрен пойми сколько тактов займёт та или иная операция, надо сначала компилировать, потом смотреть что вышло на асме, и только потом пересчитывать во времянки.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Спасибо, попробую... По результату отпишусь...
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Ну, в общем, запустил. Тестит РУ5, РУ7(Г,Б,В), 4164, 41256.
Схема, прошивки для разных PIC здесь: http://zx-pk.ru/showthread.php?t=24017
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

В чём проблема то была, разобрался?
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

jdigreze wrote:В чём проблема то была, разобрался?
Угу, проблема была в том, что я к панельке питалово перевернутое припаял - плюс на минус а минус на плюс :) Я еще все думал - чето оно сильно греется как-то...
Что удивительно, РУ5, 4164 и 41256 вполне нормально пережили продолжительный перевертыш питания. Хорошие микросхемы, тест прошли по полной программе :)