Прикрутим USB-накопитель

Железо, связанное с TS-Conf

Postby Mor-Da » Mon, 06.07.2020 07:19:31

Ай, маладца. Тока для SPI-detected надо еще ~CS на 1 (согласно DS)
Image
Я смотрю, что 170, тоже после 134 пришло.
Вот мой сабж:
Image
Что планирую: "на горячую" попробовать подцеплять; Взять +5 не с ISP-разъема, там почемута тока около 4,4 что не есть хорошо, пушо флэшку так и не удалось подмонтировать.
P.S. Оставлю здесь:
Обычная последовательность действий при работе с USB Flash:
05H — сброс чипа (RESET_ALL);
15H 06H — переключение в режим USB (SET_USB_MODE) — ответ 51H 15H;
30H — подключение USB Flash (DISK_CONNECT) — ответ 14H;
31H — монтируем USB Flash (DISK_MOUNT) — ответ должен быть: 14H;
- - - - USB Flash устройство подключено, можно продолжать - - - -
27H — получение сведений об устройстве (RD_USB_DATA0)
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Mon, 06.07.2020 07:49:57

Mor-Da wrote:Тока для SPI-detected надо еще ~CS на 1

Много чести. Резиком подпёрт.
Mor-Da wrote:там почемута тока около 4,4

Потому что держурка для атмеги. 5В, пропущенные через диод.
Mor-Da wrote:15H 06H — переключение в режим USB (SET_USB_MODE) — ответ 51H 15H;

У меня ответ 51H 7FH. Втыкаю generic картридер с форматированной сдшкой. Зажигает диод, при вытаскивании ридера - гаснет.
Об ихний блядский даташит можно мозги погнуть. Проще автоматом перевести назад на китайский и там уже разобраться.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Mon, 06.07.2020 07:55:57

TS-Labs wrote:Об ихний блядский даташит можно мозги погнуть.
Есть на китайском CH376 Programming Guide.PDF. Идет в составе доков к отладочной CH376EVT. Его щас перевожу. Типа того
2.2. SPI
SPI synchronous serial interface signal lines include: SPI chip select input pin SCS, serial clock input pin SCK, serial data input pin SDI, serial data output pin SDO, interrupt output pin INT # and interface busy Status output pin BZ (can be omitted).
1. CH376 supports SPI mode 0 and mode 3 (CH376 samples data on the rising edge of SCK and outputs data on the falling edge of SCK);
2. CH376 supports SPI clock speed up to 24MHZ;
3. When CH376 works in SPI mode, the first byte after SCS changes from high to low is treated as a command; after the end of a command cycle, the microcontroller should set SCS to high;
The following is the SPI timing simulation using the 51 single-chip IO port:

void Spi376OutByte(UINT8 d) /* SPI output 8-bit data */
{
/* If it is a hardware SPI interface, it should first write data to the SPI data register, and then query the SPI status register to wait for the SPI byte transfer to complete */
UINT8 I;
for (i=0; i<8; i++)
{
CH376_SPI_SCK = 0;
if (d & 0x80) CH376_SPI_SDI = 1;
else CH376_SPI_SDI = 0;
d <<= 1; /* The data bit is high first */
CH376_SPI_SCK = 1; /* CH376 Sampling the input on the rising edge of the clock */
}
}

UINT8 Spi376InByte(void) /* SPI input 8-bit data */
{
/* If it is a hardware SPI interface, it should first query the SPI status register to wait for the SPI byte transfer to complete, and then read the data from the SPI data register */
UINT8 I, d;
d = 0;
for (i=0; i<8; i++)
{
CH376_SPI_SCK = 0; /* CH376 is output on the falling edge of the clock */
d <<= 1; /* Data bits are high */
if (CH376_SPI_SDO) d++;
CH376_SPI_SCK = 1;
}
return(d);
}

#define xEndCH376Cmd()
{
CH376_SPI_SCS = 1;
}
/* SPI chip select is invalid, end CH376 command, only used in SPI interface mode */

void xWriteCH376Cmd(UINT8 mCmd) /* Write commands to CH376 */
{
CH376_SPI_SCS = 1; /* Prevent SPI chip selection from being
disabled by xEndCH376Cmd */
mDelay0_5uS(); /* For bidirectional I/O pins emulating the SPI interface,
then you must ensure that SPI_SCS, SPI_SCK, SPI_SDI are the
output direction, and SPI_SDO is the input direction */
CH376_SPI_SCS=0; /* SPI chip select is effective */
Spi376OutByte(mCmd); /* Issue a command code */
mDelay0_5uS(); mDelay0_5uS(); mDelay0_5uS();
/* Delay 1.5uS Ensure that the read and write cycle is greater than 1.5uS,
or use the status query on the upper line instead */
}

void xWriteCH376Data(UINT8 mData) /* Write data to CH376 */
{
Spi376OutByte(mData);
//mDelay0_5uS(); /* Make sure the read and write cycle is greater than 0.6uS */
}
UINT8 xReadCH376Data(void) /* Read data from CH376 */
{
//mDelay0_5uS(); /* Make sure the read and write cycle is greater than 0.6uS */
return(Spi376InByte());
}
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Mon, 06.07.2020 08:39:01

Есть замечательная быдлолиба для ардуины.
Из нее трофейно спиздил алгоритм.
ВАЖНО: после каждой команды выключаем ~SS и включаем его перед следующей, иначе не работает.
Code: Select all
- CMD_SET_USB_MODE, 5 (return 0x51)
- CMD_GET_STATUS (return 0x15)
- CMD_SET_USB_MODE, 7 (return 0x51)
- CMD_GET_STATUS (return 0x15)
- CMD_SET_USB_MODE, 6 (return 0x51)
- CMD_GET_STATUS (return 0x15)
- CMD_DISK_MOUNT
- PAUSE 50
- CMD_GET_STATUS (return 0x14)

После чего светодиод на картридере загорается.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Mon, 06.07.2020 08:44:43

Я примерно по такому же пути планировал движение, тока ишо параллельно гляжу Koshi-драйвер. Ну и вопрос, он в подпрограммах ~SShigh и ~SSlow еще запускал #FF на шину. Зачем бы?
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Mon, 06.07.2020 08:47:38

От нечего делать. На самом деле, для СД карты FF это "пустая шина". А для 376 это будет "invalid command" (наверное). Лучше никакие фф не слать.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Mon, 06.07.2020 08:50:31

Алсо, инфа от Коши:
Koshi Rikdo, [05.07.20 21:14]
ну вц сам себя щас компиляет, так-то

Т.е. при желании можно пилить без Шторма.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Mon, 06.07.2020 08:56:12

TS-Labs wrote:Алсо, инфа от Коши:
Koshi Rikdo, [05.07.20 21:14]
ну вц сам себя щас компиляет, так-то

Т.е. при желании можно пилить без Шторма.

Ф том-то и цимус. Еще дравер по-любому надо пилить как плугин. С жоской связкой с WC.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Mon, 06.07.2020 09:17:30

Есть одно проблемное место: надо опрашивать ~INT, без которого CMD_GET_STATUS возвращает фигню. Вешать все на константные паузы - не комильфо.
В принципе, на атмеге есть лапа SDDET, которая читается с нее через вейтовые порты.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Mon, 06.07.2020 09:22:55

Mor-Da wrote:Что-то с особенностями реализации в FPGA фейса SPI.

Извиняюс, забыл ответить.
На Z-Controllere, по заветам КОЕ-кого, с порта данных СНАЧАЛА читается то, что там уже лежит с прошлого раза, а ПОТОМ только туда задвигается новый байт снаружи. Сделано, чтоб не вейтить зетник. Поэтому 1й байт всегда фтопку.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Mon, 06.07.2020 20:09:33

1. Запитал модуль нормальными 5В.
2. "На горячую" и отцепляется, и прицепляется.
3. Началась феерия:
Code: Select all
10 OUT 119,3
20 OUT 119,1
30 OUT 87,5
40 PAUSE 5
50 OUT 119,3
60 OUT 119,1
70 OUT 87,21
80 OUT 87,6
85 PAUSE 5
90 OUT 119,3
100 OUT 119,1
110 OUT 87,48
115 PAUSE 50 /тут я погорячился, было бы достаточно 5, ну уж как есть
120 OUT 119,3
130 OUT 119,1
140 OUT 87,49
145 PAUSE 50 /вот тут точно нужна такая задержка
150 OUT 119,3
160 OUT 119,1
170 OUT 87,39
180 FOR i=0 to 100
190 PRINT CHR$ IN 87;
200 NEXT i
900 OUT 119,3

Пруф#1ImageПруф#2Image
Причем TRANSCEND был мало того что в NTFS, еще и USB3.0.
И кто-то скажет, мол, они там совсем охренели, из под ZX Spectrum Basic-а USB-флэшки читают.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Mon, 06.07.2020 20:47:48

Mor-Da wrote:115 PAUSE 50 /тут я погорячился, было бы достаточно 5, ну уж как есть

Для бейсика там вообще не нужно паузы. Там пару десятков мкс.
Mor-Da wrote:Причем TRANSCEND был мало того что в NTFS

До нтфс-а ты еще не дошел, хрен он откроет его, как ФС. Онли FAT-ы (32/16/12).
Mor-Da wrote:еще и USB3.0

Флэшка все равно стартует в режиме 2.0.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Mon, 06.07.2020 20:52:14

Да я ведь и не спорю. Хоть какой-то прогресс с моей стороны.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Mon, 06.07.2020 20:59:08

Я в том смысле, что "на сырую" ему все равно, какая там ФС.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby LessNick » Mon, 06.07.2020 23:48:37

Mor-Da wrote:Пруф#1Пруф#2


Ну что тут сказать, мегакрут! даёшь продакшин :)
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 975
Joined: Thu, 26.07.2012 15:00:53
WEBSITE: http://fishbone.untergrund.net/

Postby idxi » Tue, 07.07.2020 09:49:26

Норм )

Между тем SDCC все улучшается и улучшается в плане z80...
changelog-head-11715.txt
2020-07-05 Philipp Klaus Krause <pkk AT spth.de>

* src/z80/gen.c,
support/regression/tests/bug-3079.c:
Fix bug #3079.

2020-07-04 Sergey Belyashov <sergey.belyashov@gmail.com>
* src/SDCCpeeph.c
Implement RFE #661: Add newLabel peephole optimizer constraint

2020-07-03 Sergey Belyashov <sergey.belyashov@gmail.com>

* src/SDCCpeeph.c
src/port.h
src/z80/peep.c
src/z80/peep.h
Add 'unordered' support to canJoinRegs peephole constraint

2020-07-03 Sergey Belyashov <sergey.belyashov@gmail.com>

* src/SDCCpeeph.c
src/z80/peeph-z80.def
Implement RFE #684

2020-07-02 Philipp Klaus Krause <pkk AT spth.de>

* src/pdk/gen.c,
src/pdk/ralloc.c:
Improve __sfr ^ with literal.

2020-07-02 Philipp Klaus Krause <pkk AT spth.de>

* src/z80/gen.c:
Use rlca instead of rlc a, RFE #686.
* src/pdk/gen.c:
Improve read from literal pointer.
* src/SDCCopt.c:
Fix bug #3075.
* src/pdk/ralloc.c:
Improve bit set/reset for I/O.

2020-07-01 Philipp Klaus Krause <pkk AT spth.de>

* src/pdk/gen.c,
support/regression/tests/bug-3040.c:
Fix code generation for pdk additive operators with two block-scope const static operands.

2020-06-30 Sergey Belyashov <sergey.belyashov@gmail.com>

* src/SDCCpeeph.c
src/ds390/main.c
src/mcs51/main.c
src/pdk/main.c
src/port.h
src/stm8/main.c
src/z80/main.c
src/z80/peep.c
src/z80/peep.h
src/z80/peeph-ez80_z80.def
Partially implement RFE #683: Support canJoinRegs peephole constraint

2020-06-29 Erik Petrich <epetrich AT ivorytower.norman.ok.us>

* debugger/mcs51/Makefile.in: include dependancy on dbuf*

2020-06-29 Sergey Belyashov <sergey.belyashov@gmail.com>

* src/z80/main.c
src/z80/peeph-ez80_z80.def
src/z80/peeph-z80n.def
Implement RFE #632: Add separate peephole definition files for eZ80 and Z80N

2020-06-28 Philipp Klaus Krause <pkk AT spth.de>

* src/SDCCpeeph.c:
Fix notSimilar(), patch #332 by BaЕќto.

2020-06-28 Erik Petrich <epetrich AT ivorytower.norman.ok.us>

* sdas/asxxsrc/asdbg.c (BaseFileName): Possible fix for bug #3068

2020-06-25 Philipp Klaus Krause <pkk AT spth.de>

* src/z80/peep.c,
src/z80/main.c:
instructionSize peephole support for gbz80, patch by BaЕќto.

2020-06-24 Philipp Klaus Krause <pkk AT spth.de>

* src/z80/gen.c,
support/regression/tests/bug-3066.c:
Fix bug #3066.
* src/pdk/gen.c,
support/regression/tests/bug-3065.c:
Fix bug #3065.

2020-06-24 Philipp Klaus Krause <pkk AT spth.de>

* src/z80/peep.c,
src/z80/peeph-gbz80.def:
User avatar
idxi
 
Posts: 179
Joined: Mon, 03.07.2017 16:54:54

Postby TS-Labs » Tue, 07.07.2020 12:10:06

idxi wrote:Между тем SDCC все улучшается и улучшается в плане z80...

Спасибо, что не забыл засунуть простыню под спойлер.
Какое ублюдство этот сдцц был, такое и остался.
Code: Select all
__sfr __at 0xFE BORDER;
const u8 BLACK = 0;
...
BORDER = BLACK;

ld hl, addr_of_BLACK
ld b,(hl)
ld a, b
out (#FE), a
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Tue, 07.07.2020 13:00:10

TS-Labs wrote:Какое ублюдство этот сдцц был, такое и остался.

Чистый ASM наше всё.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Tue, 07.07.2020 14:52:28

В общем, блядское китайское говноподелие (ожидаемо).
Нельзя опрашивать статус, если не пришел инт. Ибо. Ибо, блять сам факт опрашивания до инта приводит к тому, что статус в реге никогда не появляется.
Есть острое желание выбросить это дерьмо в помойку.
В архивчике, версия теста на сях.
Attachments
ch376.zip
(19.15 KiB) Downloaded 201 times
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Tue, 07.07.2020 15:51:48

Что ж теперь говорить после такого вердикта... Так-тока, для себя если чуть-чуть.
Прикрутили, по-ходу.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Tue, 07.07.2020 16:24:57

Ну, или обходиться как с тухлым яйцом, аккуратно, чтоб не разбить. Обложить точно намерянными таймаутами, чуть что - ресет. И жить в ожидании бесконечных багов.
И это я еще до File System layer-а не дошел.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Tue, 07.07.2020 20:16:20

Тестилку запустить так и не удалось: SPG при вынутой SD не запускается, при вставленной - не стартует модуль; TRD - Бут не стартует при вынутой SD. Как-то так.
Какое-то другое подключение надо изобретать.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby TS-Labs » Tue, 07.07.2020 21:21:02

Я по ком-порту запускал ТРД.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mor-Da » Tue, 07.07.2020 21:25:32

Понял уж.
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

Postby Mor-Da » Wed, 08.07.2020 15:10:05

TS-Labs wrote:Нельзя опрашивать статус, если не пришел инт.

SPI interface mode: You can set the SDO pin of CH376 to use as the INT# pin when the chip select (SCS) is invalid by sending the SET_SDO_INT(0BH) command; it is not recommended to use the hardware SPI interface;
User avatar
Mor-Da
 
Posts: 367
Joined: Fri, 12.02.2016 07:20:43
LOCATION: Воткинск (родина П.И.Чайковского)

PreviousNext

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

x