Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

- za ciepło na budowę skomplikowanych projektów.

- Rozbudowa interfejsu OBDII do eNiro MY2020 bazującego na M5Stack-core o możliwość nagrywania ekranu LCD na kartę SD  podczas jazdy to w sam raz.

- Program Screen-Capture używałem już wcześniej dla zrzutów ekranu w samochodzie Gullietta na tym samym interfejsie BT.

- Program autora screen-capture można znależć pod tym linkiem https://github.com/electricidea/M5Stack-Screen-Capture.

- interfejs OBDII bazuje na Vgate iCAR Pro BT 4.0.

- poniżej kilka zrzutów z uruchomienia na stole.

M5Stack-Core.thumb.png.d8dbb90fa4a398588e8719dab20f0ac0.png  eNiro1.thumb.png.2cef66dfd3aaa7f74679c9ed1a6aaaf3.pngeNiro2.thumb.png.7f9e864894f4309b669a1803a0b35314.pngeniro3.thumb.png.a5c98ef1b23dea533b9fce35b5e1ad5b.pngeniro4.thumb.png.93cd301a8c76fffc7bcebe4283a3444e.pngeniro5.thumb.png.ecd49a1f52e449db5f720f15b9b0abbd.pngeNiro6.thumb.png.885bc162439bfad196902b7e3bc072b5.png

 

Edytowano przez 99teki
  • Lubię! 1
  • 2 tygodnie później...
(edytowany)

- kilka zrzutów z jazdy.

- wersja robocza oprogramowania, wersja 0.9

- Screen Capture zrobione na rdzeniu 1, odczyt co 5sekund , nagrywanie na karte SD trwa od 1.500 do 3000 msek.

- dołączone pliki binarne do Flash Downolads Tolls 3.94 i wyższe.

- widać jak na postoju akumulator z 14.7 V dostaje 12.4 V kiedy przestaje działać przetwornica DC/DC.

ekran0.thumb.png.4c0503dcd3b42f5b878b15d7031b7b58.pngekran1.thumb.png.811760aaeb05ac41934179380e5722a9.pngparking.thumb.png.cbbd1c709c973ae355d6bffac9394fab.png

 

 

 

enirodashboard.9.zip

flash-00.png

Edytowano przez 99teki
(edytowany)

- poprzednia wersja miała taką wadę, że czas zapisu całego ekranu wynosił do 3500 mili sekund.

- dlatego postanowiłem zapisywać ekran bezpośrednio z pamięci DRAM tam gdzie jest zrobiony sprite ekranu (320x240 x 8 bit).

- czas zapisu to maksymalnie 1500 mili sekund, plik jest trzy krotnie mniejszy i ma 75 KB, poprzednio miał 250 KB.

- ale zaczął się buntować serwer BLE i się zawiesza na operacji Register Callback, czyli brakuje mu pamięci.

- w esp32 biblioteka SD ma taki begin(SD, )

 //bool begin(uint8_t ssPin=SS, SPIClass &spi=SPI, uint32_t frequency=4000000, const char * mountpoint="/sd", uint8_t max_files=5, bool format_if_empty=false);

- wstawiłem taki begin i ruszyło.

if(!SD.begin(SDCARD_CS, SPI, 40000000, "/sd", 1) )
  {
      Serial.println("Card Mount Failed");
      return;
  }	

- gdzie można zwiększyć tą pamieć.

- może trzeba sprita aktywować jak już BLE serwer się połączy ?

SC30x21.thumb.png.cdc544b4478b88ba9c869809a62496b9.png

 

 

Edytowano przez 99teki
(edytowany)

- strona autora programu ScreenShotSample

https://www.team-rh.com/screenshot-sample-m5stack-arduino-8bit-color-only/

- testuje ten program ale co chwilę dostaje Guru meditation Error

...
Booting device...
Reading settings from eeprom.
Loaded settings ver.: 3
Mute speaker for m5stack
Init this->tft display
	xtask code running on core 1
Start BLE with PIN auth
Setup BLE scan
Device setup completed
 _834_ 	free heap: 18260  min heap: 18260 zajetosc modulu: 18260 
 _615_ 	free heap: 18260  min heap: 18260 zajetosc modulu: 0 
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x400ddcb9  PS      : 0x00060130  A0      : 0x800ddd5c  A1      : 0x3ffcffa0  
A2      : 0x00000000  A3      : 0x00000000  A4      : 0x00000140  A5      : 0x00012ac0  
A6      : 0x00000000  A7      : 0x80000001  A8      : 0x00012ac0  A9      : 0x3ffcff80  
A10     : 0x0000041c  A11     : 0x3ffc5a8c  A12     : 0x0000041c  A13     : 0x3f4046dd  
A14     : 0x00000000  A15     : 0x3ffcff5c  SAR     : 0x00000019  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00012ac0  LBEG    : 0x40091e8c  LEND    : 0x40091e97  LCOUNT  : 0x00000000  

Backtrace: 0x400ddcbb:0x3ffcf3d0 0x400ddd69:0x3ffcf410

Decoding stack results
0x400ddcb6: Create_BMP_8(char*, unsigned char*, int, int) at E:\eDash2.2/eDash2.2.ino line 588
0x400ddd59: codeForCapturetask(void*)                     at E:\eDash2.2/eDash2.2.ino line 616

	//Data Write
[586]  for(int i=0;i<ysize;i++)														// ysize 240
[587]  {
[588]		for(int j=0;j<xsize;j++)													// xsize 320 error Exception was unhandled.
[589]			CB_buffer[j] = b_data[xsize*(ysize-1-i)+j];			// 320x240 == 76kB
[590]		if(SD_FILE.write(CB_buffer,xsize) == -1) {SD_FILE.close();	return;	};
		}

- jeśli dobrze odczytuję log to wywołanie z linii 616 kieruje do programu z linii 588. (w programie autora to linia 44)

- w linii 588 jest zwykła pętla i chyba Guru med jest w linii 599 a raczej w b_data[].

- z opisu rejestru EXCVADDR wynika ze jeśli wartość tego rejestru jest około adresu zerowego (0x00012AC0) to jest blisko struktury ale wskażnik do struktury jest NULL.

- gdyby dane były nie zainicjowane lub uszkodzone to wtedy adres byłby zawarty w zakresie 0x3Fxxxxxx .. 0x6xxxxxxx.

- jak teraz wyświetlić wskażnik wskazujący dane.

Edytowano przez 99teki
(edytowany)

- problem rozwiązany, czy tylko dla M5Stack Core nie wiem.

- wystarczy tylko w programie autora wstawić poniższą linię (no i troche poprawić wyświetlanie ?)

[44] for(int i=0;i<ysize - 1;i++)	// 239  Data Write 320x239 == 0x12AC0 

- guru Meditation error znika.

- poniżej zrzut z ładowania samochodu ze stacji  70kW.

 

ladowanie.thumb.png.36f320b8cd9256f3265f23e8f7dced69.png

Edytowano przez 99teki

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...