Makefile addition for GRUVIN9X PCB PORTH real-time diagnostics.

$ make ... PORTH_TIMING=YES

See code comments for details. This is used to analyse real-world timing of
mixer interrupt, setupPulses and PPM or DSM=SERIAL or DSM2=PPM data output
streams.

NOTE: Not compatible to SOUND=YES (SOMO14)
This commit is contained in:
gruvin@gmail.com
2012-10-31 23:40:21 +00:00
parent 21f3e4395a
commit c71ee46e5f
4 changed files with 46 additions and 3 deletions
+17 -2
View File
@@ -198,6 +198,17 @@ XCURVES = YES
# Values = YES, NO
GVARS = NO
#------- TIMING DEBUG OPTIONS ------------------------
# Enable debug code to output signals on PORTH for logic analyser timing analysis
# G9X V4 board only. **WARNING** Not compatible with TX_CADDY=YES or SOMO14 (VOICE=YES)
#
# PORTH:7 --> Transistion LOW to HIGH = start of setupPulses(). Transistion HIGH to LOW = end of setupPulses().
# PORTH:6 --> LOW->HIGH = start of mixer calcs. HIGH->LOW, end of mixer calcs.
#
# Values = YES, NO
PORTH_TIMING=YES
#------- END BUILD OPTIONS ---------------------------
# Define programs and commands.
@@ -424,8 +435,8 @@ ifeq ($(DEBUG), YES)
CPPDEFS += -DDEBUG
endif
ifeq ($(EEPROM_PROGRESS_BAR), YES)
CPPDEFS += -DEEPROM_PROGRESS_BAR
ifeq ($(PORTH_TIMING), YES)
CPPDEFS += -DPORTH_TIMING
endif
ifeq ($(SDCARD), YES)
@@ -528,6 +539,10 @@ ifeq ($(PCB), GRUVIN9X)
ifeq ($(EXTRA_ROTARY_ENCODERS), YES)
CPPDEFS += -DEXTRA_ROTARY_ENCODERS
endif
ifeq ($(EEPROM_PROGRESS_BAR), YES)
CPPDEFS += -DEEPROM_PROGRESS_BAR
endif
endif
ifeq ($(PCB), STD128)
+9 -1
View File
@@ -44,7 +44,15 @@ inline void board_init()
DDRE = 0b00001010; PORTE = 0b11110100; // 7:PPM_IN, 6: RENC1_B, 5:RENC1_A, 4:USB_DNEG, 3:BUZZER, 2:USB_DPOS, 1:TELEM_TX, 0:TELEM_RX(pull-up off)
DDRF = 0x00; PORTF = 0x00; // 7-4:JTAG, 3:ADC_REF_1.2V input, 2-0:ADC_SPARE_2-0
DDRG = 0b00010000; PORTG = 0xff; // 7-6:N/A, 5:GearSW, 4: Sim_Ctrl[out], 3:IDL1_Sw, 2:TCut_Sw, 1:RF_Power[in], 0: RudDr_Sw
DDRH = 0b00110000; PORTH = 0b11011111; // 7:0 Spare port [6:SOMO14D-BUSY 5:SOMO14D-DATA 4:SOMO14D-CLK] [2:VIB_OPTION -- setting to input for now]
#ifdef PORTH_TIMING
DDRH = 0b11110000; PORTH = 0b11011111; // PORTH:7-6 enabled for timing analysis output ... see below ...
#else
DDRH = 0b10110000; PORTH = 0b11011111; // [7:0 DSM/PPM TX-caddy control. 1=PPM, 0=DSM ]
// [6:SOMO14D-BUSY 5:SOMO14D-DATA 4:SOMO14D-CLK] [2:VIB_OPTION -- setting to input for now]
// [1:TxD 0:RxD Spare serial port]
#endif
DDRJ = 0x00; PORTJ = 0xff; // 7-0:Trim switch inputs
DDRK = 0x00; PORTK = 0x00; // anain. No pull-ups!
#ifdef REV0
+10
View File
@@ -2996,6 +2996,11 @@ uint16_t getTmr16KHz()
#if defined (PCBGRUVIN9X)
ISR(TIMER5_COMPA_vect, ISR_NOBLOCK) // mixer interrupt
{
#ifdef PORTH_TIMING
PORTH |= 0x40; // PORTH:6 LOW->HIGH signals start of mixer interrupt
#endif
cli();
TIMSK5 &= ~(1<<OCIE5A); //stop reentrance
OCR5A = 0x7d * 40; /* 20ms */
@@ -3027,6 +3032,11 @@ ISR(TIMER5_COMPA_vect, ISR_NOBLOCK) // mixer interrupt
cli();
TIMSK5 |= (1<<OCIE5A); //stop reentrance
sei();
#ifdef PORTH_TIMING
PORTH &= ~0x40; // PORTH:6 HIGH->LOW signals end of mixer interrupt
#endif
}
#endif
+10
View File
@@ -729,6 +729,11 @@ static void setupPulsesPiccoZ(uint8_t chn)
void setupPulses()
{
uint8_t required_protocol = g_model.protocol;
#ifdef PORTH_TIMING
PORTH |= 0x80; // PORTH:7 LOW->HIGH signals start of setupPulses()
#endif
if (s_pulses_paused)
required_protocol = PROTO_NONE;
@@ -884,6 +889,11 @@ void setupPulses()
// if PPM16, PPM16 pulses are set up automatically within the interrupts
break;
}
#ifdef PORTH_TIMING
PORTH &= ~0x80; // PORTH:7 HIGH->LOW signals end of setupPulses()
#endif
}
#ifndef SIMU