From: Leo C Date: Sun, 23 Sep 2018 17:44:22 +0000 (+0200) Subject: cpu_freq: extra timing loop WIP X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/commitdiff_plain/f6154a3944b775a6d6846f132b184d94b44bc204 cpu_freq: extra timing loop WIP --- diff --git a/avr/cmd_cpu.c b/avr/cmd_cpu.c index 6f50a2a..61e3ec3 100644 --- a/avr/cmd_cpu.c +++ b/avr/cmd_cpu.c @@ -32,26 +32,36 @@ static void test_delay(uint32_t count) while (get_timer(ts) <= count); } -static int32_t z80_measure_phi(uint8_t cycles, bool input_clk, uint16_t wait_ms) +static int32_t z80_measure_phi(uint8_t cycles, uint16_t wait_ms) { uint16_t ref_stop; uint16_t ref_ovfl; uint32_t x_freq; + uint8_t eimsk_save,eicrb_save; + ATOMIC_BLOCK(ATOMIC_FORCEON) { + /* Save state and disable INT6 */ + eimsk_save = EIMSK; + EIMSK &= ~_BV(INT6); + /* Save state and set INT6 for falling edge */ + eicrb_save = EICRB; + EICRB = (eicrb_save & ~(0b11 << ISC60)) | (0b10 << ISC60); + } + PRR1 &= ~_BV(PRTIM3); TCCR3A = 0; TCCR3B = 0b000<