Commit Graph

195 Commits

Author SHA1 Message Date
Andrey G e14fa4b189 Tle8888 small update (#1908)
* TLE8888: add support MR switching from SW

Main Relay has limitation - it is always active while KEY=1. When
KEY=0 MR can be switched on from SW.

* TLE8888: support reading of KEY and WAKE inputs

* Rusefi enums: add new TLE8888 pins
2020-11-01 22:19:55 -05:00
Andrey G 88e830d635 Tle8888 big update 1 (#1892)
* smart gpio: fix tle8888 direct pin mapping for MRE

* MRE: use TLE8888 pins instead of MCU gpios that drives TLE8888

* TLE8888: cleanup

* TLE8888: do not reset driver private data on WD/undervoltage reset

* TLE8888: diagnostic updates

* TLE8888 driver: BIG driver rework

* TLE8888: check SPI answers for abnormal states

Reply with other than requested register can be a sign of:
-Power-On-Reset, then OpStat0 will be replyed
-WatchDog reset, then FWDStat1 will be replyed
-Invalid communication frame, then Diag0 will be replyed

Keep tracking last accessed register and check with the next reply.

* TLE8888: debug clean-up

* TLE8888: implement spi array write

This reduce CS inactive state time between two consequent accesses
from 8.8 uS to 1.4 uS

* TLE8888: fix PP outputs in OD mode

* TLE8888: cleanup register definitions

* TLE8888: run separate driver thread for each chip instance

Calculating poll interval for few chips become more complex, avoid
this running thread for each device.

* TLE8888: fix cypress and kinetic compilation

Both platforms define its own MAX and cause redifination error if
common.h is included in driver.

* MRE: update mapping.yaml and fix direct pin mapping for TLE8888

* TLE8888: diagnnostic: disable switch off in case of overcurrent

For all output, use current limiting instead

* TLE8888: check for overvoltage on OUT8..OUT13

* TLE8888: add TODO note about how to recover from failure condition

Currently TLE8888 automaticly recovers only from overcurrent and
(may be) overtemperature conditions.
Short to bat cause output disable (bit in OECONFIG is reset) and
needs driver/host intervention.

* TLE8888: save few bytes of RAM

* TLE8888: Lada Kalina is test mule for IDLE stepper on TLE8888

Don't forget to enable PP mode for TLE8888 outputs 21..24:
uncomment line 1087 in tle8888.c

* TLE8888: reorder code, cleanup

* TLE8888: mode all debug/statisctic to per-chip struct

* TLE8888: rework poll interval calculation

* MRE: use TLE8888 pins instead of MCU gpios that drives TLE8888 #2
2020-10-23 12:25:30 -04:00
rusefi d4d36f9153 Hellen says drivers 2020-09-07 12:00:16 -04:00
rusefi e052c2b1e4 dead code 2020-08-31 20:52:25 -04:00
rusefi 36f13323ea more readable error message thank you Matt! 2020-05-23 17:20:46 -04:00
rusefi 6453e891e6 "TLE8888 SR Unexpected response" does not work as intended fix #1466 2020-05-22 22:56:19 -04:00
rusefi bf8ceda67d "TLE8888 SR Unexpected response" does not work as intended #1466 2020-05-22 08:23:49 -04:00
rusefi 14b0b5dc4c more info into error message 2020-05-22 01:05:07 -04:00
dron0gus 225f529b37 tle6240: fix crash in driver wake routine (#1435) 2020-05-15 15:54:41 -04:00
rusefi f081c8eef4 new LED logic: constant WARNING if VBATT is below 7v 2020-05-13 01:52:27 -04:00
rusefi 5c91d96ce6 new LED logic: constant WARNING if VBATT is below 7v 2020-05-13 01:17:48 -04:00
rusefi adafa0a0d8 I think it's OK to crash very visibly if no proper SPI response 2020-05-13 01:07:11 -04:00
rusefi 5240384624 hiding diag code which was messing with GP2/GP3 i.e. TLE8888_PIN_22 TLE8888_PIN_23 2020-05-11 00:53:50 -04:00
rusefi db8f76bba5 trying to guess 2020-05-09 20:45:20 -04:00
rusefi 7aa195e86e tle8888 restoration 2020-05-09 16:59:54 -04:00
rusefi 137a41282b mre 050 compromise 2020-05-09 09:40:00 -04:00
rusefi bf2d29bff3 Revert "Tle8888 for mre 050 (#1408)"
This reverts commit bd0a84b6
2020-05-08 23:58:34 -04:00
dron0gus bd0a84b62d Tle8888 for mre 050 (#1408)
* tle8888: fix tle8888_chip_init flow

* tle8888: set correct pin modes for mcu gpios in tle8888_chip_init

Direct drive, reset, inj_en and ign_en gpio should be outputs
2020-05-08 19:05:30 -04:00
dron0gus 3fd4d9ffc3 tle8888: on MRE 0.5.0 we can drive ING_EN and INJ_EN from STM (#1407)
Do it!
2020-05-08 17:47:41 -04:00
dron0gus baef1e4a73 Tle8888 stage 1 (#1404)
* TLE8888: implement diagnostic

* TLE8888: add support for PP mode on OUT21..24

* tle8888: use helpers to extract register value from 16bit reply
2020-05-07 09:49:57 -04:00
dron0gus 7007627b70 [SAFE] Debug cleanups (#1403)
* electronic throttle: inprove debug

* idle thread: show debug info for configured idle driver

* gpio-chips: make private functions static
2020-05-06 20:06:50 -04:00
rusefi 95d1771bc5 steps towards tle8888 2020-05-06 19:20:12 -04:00
rusefi b607400984 TLE8888 mode flexibility 2020-04-23 16:57:37 -04:00
rusefi c1ab5ca585 smart gpio clean-up 2020-04-06 14:13:29 -04:00
rusefi 070f6b52b8 code style 2020-04-06 12:34:21 -04:00
rusEfi d564b4e475 clean-up by Dron0Gus 2020-04-06 11:55:44 -04:00
rusefi b40d4d588d code style 2020-04-01 21:32:21 -04:00
rusEfi 040e040b4a verboseTLE8888 2020-02-27 02:11:20 -05:00
rusefi 4cf0bfb03b TLE8888 watchdog #917 2020-02-12 19:32:40 -05:00
rusefi c5e69cedc4 #917 progress 2020-02-12 17:37:45 -05:00
rusefi 58e711d683 and fixing build now! 2020-02-12 17:23:22 -05:00
rusefi c78ea7da6c tle8888 refactoring already - extracting method 2020-02-12 17:19:58 -05:00
dron0gus 65bc3b1744 tle8888: disable diagnostic for outputs (#1144)
DS is not clear, may be tle8888 clears OE bit in case of error on
output.
2020-02-12 08:53:35 -05:00
rusEfi ea4714e0c2 tle8888 dump at init 2020-02-12 08:34:26 -05:00
rusEfi 37896cb927 have nothing else to do :( 2020-02-12 08:24:24 -05:00
rusEfi 61da49b3c5 tle8888 output fix 2020-02-12 08:15:55 -05:00
rusEfi 41e10c177c FATAL error running MRE blinking test #1137
typo
2020-02-11 17:52:01 -05:00
rusEfi 9d5e4684b6 Merge branch 'master' of https://github.com/rusefi/rusefi 2020-02-11 17:49:49 -05:00
rusEfi 21853eb500 FATAL error running MRE blinking test #1137
still not the fix?
2020-02-11 17:49:39 -05:00
dron0gus 919034ca3e Tle8888 wd (#1143)
* tle8888: watchdog: debug over TS: remove tailing register address

* tle8888: ann console command to dump all regs
2020-02-11 17:49:14 -05:00
dron0gus ee56957205 tle8888: watchdog: debug using TS (#1142) 2020-02-11 16:56:52 -05:00
dron0gus 9fe8fe86a0 tle8888: watchdog: use FWDRespSyncCmd for last response (#1140) 2020-02-11 15:49:17 -05:00
dron0gus 59bb70f638 tle8888: watchdog: do not overwrite defaults, response table fix (#1139) 2020-02-11 15:36:53 -05:00
rusEfi 0c2d00b455 TLE8888 watchdog #917
still no luck. responses 0x85c and 0xa5c
2020-02-11 00:54:15 -05:00
rusEfi 41f274b73c WdDiag 2020-02-10 21:28:55 -05:00
rusEfi edc7ad69ae TLE8888 watchdog #917
time to start working?!
2020-02-10 18:32:32 -05:00
rusEfi 948cc7743e TLE8888 watchdog #917
maybe better start-up sequence
2020-02-10 17:08:37 -05:00
rusEfi fdb9e97fd3 TLE8888 watchdog #917 2020-02-10 14:37:52 -05:00
rusEfi ce54ae9497 TLE8888 watchdog #917
window watchdog progress
2020-02-10 13:24:09 -05:00
rusefi 223fe8ab70 TLE8888 watchdog #917
first steps
2020-02-10 11:11:00 -05:00
rusefi bc118ecede code style 2020-02-10 09:29:11 -05:00
rusEfi cfd7397e46 FATAL error running MRE blinking test fix #1137 2020-02-09 21:16:31 -05:00
rusEfi 3c874398ff tle8888 start-up clean-up 2020-02-09 20:41:25 -05:00
rusefi 586eb9e6e3 code style: trying to get used to this syntax 2020-01-22 00:45:09 -05:00
rusefi a222ecdfe1 happy new year unification 2020-01-13 21:57:43 -05:00
dron0gus 406703b1b5 Gpio diagnostic (#1100)
* enums: add brain_pin_diag_e enum for pin diagnostic

* gpio core: add pin diagnostic call

* gpio: mc33810: add diagnostic support

* gpio: mc33972: add diagnostic support

* gpio: tle6240: add diagnostic

* pin_repository: output diagnostic data for gpio chips

* enums: kinetis: add brain_pin_diag_e enum for pin diagnostic
2020-01-12 10:20:10 -05:00
dron0gus 1b19aa1c57 hw: gpio: use unsigned int as pin number inside gpiochip drives (#1097)
Not brain_pin_e. Drivers like to see pin number within current
chip.
2020-01-11 10:29:41 -05:00
rusefi 63e3e84e08 happy new year 2020-01-08 00:02:40 -05:00
dron0gus ddc071f611 Gpio fixes (#1086)
* drivers: gpio: add MC33810 driver (skeleton)

* pin_repository: debug: do not show absent chips
2020-01-07 07:55:50 -05:00
Matthew Kennedy df57b24e3f Shrink output channels, now with passing CI (#1077)
* reorder fields

* temporary tle8888 fix

* comment, simplify

* hand tweak generated

* oops, those are reciprocal

* fix engineLoadAccelExtra

* aggressive priority order

* fix output size

* comments

* reorder fields, no sizes yet

* should've been signed

* simplify constructor mess, hook up scaling

* notes

* typo

* if -> switch

* rev signature

* correct map offset

* handle unsigned properly

* RPM is unsigned

* vss isn't scaled

* extract magic

* required generated for build

* de-scale rpm

* field type cases
2019-12-22 08:12:45 -05:00
rusefi 9ffda831a7 Revert "DRAFT Shrink output channels, again (#1074)"
This reverts commit ad7a383d
2019-12-21 15:02:49 -05:00
Matthew Kennedy ad7a383d74 DRAFT Shrink output channels, again (#1074)
* reorder fields

* temporary tle8888 fix

* comment, simplify

* hand tweak generated

* oops, those are reciprocal

* fix engineLoadAccelExtra

* aggressive priority order

* fix output size

* comments

* reorder fields, no sizes yet

* should've been signed

* simplify constructor mess, hook up scaling

* notes

* typo

* if -> switch
2019-12-21 08:55:19 -05:00
rusefi 7dc6057ac7 Revert "Shrink output channels, use scaling (#1069)"
This reverts commit 1e0f1a26
2019-12-19 22:35:06 -05:00
Matthew Kennedy 1e0f1a2628 Shrink output channels, use scaling (#1069)
* reorder fields

* temporary tle8888 fix

* comment, simplify

* hand tweak generated

* oops, those are reciprocal

* fix engineLoadAccelExtra

* aggressive priority order
2019-12-19 20:37:42 -05:00
rusefi 19bdb9a35f docs & code formatting 2019-11-19 18:17:03 -05:00
andreika-git e20bdf4386 TLE6240 outputs fix (#994) 2019-11-01 15:49:55 -04:00
andreika-git ef23be6893 Kinetis & TLE8888 compatibility & fixes... (#991)
* TLE8888: More compatibility & postTunerStudioState

* activeConfiguration & EFI_ACTIVE_CONFIGURATION_IN_FLASH fix

* Kinetis: jump_to_bootloader() impl.

* Kinetis: UART baudrate safety check

* Kinetis: OMG!..
2019-10-31 16:06:34 -04:00
Matthew Kennedy 821ca6156f move tsOutputChannels to header (#970) 2019-10-08 21:02:51 -04:00
rusefi 12d9bc50b3 tle8888 reinit command 2019-09-05 10:30:27 -04:00
rusefi 280271ab1e TLE8888: NB2 solution + reset counter 2019-09-05 10:01:59 -04:00
dron0gus be13dc1185 TLE8888: track reset event by cleared OE bit in status register (#918)
As tle8888 suposed to be reset master and reset MCU there is no
flag showing POR reset. So try to poll OE bit.
2019-09-05 08:55:17 -04:00
rusefi d1f96682c2 Hall mode for TLE88888 - VRSConfig1 VRSM #915 2019-09-04 20:02:32 -04:00
rusefi 4737a2a57f Hall mode for TLE88888 - VRSConfig1 VRSM #915 2019-09-04 09:24:01 -04:00
rusefi df18a37788 Hall mode for TLE88888 - VRSConfig1 VRSM #915 2019-09-04 00:27:19 -04:00
rusefi cb488d28ce TLE8888 should be re-initialized every time we get +12 volts fix #901
fuel pump test passed, also longer start-up timeout is needed for reliable start
2019-08-16 23:21:03 -04:00
rusefi b3ccc4009c TLE8888 should be re-initialized every time we get +12 volts #901
moving SPI initialization to thread - still works on real hardware
2019-08-16 22:56:06 -04:00
rusefi 7de0eba798 TLE8888 should be re-initialized every time we get +12 volts #901
refactoring: extracting method
2019-08-16 22:41:19 -04:00
rusefi 890915524b refactoring 2019-08-16 22:01:32 -04:00
rusefi 8bdf4f30ae refactoring: ChibiOS now offers native 'lockAnyContext' pattern 2019-08-11 15:23:15 -04:00
rusefi d6f7e778ac code style/type safety/docs/typos 2019-08-10 11:13:41 -04:00
rusefi 59463a515e MRE hangs up on bench fix #899 2019-08-10 00:53:16 -04:00
rusefi 5d2afd2331 refactoring: better file name 2019-07-06 20:15:49 -04:00
rusefi 1b4c5bc552 we need TLE8888 driver #714 2019-06-08 21:58:23 -04:00
rusefi 3b87cd9add tle8888 driver bug #803
undoing since this breaks start-up
2019-06-08 20:28:13 -04:00
rusefi 4944916064 we need TLE8888 driver #714
trying a sleep before first command
2019-06-08 18:31:56 -04:00
rusefi 123aae2613 we need TLE8888 driver #714
saving exact TLE8888 reponses
2019-06-08 16:13:24 -04:00
rusefi 7a99fab788 https://github.com/rusefi/rusefi/issues/803 2019-06-08 00:44:18 -04:00
rusefi f322d6f753 better status code 2019-06-07 19:14:55 -04:00
rusefi 8456bd3c23 reviving tle8888 configuration 2019-06-05 22:32:30 -04:00
rusefi 7c5522b682 code style 2019-06-05 21:44:58 -04:00
rusefi c77ec2a4c9 docs 2019-05-30 17:43:40 -04:00
dron0gus 1b19a36b9e Smart gpios fixes 3 (#795)
* pin_repository: provide readable pin names in error cases

* io_pins: remove getBrain_pin_eExt

We have getBrain_pin_eExt in io_pins.cpp and hwPortname in
pin_repository.cpp.
First uses auto-generated enums, second one uses runtime data to
provide name of hw pin.
Removing first saves us about 2K of flash couse big auto-generated
switch with pin names no more used by anyone and gets optimized out.

* gpios: mc33972: CS pin is now requested at smart_gpios.pcc

* getSpiDevice: support SPI4

* smart_gpios.cpp: startSmartCsPins set CSs to inactive state

OutputPin:initPin initializes pin with false value. This is active
state for SPI Chip Selects. Set to 1 to deselect all chips.
2019-05-09 18:09:24 -04:00
andreika-git 20b6a17695 EFI_CONSOLE_UART_DEVICE, flash->hw_ports, Fix TLE6240 and misc.fixes (#793)
* rename EFI_CONSOLE_UART_DEVICE -> EFI_CONSOLE_SERIAL_DEVICE

* Impl. EFI_CONSOLE_UART_DEVICE

* Move flash source files to ports/stm32/ & hw_ports.mk

* Fix TLE6240

* Fix EFI_NO_CONFIG_WORKING_COPY

* EFI_PRINT_MESSAGES_TO_TERMINAL
2019-05-05 11:06:27 -04:00
dron0gus 986a4d1748 tle8888: fix pin names array (#771) 2019-04-21 08:50:07 -04:00
rusefi 0b1620feb2 USB and TLE8888 not working for F4 or F767 #764 2019-04-20 23:39:06 -04:00
dron0gus aaad44dfa1 Smart gpio fixes 2 (#765)
* gpio chips: relax error checking on _add

Do not halt whole system if wrong or nulled config is passed.
In current smart-gpio implementation this can happen and it is not
as error. Let smart-gpio handle this, kust reurn negative.

* tle8888: return back includes needed for debug

* smar-gpio: -Werror=missing-field-initializers fix
2019-04-19 01:42:24 -04:00
dron0gus e0796d673b Smart gpios fixes - now without cleanup of smart_gpio.cpp (#758)
* smart_gpio.cpp: check _add return values

And occupy gpiochip's pin range if disabled of failed. So base will
align with enum.

* TLE8888: cleanup, move high level code to smart_gpio.cpp

* smart_gpio.cpp: fix compilation when BOARD_EXT_GPIOCHIPS == 0

* board-subaru: fix compilation after latest smart_gpio updates

* tle8888: now we have all 28 pins supported
2019-04-16 09:23:24 -04:00
andreika-git 4e7715fab2 Add more portability to smart_gpio & SPI (#754) 2019-04-14 13:35:30 -04:00
rusefi d67f3dc6e1 we need TLE8888 driver #714 2019-04-14 08:20:25 -04:00
dron0gus 527cba3e35 TLE8888: remove hacks (#753) 2019-04-14 08:15:01 -04:00