LINUX.ORG.RU

История изменений

Исправление 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 максимум на очень высоко оптимизированном коде (на самом деле, нет). При этом, ты даже текст скороллировать не мог.