RF-24G Example code question - 8MHz on 16F88 = 500ns/instr?

EDIT: Actually, nevermind - I misread the diagram on page 13 of the 16F628 datasheet and mistook CLKout for OSC1, but I do have a question. If I understand correctly, in shockburst mode, the timing requirements are all “At least ___ns”. So the same PIC running at 4MHz should also work with no problems?

Original text:

I have a question about the example code for the RF-24G transmitter. As long as the execution pipeline is filled, the PIC16 architecture manages 1 instruction / cycle (if I understand correctly) At 8MHz, a clock period is only 125ns. In which case the following code:

	BTFSS config_setup+2,7          ;RX_DATA = config_setup.23
	BCF   PORTA,1
	BTFSC config_setup+2,7
	BSF   PORTA,1
	BSF   PORTA,4                   ;RX_CLK1 = 1
	BCF   PORTA,4                   ;RX_CLK1 = 0

doesn’t guarantee 500ns between data and clock, nor does it guarantee 500ns of minimum clock length (Thmin on page 22). Even if we take into account that jumps take 2 cycles, the maximum delay between our writing to the data port and toggling the clock is < 500ns. I’m having some trouble getting my RF-24G to work, an I wonder if this is a problem - or I’m missing something big.

At 8MHz the clock period is 125ns, yes. But PICs use 4 clocks per instruction cycle, so it winds up being 500ns to execute one instruction cycle.

If you take the clock frequency and divide by 4 you have the instruction frequency. Take the inverse of that and you have the instruction period.

Note that some instructions, such as GOTO, take more than one instruction cycle to complete.

Mike