AddVantage PPG

User Guides

  • Getting Started
    • Prerequisites
      • Toolchain
      • Build Tools
      • Hardware
    • Building the Firmware
      • Quick Build
      • Build Options
    • Flashing
      • Using the Flash Script
      • Manual J-Link Commands
    • Serial Console
      • Boot Output
      • Password
    • First Run Checklist
    • Troubleshooting
      • No Serial Output
      • Boot Loops
      • J-Link Connection Failed
    • Next Steps
  • CAN Protocol Reference
    • Overview
    • Extracting PGN from CAN ID
    • Supported PGNs
      • EEC1 (61444) - Electronic Engine Controller 1
      • ET1 (65262) - Engine Temperature 1
      • LFE (65266) - Fuel Economy
      • ETC2 (61445) - Electronic Transmission Controller 2
    • Error Values
    • CAN Hardware Configuration
      • Filter Configuration
    • Wiring
    • Debugging with PCAN
    • Message Timing
  • Flash Memory Layout
    • Memory Map Overview
      • Full Flash Map (with DFU Bootloader)
      • Legacy Map (without Bootloader)
    • DFU Bootloader Memory Layout
      • Bootloader Region (0x0000 - 0x2FFF)
      • Application Header (0x3000 - 0x30FF)
      • Application Code Region (0x3100 - 0x1EFFF)
    • RAM Layout
      • DFU Magic Value
    • Configuration Storage (0x1F000)
      • Reserved Area (0-99)
      • Configuration Parameters (100-127)
      • Temperature Correction Map (128-227)
      • Legacy Temperature Map (228-239)
      • Differential Pressure Correction (240-255)
      • Fuel Maps (256-1279)
        • Fuel Map 1 (256-511)
        • Fuel Map 2-4 (512-767, 768-1023, 1024-1279)
      • Manifold Pressure Correction (768-783)
      • Telemetry Persistence (1280-3839)
    • Flash Programming API
      • Reading Configuration
      • Writing Configuration
      • Factory Reset
    • Flash Wear Considerations
    • Backup and Restore
    • Address Constants (flash.h)
  • Telemetry Format
    • Overview
    • Boot Banner
    • Boot Telemetry
      • Field Breakdown
      • Parsing Example (Python)
    • Regular Telemetry
      • Core Fields
      • Extended Fields (j onwards)
      • Parsing Example (Python)
    • Error Codes
    • Temperature Offset
    • Capturing Telemetry
      • Using uart_capture.py
      • Using screen (manual)
      • Using Python serial
    • VT100 Display Mode
    • Data Logging Best Practices
      • Example Logger
  • Test Harness Guide
    • Overview
    • Quick Start
    • Command Line Options
    • Test Sequence
      • 1. Flash Firmware
      • 2. Wait for Boot
      • 3. Capture UART Output
      • 4. Parse Version
      • 5. Parse Boot Telemetry
      • 6. Boot Loop Detection
      • 7. Password Prompt
      • 8. CAN Validation (Optional)
    • Test Results Summary
    • Troubleshooting
      • No Serial Output
      • Version Mismatch
      • Boot Loop Detected
      • No Password Prompt
      • CAN Validation Failures
    • Automated CI/CD
    • DFU Test GUI
      • Launch
      • Features
      • Workflow: Update Firmware from Application Mode
    • Real-time CAN Viewer
    • Adding Custom Tests
    • Hardware Setup
      • Required Connections
      • J-Link Serial
      • Auto-Detect Serial Port

API Reference

  • Firmware API Reference
    • Core Modules
      • ProcessorExpert.c - Main Application
      • Events.c - Calculation Engine
    • CAN Bus Interface
      • can.c - J1939 Protocol Handler
        • init_can()
        • read_can()
        • vars_sync_can()
    • Storage and I/O
      • flash.c - EEPROM Emulation
        • flash_default()
        • flash_erase()
        • flash_get()
        • flash_get_16()
        • flash_init()
        • flash_put()
        • flash_put_16()
        • flash_read()
        • flash_wait()
        • flash_write()
        • flash_written()
        • flash_set_data()
        • flash_commit()
      • serial_io.c - UART Interface
        • elapsed_ms()
        • print_Telemetry_Boot()
        • print_Telemetry_old()
        • print_Telemetry()
        • print_debug_data()
        • print_config_data()
        • get_char_no_wait()
        • print()
        • print_adc()
        • print_chr()
        • print_data()
        • print_en()
        • print_en2()
        • print_flt()
        • print_headers()
        • print_hex()
        • print_int()
        • print_word()
        • reset_timer()
        • print_reset_source()
        • sleep()
        • wait_password()
    • Hardware Control
      • solenoids.c - Actuator Control
        • get_isolator()
        • init_power()
        • init_reducer()
        • init_new_tr()
        • injector_set()
        • isolator_set()
        • power_set()
        • reducer_set()
        • init_ppg()
        • ppg1_set_period_us()
        • ppg2_set_period_us()
        • ppg_set_period_us()
        • ppg1_set_duty_us()
        • ppg2_set_duty_us()
        • ppg_set_duty_us()
      • adc.c - Analog Input Processing
        • init_adc()
        • check_adc()
        • get_adc_fsd()
        • measure_adc()
        • read_adc()
    • Header Files
      • variables.h - Shared Variables API
        • true
        • false
        • VAR_DEF
        • VAR_DEF2
        • GET_VAR_ID
        • GET_VAR_BITS
        • GET_VAR_TYPE
        • GET_VAR_FLAGS
        • VAR_FLAG_NONE
        • VAR_FLAG_VOLATILE
        • VAR_FLAG_PERSIST
        • VAR_FLAG_READONLY
        • MAX_VARIABLES
        • debug_variables
      • flash.h - Flash Memory Constants
        • FLASH_BASE
        • FLASH_SIZE
        • FLASH_CUTOFF_LSB
        • FLASH_CUTOFF_MSB
        • FLASH_COMMS_ADDR
        • FLASH_GAS_ADDR
        • FLASH_LAMBDA_ENABLE
        • FLASH_LAMBDA_AUTH
        • FLASH_LAMBDA_TIME
        • FLASH_LAMBDA_SOURCE
        • FLASH_AFR_TARGET
        • FLASH_AFR_1
        • FLASH_AFR_2
        • HALFDUTYTHRESH
        • OPERATIONMODEADDR
        • OFFSET_EEC_LSB
        • OFFSET_EEC_MSB
        • SOFTWARE_REV_MAJOR
        • DUTYMULTA
        • DUTYMULTB
        • DUTYMULTC
        • DUTYMULTD
        • DUTYMULTE
        • DUTYMULTF
        • DUTYMULTG
        • DUTYMULTH
        • DUTYMULTI
        • DUTYMULTJ
        • DUTYMULTK
        • DUTYMULTL
        • DUTYMULTM
        • DUTYMULTN
        • INJECTORDEADTIME
        • INJECTORBASEMULT
        • RPM_OFFSET
        • PROFILE_SELECT
        • TELEMETRY_PERSIST_START
        • TELEMETRY_PERSIST_END
        • TELEMETRY_PERSIST_SIZE
        • ENABLE_INTERRUPTS
        • DISABLE_INTERRUPTS
    • Generated Code
  • Test Tools API Reference
    • Test Harness
      • test_harness - Main Test Orchestrator
    • Flash Utilities
      • flash - J-Link Programming
        • find_jlink()
        • flash_firmware()
        • reset_target()
    • UART Capture
      • uart_capture - Telemetry Parser
    • CAN Bus Tools
      • can_capture - J1939 Message Capture
      • can_validate - CAN vs ECU Validation
      • can_viewer - Real-time CAN GUI
    • Release Automation
      • release - HIL-Gated Release
        • run_command()
        • validate_version()
        • get_project_root()
        • build_firmware()
        • run_hil_test()
        • run_dfu_test()
        • create_tag_and_push()
        • main()

Additional Info

  • Known Issues
    • Firmware Issues
      • WDOG-001: Watchdog Must Be Disabled Immediately
      • CAN-001: Oil Temperature Not Reliable from Simulator
      • FLASH-001: Limited Erase Cycles
    • Test Harness Issues
      • TH-001: J-Link GUI Picker Interrupts Automation
      • TH-002: Serial Port Auto-Detection May Choose Wrong Port
      • TH-003: PCAN Library Path on macOS
    • Build Issues
      • BUILD-001: CodeWarrior Legacy Build Deprecated
      • BUILD-002: ARM Toolchain Version Sensitivity
    • Documentation Issues
      • DOC-001: Some C Functions Lack Doxygen Comments
    • Reporting New Issues
  • Changelog
    • [3.4.0] - 08/01/2026
      • Added
      • Changed
    • [3.2.7] - 07/01/2026
      • Fixed
      • Added
      • Changed
    • [3.2.6] - 2025
      • Added
      • Fixed
    • [3.2.5] - 2023
      • Added
      • Changed
    • [3.2.0] - 2023
      • Added
      • Changed
    • [3.1.x] - 2022
      • Added
      • Fixed
    • [3.0.0] - 2022
      • Added
    • Version Numbering
    • Upgrade Notes
      • From 3.2.6 to 3.2.7
      • From 3.1.x to 3.2.x
      • From 3.0.x to 3.1.x
AddVantage PPG
  • Search


© Copyright 2024, AddVantage.