История изменений
Исправление lenin386, (текущая версия) :
Ещё раз тебе повторяю, товарищ. Ты из избалован _современными_ 8-и битками, которые на несколько порядков во-первых, быстрее старых 8-и битников. Во-вторых, то, что тебе кажется само собой разумееся, на спектрумах не было.
> Z80 на 3.5MHz легко выдаст 100kbit SPI bit-bang, если не больше.
Хех, ну, для начала, куда он это сделает ? Если ты думаешь, на синклере распаяны GPIO, то толжен тебя разочаровать. Но допустим, они там есть. а теперь, Давай посчитаем. Cколько на зеднике жрёт цикл, кажущийся тебе элементарным.
; for (i = 0; i < 8; i++)
LD DE,0
?0001:
LD BC,32776
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0000 ; это я намеренно не комментирую
?0002:
; {
;
; if (data & 0x80)
BIT 7,(IX-2) ; 20 тактов
PUSH DE ; 11 тактов
JR Z,?0005 ; 12/7 тактов
?0004:
; output (1);
LD DE,1 ; 10 тактов
JR ?0007 ; 12/7 тактов
; else
?0005:
; output (0);
LD DE,0 ; 10 тактов
?0007:
CALL output ; пусть будет 12 тактов, хотя на самом деле нет
POP DE ; 11 тактов
?0006:
;
; data <<= 1;
SLA (IX-2) ; 23 такта
INC DE ; 6 тактов
; }
; }
JR ?0001 ; 12/7 тактов
?0000:
Итого, как ты видишь (если видишь конечно), что один только разбор байта на биты и отправка битов порт стОит зеднику ~100+++ тактов на один _бит. Это 35 килобит/с на 3.5 Mhz. А Здесь нет главного цикла, здесь нет цикла опроса готовности. Итого, смело дели эту цифру ещё на 10. А период такта SPI у нас какой ? 0.05ms ? Хе-хе-хе. Никаких таймаутов у него не будет, теоретик. Вот тебе и вся мощщ зедника, по примерниным прикидкам 350 байт/в секунду. Какое железо будет столько ждать ?
> Это, на-минуточку, в 3 раза быстрее, чем 33600 на которых полмира сидело в инторнетах и не жужжало.
Полмира сидела, а синклер мог 19200 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог. Вообще.
Исправление lenin386, :
Ещё раз тебе повторяю, товарищ. Ты из избалован _современными_ 8-и битками, которые на несколько порядков во-первых, быстрее старых 8-и битников. Во-вторых, то, что тебе кажется само собой разумееся, на спектрумах не было.
> Z80 на 3.5MHz легко выдаст 100kbit SPI bit-bang, если не больше.
Хех, ну, для начала, куда он это сделает ? Если ты думаешь, на синклере распаяны GPIO, то толжен тебя разочаровать. Но допустим, они там есть. а теперь, Давай посчитаем. Cколько на зеднике жрёт цикл, кажущийся тебе элементарным.
; for (i = 0; i < 8; i++)
LD DE,0
?0001:
LD BC,32776
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0000 ; это я намеренно не комментирую
?0002:
; {
;
; if (data & 0x80)
BIT 7,(IX-2) ; 20 тактов
PUSH DE ; 11 тактов
JR Z,?0005 ; 12/7 тактов
?0004:
; output (1);
LD DE,1 ; 10 тактов
JR ?0007 ; 12/7 тактов
; else
?0005:
; output (0);
LD DE,0 ; 10 тактов
?0007:
CALL output ; пусть будет 12 тактов, хотя на самом деле нет
POP DE ; 11 тактов
?0006:
;
; data <<= 1;
SLA (IX-2) ; 23 такта
INC DE ; 6 тактов
; }
; }
JR ?0001 ; 12/7 тактов
?0000:
Итого, как ты видишь (если видишь конечно), что один только разбор байта на биты и отправка битов порт стОит зеднику ~100+++ тактов на один _бит. Это 35 килобит/с на 3.5 Mhz. А Здесь нет главного цикла, здесь нет цикла опроса готовности. Итого, смело дели эту цифру ещё на 10. А период такта SPI у нас какой ? 0.05ms ? Хе-хе-хе. Никаких таймаутов у него не будет, теоретик. Вот тебе и вся мощщ зедника, по примерниным прикидкам 350 байт/в секунду. Какое железо будет cстолько ждать ?
> Это, на-минуточку, в 3 раза быстрее, чем 33600 на которых полмира сидело в инторнетах и не жужжало.
Полмира сидела, а синклер мог 19200 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог. Вообще.
Исправление lenin386, :
Ещё раз тебе повторяю, товарищ. Ты из избалован _современными_ 8-и битками, которые на несколько порядков во-первых, быстрее старых 8-и битников. Во-вторых, то, что тебе кажется само собой разумееся, на спектрумах не было.
> Z80 на 3.5MHz легко выдаст 100kbit SPI bit-bang, если не больше.
Хех, ну, для начала, куда он это сделает ? Если ты думаешь, на синклере распаяны GPIO, то толжен тебя разочаровать. Но допустим, они там есть. а теперь, Давай посчитаем. Cколько на зеднике жрёт цикл, кажущийся тебе элементарным.
; for (i = 0; i < 8; i++)
LD DE,0
?0001:
LD BC,32776
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0000 ; это я намеренно не комментирую
?0002:
; {
;
; if (data & 0x80)
BIT 7,(IX-2) ; 20 тактов
PUSH DE ; 11 тактов
JR Z,?0005 ; 12/7 тактов
?0004:
; output (1);
LD DE,1 ; 10 тактов
JR ?0007 ; 12/7 тактов
; else
?0005:
; output (0);
LD DE,0 ; 10 тактов
?0007:
CALL output ; пусть будет 12 тактов, хотя на самом деле нет
POP DE ; 11 тактов
?0006:
;
; data <<= 1;
SLA (IX-2) ; 23 такта
INC DE ; 6 тактов
; }
; }
JR ?0001 ; 12/7 тактов
?0000:
Итого, как ты видишь (если видишь конечно), что один только разбор байта на биты и отправка битов порт стОит зеднику ~100+++ тактов на один _бит. Это 35 килобит/с на 3.5 Mhz. А Здесь нет главного цикла, здесь нет цикла опроса готовности. Итого, смело дели эту цифру ещё на 10. А период такта SPI у нас какой ? 0.05ms ? Хе-хе-хе. Никаких таймаутов у него не будет. Вот тебе и вся мощщ зедника, по примерниным прикидкам 350 байт/в секунду. Какое железо будет cстолько ждать ?
> Это, на-минуточку, в 3 раза быстрее, чем 33600 на которых полмира сидело в инторнетах и не жужжало.
Полмира сидела, а синклер мог 19200 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог. Вообще.
Исправление lenin386, :
Ещё раз тебе повторяю, товарищ. Ты из избалован _современными_ 8-и битками, которые на несколько порядков во-первых, быстрее старых 8-и битников. Во-вторых, то, что тебе кажется само собой разумееся, на спектрумах не было.
> Z80 на 3.5MHz легко выдаст 100kbit SPI bit-bang, если не больше.
Хех, ну, для начала, куда он это сделает ? Если ты думаешь, на синклере распаяны GPIO, то толжен тебя разочаровать. Но допустим, они там есть. а теперь, Давай посчитаем. Cколько на зеднике жрёт цикл, кажущийся тебе элементарным.
; for (i = 0; i < 8; i++)
LD DE,0
?0001:
LD BC,32776
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0000 ; это я намеренно не комментирую
?0002:
; {
;
; if (data & 0x80)
BIT 7,(IX-2) ; 20 тактов
PUSH DE ; 11 тактов
JR Z,?0005 ; 12/7 тактов
?0004:
; output (1);
LD DE,1 ; 10 тактов
JR ?0007 ; 12/7 тактов
; else
?0005:
; output (0);
LD DE,0 ; 10 тактов
?0007:
CALL output ; пусть будет 12 тактов, хотя на самом деле нет
POP DE ; 11 тактов
?0006:
;
; data <<= 1;
SLA (IX-2) ; 23 такта
INC DE ; 6 тактов
; }
; }
JR ?0001 ; 12/7 тактов
?0000:
Итого, как ты видишь (если видишь конечно), что один только разбор байта на биты и отправка битов порт стОит зеднику ~100+++ тактов на один _бит. Это 35 килобит/с на 3.5 Mhz. А Здесь нет главного цикла, здесь нет цикла опроса готовности. Итого, смело дели эту цифру ещё на 10. А период такта SPI у нас какой ? 0.05ms ? Хе-хе-хе. Никаких таймаутов у него не будет. Вот тебе и вся мощщ зедника, по примерниным прикидкам 350 байт/в секунду. Какое железо будет cстолько ждать ?
> Это, на-минуточку, в 3 раза быстрее, чем 33600 на которых полмира сидело в инторнетах и не жужжало.
Полмира сидела, а синклер мог 19200 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог.
Исправление lenin386, :
Ещё раз тебе повторяю, товарищ. Ты из избалован _современными_ 8-и битками, которые на несколько порядков во-первых, быстрее старых 8-и битников. Во-вторых, то, что тебе кажется само собой разумееся, на спектрумах не было.
> Z80 на 3.5MHz легко выдаст 100kbit SPI bit-bang, если не больше.
Хех, ну, для начала, куда он это сделает ? Если ты думаешь, на синклере распаяны GPIO, то толжен тебя разочаровать. Но допустим, они там есть. а теперь, Давай посчитаем. Cколько на зеднике жрёт цикл, кажущийся тебе элементарным.
; for (i = 0; i < 8; i++)
LD DE,0
?0001:
LD BC,32776
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0000 ; это я намеренно не комментирую
?0002:
; {
;
; if (data & 0x80)
BIT 7,(IX-2) ; 20 тактов
PUSH DE ; 11 тактов
JR Z,?0005 ; 12/7 тактов
?0004:
; output (1);
LD DE,1 ; 10 тактов
JR ?0007 ; 12/7 тактов
; else
?0005:
; output (0);
LD DE,0 ; 10 тактов
?0007:
CALL output ; пусть будет 12 тактов, хотя на самом деле нет
POP DE ; 11 тактов
?0006:
;
; data <<= 1;
SLA (IX-2) ; 23 такта
INC DE ; 6 тактов
; }
; }
JR ?0001 ; 12/7 тактов
?0000:
Итого, как ты видишь (если видишь конечно), что один только разбор байта на биты и отправка битов порт стОит зеднику ~100+++ тактов на один _бит. Это 35 килобит/с на 3.5 Mhz. А Здесь нет главного цикла, здесь нет цикла опроса готовности. Итого, смело дели эту цифру ещё на 10. А период такта SPI у нас какой ? 0.05ms ? Даааа ? Хе-хе-хе. Никаких таймаутов у него не будет. Вот тебе и вся мощщ зедника, по примерниным прикидкам 350 байт/в секунду. Какое железо будет cстолько ждать ?
> Это, на-минуточку, в 3 раза быстрее, чем 33600 на которых полмира сидело в инторнетах и не жужжало.
Полмира сидела, а синклер мог 19200 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог.
Исходная версия lenin386, :
Ещё раз тебе повторяю, товарищ. Ты из избалован _современными_ 8-и битками, которые на несколько порядков во-первых, быстрее старых 8-и битников. Во-вторых, то, что тебе кажется само собой разумееся, на спектрумах не было.
> Z80 на 3.5MHz легко выдаст 100kbit SPI bit-bang, если не больше.
Хех, ну, для начала, куда он это сделает ? Если ты думаешь, на синклере распаяны GPIO, то толжен тебя разочаровать. Но допустим, они там есть. а теперь, Давай посчитаем. Cколько на зеднике жрёт цикл, кажущийся тебе элементарным.
; for (i = 0; i < 8; i++)
LD DE,0
?0001:
LD BC,32776
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0000 ; это я намеренно не комментирую
?0002:
; {
;
; if (data & 0x80)
BIT 7,(IX-2) ; 20 тактов
PUSH DE ; 11 тактов
JR Z,?0005 ; 12/7 тактов
?0004:
; output (1);
LD DE,1 ; 10 тактов
JR ?0007 ; 12/7 тактов
; else
?0005:
; output (0);
LD DE,0 ; 10 тактов
?0007:
CALL output ; пусть будет 12 тактов, хотя на самом деле нет
POP DE ; 11 тактов
?0006:
;
; data <<= 1;
SLA (IX-2) ; 23 такта
INC DE ; 6 тактов
; }
; }
JR ?0001 ; 12/7 тактов
?0000:
Итого, как ты видишь (если видишь конечно), что один только разбор байта на биты и отправка битов порт стОит зеднику ~100+++ тактов на один _бит. Это 35 килобит/с на 3.5 Mhz. А Здесь нет главного цикла, здесь нет цикла опроса готовности. Итого, смело дели эту цифру ещё на 10. А период у нас какой ? 0.05ms ? Хе-хе-хе. Никаких таймаутов у него не будет. Вот тебе и вся мощщ зедника, по примерниным прикидкам 350 байт/в секунду. Какое железо будет cстолько ждать ?
> Это, на-минуточку, в 3 раза быстрее, чем 33600 на которых полмира сидело в инторнетах и не жужжало.
Полмира сидела, а синклер мог 19200 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог.