Stránka 48 z 48

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: ned říj 29, 2017 7:38 am
od outback
Zkusil jsem si zajímavou věc, připojil jsem displej na logický analyzátor. Prvotní motivace byla se podívat, kolik mám času po překreslení LCD displeje na ostatní komunikaci po I2C sběrnici. Zjistil jsem, že času mám dost, ale že velmi neefektivně pracuju se SSM1 - rychlost vyčítání půjde skoro zdvojnásobit. SSM1 1953 Bd, SSM2 4800 Bd, I2C 100kHz, CPU 16 nebo 2 MHz - to jsou nudná čísla, ale logický analyzátor krásně ukáže co znamenají a hlavně jak jim přizpůsobit software. Jak jsem to tak prohlížel asi půjde snížit frekvenci procesoru z 16MHz na 2MHz a tím o dost snížit odběr proudu. Konečně chci taky dodělat logování na SD kartu, rád bych se podíval na grafy teploty oleje. Po I2C můžu hrnout data na Arduino se SD slotem a grafickým displejem co hrdlo ráčí - ukládat veškerou SSM komunikaci plus dekódované údaje, času na to je dost.

EDIT: redukce frekvence z 16MHz na 2MHz - ušetří 9mA, stojí za úvahu
redukce z 2MHz na interní oscilátor 128kHz - ušetří 2-3mA, nevyplatí se

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: sob lis 04, 2017 10:01 am
od outback
Tak jsem zkusil číst přes SSM1 i jiné řídící jednotky než motor a převodovku - měl jsme dvacet minut volno když jsem čekal ve městě v autě na manželku. Zkusil jsem adresy jednotek z nějakých stránek. Na 0x89 a 0x92 ticho, 0xAB měl být tempomat a opravdu tam něco je. Zkusil jsem tedy číst a zobrazovat adresu 0xA7 kde by podle Honzovo XML souborů mohla být přednastavená rychlost...tak nic, i za jízdy s aktivovaným tempomatem jen nuly...akorát jsem tu jednotku nějak naštval, po deseti minutách čtení ve smyčce přestala odpovídat a rozsvítila se kontrolka ABS a VDC... i druhý pokus stejné chování...ale tempomat stále fungoval, tak kdoví s čím jsem vlastně mluvil.

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: sob lis 04, 2017 10:47 pm
od HonzaCZ
0xAB je ABS/VDC, tempomat je 0xCC. Na tom mym bejvalym OTB jsem si pokecal s obojím, ale iritovalo mě způsob získávání dat, že jsem se ani nepokoušel o nějakou reálnou implementaci. Dokonce mi to tenkrát běhalo i přes některou z vývojových verzí FreeSSM, přes XML konfigurační soubory.

Našel jsem nějaký poznámky:

Kód: Vybrat vše

0x78    Engine
0x45    Transmission
0xAB    ABS/VDC
0xCC    Crusie Control
0x66    Air Suspsension
0x95    Power Steering
0xAC    Air Conditioning

Example: ABS
AB 80 00 00    (read 1 byte from address 0x8000 of the ABS)
00 45 46 48    (read ID from ABS)
A v těch poznámkách někde taky bylo, že při pokusu číst VDC s nastartovaným motorem, to rozsvítilo kontrolky a přestalo komunikovat. To se ti asi stalo.

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: sob lis 04, 2017 10:56 pm
od outback
No ty maj smysl pro humor - ABS má 0xAB, Cruise Control 0xCC, bojím se zeptat na 0x69...

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: sob lis 04, 2017 11:02 pm
od HonzaCZ
Náhodou dobrý, ne? :)

Našel jsem ještě něco...

VDC adresy:

Kód: Vybrat vše

			<CLEARMEMORY>
				<ADDRESS>0x0030</ADDRESS>
				<VALUE>0x00FF</VALUE>
			</CLEARMEMORY>
			
			<MB id="MB_FR">
				<ADDRESS>0x0021</ADDRESS>
			</MB>
			<MB id="MB_FL">
				<ADDRESS>0x0022</ADDRESS>
			</MB>	
			<MB id="MB_RR">
				<ADDRESS>0x0023</ADDRESS>
			</MB>	
			<MB id="MB_RL">
				<ADDRESS>0x0024</ADDRESS>
			</MB>
			<MB id="MB_STR">
				<ADDRESS>0x0025</ADDRESS>
			</MB>
			<MB id="MB_GSENS">
				<ADDRESS>0x0026</ADDRESS>
			</MB>
			<MB id="MB_GSENS2">
				<ADDRESS>0x0027</ADDRESS>
			</MB>
			<MB id="MB_PRES1">
				<ADDRESS>0x0028</ADDRESS>
			</MB>
			<MB id="MB_PRES2">
				<ADDRESS>0x0029</ADDRESS>
			</MB>
			<MB id="MB_UNKNOWN1">
				<ADDRESS>0x002A</ADDRESS>
			</MB>			
			<MB id="MB_VOLT">
				<ADDRESS>0x002B</ADDRESS>
			</MB>			
			<MB id="MB_TRQ1">
				<ADDRESS>0x002C</ADDRESS>
			</MB>			
			<MB id="MB_TRQ1">
				<ADDRESS>0x002D</ADDRESS>
			</MB>	
CC adresy:

Kód: Vybrat vše

				<MB id="MB_VSP">
					<ADDRESS>0x00A6</ADDRESS>
				</MB>
				<MB id="MB_MSP">
					<ADDRESS>0x00A7</ADDRESS>
				</MB>
				
				<SWBLOCK>
					<ADDRESS>0x007A</ADDRESS>
					<SW id="SW_SE">
						<BIT>6</BIT>
					</SW>
					<SW id="SW_RE">
						<BIT>5</BIT>
					</SW>
					<SW id="SW_ST">
						<BIT>7</BIT>
					</SW>
					<SW id="SW_BR">
						<BIT>4</BIT>
					</SW>
					<SW id="SW_N">
						<BIT>3</BIT>
					</SW>
				</SWBLOCK>
Co znamenají ty zkratky se dá celkem odhadnout. Ale všechny SSM1 jednotky stejnýho typu (a rozdílnýho ROM ID; s 3bajtovým ROM ID), co jsem zkoušel, tak měly všechno na různých adresách. Moc se s tím nemazali.

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: sob lis 04, 2017 11:07 pm
od HonzaCZ
Pokud jednotka komunikující přes SSM1 má 5bajtový ROM ID tak skoro určitě používá SSM2 adresování a umí vyčítat víc po sobě jdoucích bajtů na jeden dotaz.

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: ned lis 05, 2017 8:37 am
od outback
Víc bajtů na jeden dotaz? Jak?

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: ned lis 05, 2017 10:56 am
od outback
Tak ty adresy fungujou. Dodělal jsem si zobrazení předvolené rychlosti tempomatu, z VDC vyčtu rychlosti jednotlivých kol, ale za 10 minut mne to pošle do háje...takže na ABS-VDC zatím kašlu, možná by to šlo udělat jako pomocné zobrazení pro vyprošťování nebo aktivovat až při rozdílu rychlosti náprav a jen na 10sec...to fakt teď neřeším.

Ale ten tempomat je prima.

Re: Stavebnice přídavného displeje pro starší Subaru

Napsal: ned lis 05, 2017 8:25 pm
od HonzaCZ
Poslední byte dotazu je kolik chceš vrátit bajtů. Ale jak jsem psal, uměj to jen některý jednotky. Kdybys třeba chtěl získat naráz adresy 0x23-0x26 z jednotky VDC, tak dáš 0xAB002303. 0x03 je počet požadovaných bajtů -1. Ale fungovalo mi to jenom s SSM2 kompatibilní TCM, s VDC ne. Takže trochu nevhodný příklad.