Плата центрального недопроцессора nedoCPU-32

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

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote: С помощью одной 74F00 и двух 74F74 сделал 320x200 2-бита на точку :)
А также я вариант со счётчиком 74LS161 попробовал - тоже летает как надо (и позволяет варьировать кол-во битов на пиксел вплоть до 16)
Shaos wrote: Теперь эти 2 бита надо завести на палитру, которую затем завести на AD725 (она правда уже $11 стоит - в 3 раза дороже чем PIC32)

P.S. Короче дорого получается если дополнительное железо добавлять (хоть спец.чип, хоть мелкую логику, генерящую синусоиды)...

P.P.S. На самом деле можно отпочковать отсюда проджект Xorya-II, который будет уже не дешёвой игровой приставкой, а типа компьютером с клавиатурой, SD-карточкой, сетью и т.д.
Вместо мелкой логики туда можно приделать CPLD от Xilinx - тот же xc9536 например ;)
Да и второй PIC32 можно поставить как сопроцессор для сетевых и математических нужд :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Фокус, который я открыл с TS2068 на PIC32 (и на другом ТВ) тоже работает - т.е. если быстро щёлкать кадрами (полукадрами) ожидая возврата луча, то ТВ сам соберёт полукадры черезстрочно, т.е. фактическое цветное разрешение получается 160x400 вместо 160x200 (а чёрно-белое - 640x400)!!!

P.S. Хм, а эта INSIGNIA, которая с неточным кварцем отказывалась показывать цвет (а с точным показывает) теперь отказывается показыать мои чёрно-белые режимы, причём совсем (цветные показывает)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote:Фокус, который я открыл с TS2068 на PIC32 (и на другом ТВ) тоже работает - т.е. если быстро щёлкать кадрами (полукадрами) ожидая возврата луча, то ТВ сам соберёт полукадры черезстрочно, т.е. фактическое цветное разрешение получается 160x400 вместо 160x200 (а чёрно-белое - 640x400)!!!
Короче недостаток горизонтального разрешения по цвету (160) можно компенсировать избытком вертикального разрешения (400) :lol:
xorya-shaos-sony.jpg
Это я каждую горизонтальную пару пикселов из своего аватара повернул на 90 градусов и разнёс по полукадрам :roll:
Выше большой телек SONY, а ниже - небольшой INSIGNIA (оба собирают полный кадр из полукадров):
xorya-shaos-insignia.jpg
P.S. А вот как это показывает телек поменьше да попроще (который не умеет из полукадров собирать полный кадр, а просто тупо накладывает полукадры друг на друга):
xorya-shaos-craig.jpg
P.P.S. Может мне сделать официальный видеорежим с таким фейковым интерлейсом? Хотя бы чёрно-белый 640x400 (ядро само по прерыванию будет переключать видеобуфера) - и то куда веселее будет (разбавленным дизерингом чёрно-белым полутоновым изображениям по сути не важно в каком порядке идут чётные и нечётные строки)? Вот например что можно будет показать в таком режиме на экране ТВ:
Fujiya.gif
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Вот собственно вся дема:


https://youtu.be/xI5DuTKPWsA
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Вот такую штуку сделал и вывесил на Hackaday - реакции 0, видать народ испугался озвученной цены конечного продукта в $29.95...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Тут общая стоимость не только от проца ($4) зависит, т.к. ещё есть аналоговый джойстик ($6) и ZIF-разъём ($9), да и плату дешевле чем $3.50 не сделать. Видимо надо с чего-то дешевле начинать - например конструктор для сборки на бредборде ($5) и ОДНА кнопка (для игр типа Flappy Bird)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote:Тут общая стоимость не только от проца ($4) зависит, т.к. ещё есть аналоговый джойстик ($6) и ZIF-разъём ($9), да и плату дешевле чем $3.50 не сделать. Видимо надо с чего-то дешевле начинать - например конструктор для сборки на бредборде ($5) и ОДНА кнопка (для игр типа Flappy Bird)...
Коллега по работе предложил заюзать touch-сенсоры, вытравленные непосредственно на самой печатной плате - в этом случае никаких кнопок по доллару и тем более джойстиков за 6 баксов НЕБУДЕТ - только по одному резистору на сенсор!


https://www.youtube.com/watch?v=bv8ZcvTWauI

Алгоритм опроса:

Code: Select all

int tch[4],cc[5],c,i;
ConfigCNBPullups(CNB8_PULLUP_ENABLE|CNB9_PULLUP_ENABLE|CNB10_PULLUP_ENABLE|CNB11_PULLUP_ENABLE);
....
// somewhere in the game loop:
 tch[0]=tch[1]=tch[2]=tch[3]=5;
 mPORTBSetPinsDigitalOut(BIT_8|BIT_9|BIT_10|BIT_11);
 mPORTBClearBits(BIT_8|BIT_9|BIT_10|BIT_11);
 mPORTBSetPinsDigitalIn(BIT_8|BIT_9|BIT_10|BIT_11);
 cc[0] = mPORTBRead();
 cc[1] = mPORTBRead();
 cc[2] = mPORTBRead();
 cc[3] = mPORTBRead();
 cc[4] = mPORTBRead();
 for(i=0;i<5;i++)
 {
  c = cc[i];
  if((c&BIT_8) && tch[0]==5) tch[0]=i;
  if((c&BIT_9) && tch[1]==5) tch[1]=i;
  if((c&BIT_10) && tch[2]==5) tch[2]=i;
  if((c&BIT_11) && tch[3]==5) tch[3]=i;
}
т.е. сначала ставим эти 4 ноги на выход, выводим нули и тут же переключаем на вход считая далее как долго на этих входах сохранятся нули - если больше 1, то сенсор "потроган" (эксперимент показал, что обычно это 2 или 3 итерации цикла).

P.S. В июне 2021 года нашёл этот прототип и сфоткал - я гляжу тут резисторов вообще нету (внутри микроконтроллера включены PULLUP-ы на этих входах) - просто кусочки текстолита покрытые прозрачным скотчем :)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re:

Post by Lavr »

Shaos wrote:Частично собрал и потестил :)

Попробовал PIC32 в DIP-28 - распознаётся:

Image
У нас, оказывается, втихаря работает центральный магазин "Радиотовары"... :roll:
Я на неделе им позвонил - типа нет ли доставки деталей на дом? А они отвечают - приезжайте, мы работаем...
Сегодня написал списочек и поехал... а до пандемии я присматривался там на такой Pickit, как у тебя, но не купил.

А сегодня спросил цену - он не подорожал, думаю - надо купить, коли так... ну и купил. 8)

Всё выглядит очень забавно: в двери магазина они сделали окно, как в ларьке. Рядом висит объявление:
"Уважайте друг друга: соблюдайте дистанцию 2 м.!" :wink:
iLavr
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Наткнулся на прототип Xorya Touch в коробке со всякими железяками - сфоткал и прицепил выше в соответствующем сообщении
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote:Может мне сделать официальный видеорежим с таким фейковым интерлейсом? Хотя бы чёрно-белый 640x400 (ядро само по прерыванию будет переключать видеобуфера) - и то куда веселее будет (разбавленным дизерингом чёрно-белым полутоновым изображениям по сути не важно в каком порядке идут чётные и нечётные строки)? Вот например что можно будет показать в таком режиме на экране ТВ:

Image
Надо чтоли вспомнить как PIC32 программится да прошивается и уже попробовать :roll:

P.S. Оригинал картинки бобинника можно поглядеть вот тут

P.P.S. Для защиты от перепутывания чётных и нечётных строк можно делать не монохром 640x400, а 5 градаций серого в 320x200 - тогда можно каждый пиксел заменить на квадрат 2х2 (с потерей чёткости):

Code: Select all

0x0 -> 0 0 = 0 0
       0 0   0 0

0x1 -> 0 0 = 0 1
       0 1   0 0

0x2 -> 1 0 = 0 1
       0 1   1 0

0x3 -> 1 1 = 0 1
       0 1   1 1

0x4 -> 1 1 = 1 1
       1 1   1 1
(также дописал справа вариант в случае перестановки чётных и нечётных строк местами - так понятнее будет что я имею ввиду)

P.P.P.S. Либо сохранить высокое горизонтальное разрешение ограничившись ТРЕМЯ градациями серого для пиксела в картинке разрешением 640x200 и делать "интеллектуальный" дизеринг, который будет учитывать накапливаемую по ходу строки ошибку и учитывать её при подгоне следующих двоек монохромных пикселов...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote:Надо чтоли вспомнить как PIC32 программится да прошивается и уже попробовать :roll:
Вспомнил :)
У меня в дебияне уже 4 года как стоит MPLAB X IDE v5.05 - ставил когда готовился к суперконференции хакадея в конце 2018 года.
Она запустилась без вопросов и даже PICKit3 обнаружила ;)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote:Вот так отработал пример config.c:

Code: Select all

/* config.c - A.A.Shabarshin (April 2015) */

#include "xorlib.h"

int main()
{
 unsigned long conf = xoconfig();

 xoprintf("XORLib v%i.%i configuration:\n",
   XORLIB_VERSION>>8, XORLIB_VERSION&0xFF);

 if(conf & (1<<XOMODE_320x200_MONO)) 
   xoprintf("XOMODE_320x200_MONO\n");
 if(conf & (1<<XOMODE_160x100_GRAY5))
   xoprintf("XOMODE_160x100_GRAY5\n");
 if(conf & (1<<XOMODE_640x200_MONO))
   xoprintf("XOMODE_640x200_MONO\n");
 if(conf & (1<<XOMODE_320x100_GRAY5))
   xoprintf("XOMODE_320x100_GRAY5\n");
 if(conf & (1<<XOMODE_160x200_COL15))
   xoprintf("XOMODE_160x200_COL15\n");
 if(conf & (1<<XOMODE_160x100_COL120))
   xoprintf("XOMODE_160x100_COL120\n");
 if(conf & (1<<XOMODE_320x200_COL4))
   xoprintf("XOMODE_320x200_COL4\n");
 if(conf & (1<<XOMODE_160x200_COL16))
   xoprintf("XOMODE_160x200_COL16\n");
 if(conf & (1<<XOMODE_320x200_COL16))
   xoprintf("XOMODE_320x200_COL16\n");
 if(conf & (1<<XOMODE_160x200_COL256))
   xoprintf("XOMODE_160x200_COL256\n");
 if(conf & (1<<XOMODE_640x200_COL16))
   xoprintf("XOMODE_640x200_COL16\n");
 if(conf & (1<<XOMODE_320x200_COL256))
   xoprintf("XOMODE_320x200_COL256\n");
 if(conf & (1<<XOMODE_640x350_COL16))
   xoprintf("XOMODE_640x350_COL16\n");
 if(conf & (1<<XOMODE_640x480_COL16))
   xoprintf("XOMODE_640x480_COL16\n");
 if(conf & (1<<XOMODE_800x600_COL16))
   xoprintf("XOMODE_800x600_COL16\n");
 if(conf & (1<<XOMODE_EXTENDED_VGA))
   xoprintf("XOMODE_EXTENDED_VGA\n");

 if(conf & XOCONFIG_BIGENDIAN)
   xoprintf("BIG ENDIAN\n");
 else
   xoprintf("LITTLE ENDIAN\n");
 if(conf & XOCONFIG_32BITINT)
   xoprintf("32-BIT INT\n");
 else
   xoprintf("16-BIT INT\n");
 if(conf & XOCONFIG_NTSCTV)
   xoprintf("NTSC TV\n");
 if(conf & XOCONFIG_PALTV)
   xoprintf("PAL TV\n");
 if(!(conf & XOCONFIG_NTSCTV)&&
    !(conf & XOCONFIG_PALTV))
   xoprintf("MONITOR\n");
 if(conf & XOCONFIG_NETWORK)
   xoprintf("NETWORK\n");
 if(conf & XOCONFIG_KEYBOARD)
   xoprintf("KEYBOARD\n");
 if(conf & XOCONFIG_MOUSE)
   xoprintf("MOUSE\n");
 if(conf & XOCONFIG_SDCARD)
   xoprintf("SD-CARD\n");
 if(conf & XOCONFIG_CDROM)
   xoprintf("CD-ROM\n");
 
 return 0;
}
Image

P.S. Кстати оказалось, что PIC32 работает в режиме "little-endian", а я так надеялся, что он big (MIPS-ы вроде умеют и так, и эдак)...
Вот поправил кой-чего в тексте примера, собрал и запустил (через 7.5 лет) - пришлось поставить явно режим (цветной) - в результате текст "раскрасился" :)
Xorya-220930-01.jpg
Также за прошедшие годы (последний раз код XORLib я трогал в 2016 году) либа "забыла", что по умолчанию она должна ставить режим XOMODE_320x200_MONO, чтобы с ходу работал самый простой хелловорлд:

Code: Select all

#include "xorlib.h"

int main()
{
 xoprintf("Hello, World!");
 return 0;
}
P.S. По ходу режимы XOMODE_320x200_MONO и XOMODE_640x200_MONO дают чёрные экраны :(

P.P.S. Ха - это не либа виновата, а телек! Подключил другой телек и чёрно-белые режимы заработали как надо!!!
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Решил поглядеть что будет, если 4-пиксельные паттерны обрывать в середине - для начала простецкий телек CRAIG (который тем не менее может показывать как цветной, так и монохромные режимы):
Xorya-221001-01.jpg
Как можно видеть большинство цветов начинаются и заканчиваются с шагом 4 пиксела (высота полосок 12 пикселов - соответственно если мы видим 3 ступеньки, то значит ширина каждой - 4 пиксела т.к. наклонные линии идут под углом 45 градусов).

P.S. А вот телек INSIGNIA, который получше (хоть и не способный различить NTSC сигнал если в строках нету "color burst" - именно он не хочет показывать монохромные режимы Xorya):
Xorya-221001-02.jpg
Вывод - на границах цветов скорее всего будут артефакты и реальное разрешение 160 цветных пикселов в строке, однако граница между чёрным и белым должна быть с точностью 640 пикселов, а между серым и чёрным или серым и белым - 320 пикселов в строке, что уже не плохо!

P.P.S. Это я всё думаю как бы развёртку ZX натянуть на эту графику...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Shaos wrote:Это я всё думаю как бы развёртку ZX натянуть на эту графику...
вот примерно так:
Xorya-221001-03.jpg
или тоже самое на другом, более "умном" телеке:
Xorya-221001-04.jpg
тут можно видеть, что этот телек "съедает" отдельно стоящие пикселы...

P.S. На современном большом телеке это всё конечно выглядит несколько повеселее:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Плата центрального недопроцессора nedoCPU-32

Post by Shaos »

Научил Xorya показывать картинки ZX-Spectrum в формате SCR:
Grongy - ZXPSX (2021).png
Xorya-221002-02.jpg
По идее ничо так, но чередующиеся чёрные и белые (серыe) полоски могут сформировать на телевизоре несуществующие цвета.
MAC - La Aventura Espacial (2020).png
Xorya-221002-03.jpg
А вот более сложная картинка к сожалению превращается в цветное месиво :(
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net