Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Current »

Overview

The main goal of the Steering Interface is to detect steering events such as when the horn is pressed or the turn signal is moved.

For digital input, this is accomplished by:

  1. Initializing all the pins with an interrupt in steering_digital_input

  2. Triggering the interrupt if a certain button is pressed (eg horn) which raises an event

  3. Processing the event and sending the respective CAN message in steering_can

For analog input, this is accomplished by:

  1. Using adc_periodic_reader which uses soft_timer and interrupts to periodically check the voltage

  2. Checking the voltages and raising the correct event using steering_control_stalk

  3. Processing the event and sending the respective CAN message in steering_can

Modules

Modules for this board:

steering_can

steering_can_process_event() //Sends CAN messages

steering_digital_input()

steering_digital_input_init() // sets up interrupts for buttons and generates events

Operation

processes events and sends steering CAN messages.

steering_control_stalk()

control_stalk_init() // sets up analog_readers

Operation

Uses an analog reader to read voltages, and converts them to signal events

adc_periodic_reader()

adc_periodic_reader_init()

adc_periodic_reader_set_up_channel(reader_id,adc_settings)//sets up the channels
//so an interrupt will be triggered periodically and will call the callback function

adc_periodic_reader_start(reader_id) //starts the soft timer

adc_periodic_reader_stop(reader_id)

accepts a callback, repeatedly calls that callback with new data as it gets new data.

Events

Event

Source

Destination

Data

Description

STEERING_DIGITAL_INPUT_EVENT_HORN

steering_digital_input

steering_can

1: pressed

0: released

STEERING_DIGITAL_INPUT_EVENT_HIGH_BEAM_FORWARD

steering_digital_input

steering_can

1: ON

0: OFF

STEERING_DIGITAL_INPUT_EVENT_HIGH_BEAM_REAR

steering_digital_input

steering_can

1: ON

0: OFF

STEERING_DIGITAL_INPUT_EVENT_REGEN_BRAKE_TOGGLE

steering_digital_input

steering_can

none

STEERING_DIGITAL_INPUT_EVENT_CC

steering_digital_input

steering_can,

cruise_control_stalk

1: ON

0: OFF

STEERING_SIGNAL_STALK_EVENT_LEFT

signal_stalk

steering_can

none

STEERING_SIGNAL_STALK_EVENT_RIGHT

signal_stalk

steering_can

none

STEERING_SIGNAL_STALK_EVENT_OFF

signal_stalk

steering_can

none

STEERING_CRUISE_CONTROL_EVENT_INCREASE_SPEED

cruise_control_stalk

steering_can

none

STEERING_CRUISE_CONTROL_EVENT_DECREASE_SPEED

cruise_control_stalk

steering_can

none

STEERING_CRUISE_CONTROL_EVENT_BRAKE_PRESSED

steering_can

cruise_control_stalk

Old Car GPIO INPUTS

Input

GPIO Address

Description

STEERING_DIGITAL_INPUT_HORN

PB1

????

STEERING_DIGITAL_INPUT_LANE_ASSIST

PA6

GPIO top button

STEERING_DIGITAL_INPUT_HIGH_BEAM_FORWARD

PA7

GPIO pull above back

STEERING_DIGITAL_INPUT_HIGH_BEAM_REAR

PB0

GPIO push above forward

STEERING_DIGITAL_INPUT_REGEN_BRAKE_TOGGLE

PA4

GPIO bottom button

STEERING_DIGITAL_INPUT_CC_ON_OFF

PA5

GPIO pull bottom back

STEERING_DIGITAL_DIGITAL_INPUT_CC_INCREASE_SPEED

STEERING_DIGITAL_DIGITAL_INPUT_CC_DECREASE_SPEED

PA2

ADC: pull bottom up/down

nothing?

PA1

????

the distance thingy…

PA3

This is an ADC

sick

PA0

this is an ADC

GPIO Inputs

Input

GPIO Address

Description

STEERING_DIGITAL_INPUT_HORN

PB1

STEERING_DIGITAL_INPUT_LANE_ASSIST

PA6

STEERING_DIGITAL_INPUT_HIGH_BEAM_FORWARD

PA7

STEERING_DIGITAL_INPUT_HIGH_BEAM_REAR

PB0

STEERING_DIGITAL_INPUT_REGEN_BRAKE_TOGGLE

PA4

STEERING_DIGITAL_INPUT_CC_ON_OFF

PA5

STEERING_DIGITAL_DIGITAL_INPUT_CC_INCREASE_SPEED

PA2

STEERING_DIGITAL_DIGITAL_INPUT_CC_DECREASE_SPEED

PA1

STEERING_DIGITAL_DIGITAL_INPUT_TURN_SIGNAL_STALK

PA3

This is an ADC

Outgoing CAN Messages

CAN Message

Exported Enums:

CAN_TRANSMIT_LIGHTS

u8 EELightType, u8 EELightState

CAN_TRANSMIT_HORN

u8 EEHornState

CAN_TRANSMIT_CRUISE_COMMAND

u8 cruise_command

Other Concerns

  • cruise control being enabled at the startup

    • add a check at startup

  • cruise control pin being noisy

    • will probably debounce? or some thing like that…

  • No labels