Witajcie mam problem z daptacją kodu.
Zajmuję się kontrolerem BQ8030 można z nim się połączyć przez I2C i za pomocą transmisji SMBus można ten kontroler zresetować.
Podszedłem do tematu i udało się za pomocą modułów CP2112 oraz FXL2P udało się zresetować kontroler. Założyłem oddzielny temat dotyczący tego problemu. Link poniżej.
https://www.elektroda.pl/rtvforum/topic4085147.html
Aby baterie do mojego laptopa ponaprawiane w co niektórych sam reset wystarczył ale czasami skończyło się na wymianie ogniw.
Do setna chciałem zrobić prosty programator (a właściwie reseter) baterii aby nie robić za każdym razem kiedy będę chciał edytować pamięć kontrolera.
Wpadłem na pomysł aby użyć do tego Arduino UNO tanio i dobrze.
Zrobiłem nawet PCB (nakładkę na arduino uno z potrzebnymi elementami oraz wyjście na baterię.
No i kwestia kodu, napisałem trzy funkcje czyli wejście w tryb BootROM kontrolera, oraz odczyt zawartości pamięci EEPROM, i funkcję wyjścia z trybu BootROM.
Funkcja viod wejścia do BootROM
Funkcja działa i powoduje odblokowanie baterii i umożliwia dostęp do pamięci kontrolera i można go ściągnąć do tablicy i wyświetlić w Serial Monitorze
Oto drugi kod który wyświetla w serial monitorze zawartość pamięci
Linijka
// SMBCommand(0x08, true);
Powoduje od razu po odczytaniu wyjście z trybu BootRom
Program generuje zapisy w serial monitorze
Po modyfikacji kodu bo aby zresetować licznik cykli i ustawić flagi pojemności na fabryczne potrzeba tylko czterech komórek
Po takiej zmianie wyświetla się to co potrzeba na serial monitrze
Problem mam z opcją zapisu zmienionych wartości w te komórki, potrzebowałbym pomocy bardziej obeznanych użytkowników w programowaniu.
Zarówno zapis jak i odczyt możliwy jest za pomocą płytki FX2LP - udostępnione są narzędzia na PC zarówno dla odczytania jak i zapisania danych poprzez wiersz poleceń na komputerze.
https://github.com/karosium/smbusb
Na githubie jest folder tools i plik smbusb_bq8030flasher.c
Jest to plik nieskompilowany prawdopodobnie w C
Jeśli ktoś mógłby mi pomóc odczytać i poprawnie napisać warunki lub funkcję odwrotną do tej aby na zadeklarowanej tablicy w kodzie Arduino wbić na stałe cztery słowa 00 00 13 88 i te cztery słowa odczytanie podmieniać i nadpisywać w kontrolerze, wtedy można by było zrobić prosty układ (taki jak ja mam i robić tę operację bez użycia komputera oraz przy używaniu tylko przycisków / menu na LCD.
Pozdrawiam ...
Zajmuję się kontrolerem BQ8030 można z nim się połączyć przez I2C i za pomocą transmisji SMBus można ten kontroler zresetować.
Podszedłem do tematu i udało się za pomocą modułów CP2112 oraz FXL2P udało się zresetować kontroler. Założyłem oddzielny temat dotyczący tego problemu. Link poniżej.
https://www.elektroda.pl/rtvforum/topic4085147.html
Aby baterie do mojego laptopa ponaprawiane w co niektórych sam reset wystarczył ale czasami skończyło się na wymianie ogniw.
Do setna chciałem zrobić prosty programator (a właściwie reseter) baterii aby nie robić za każdym razem kiedy będę chciał edytować pamięć kontrolera.
Wpadłem na pomysł aby użyć do tego Arduino UNO tanio i dobrze.
Zrobiłem nawet PCB (nakładkę na arduino uno z potrzebnymi elementami oraz wyjście na baterię.
No i kwestia kodu, napisałem trzy funkcje czyli wejście w tryb BootROM kontrolera, oraz odczyt zawartości pamięci EEPROM, i funkcję wyjścia z trybu BootROM.
Funkcja viod wejścia do BootROM
Kod: Arduino
Funkcja działa i powoduje odblokowanie baterii i umożliwia dostęp do pamięci kontrolera i można go ściągnąć do tablicy i wyświetlić w Serial Monitorze
Oto drugi kod który wyświetla w serial monitorze zawartość pamięci
Kod: Arduino
Linijka
// SMBCommand(0x08, true);
Powoduje od razu po odczytaniu wyjście z trybu BootRom
Program generuje zapisy w serial monitorze
Kod: Text
Po modyfikacji kodu bo aby zresetować licznik cykli i ustawić flagi pojemności na fabryczne potrzeba tylko czterech komórek
Kod: Arduino
Po takiej zmianie wyświetla się to co potrzeba na serial monitrze
Kod: Text
Problem mam z opcją zapisu zmienionych wartości w te komórki, potrzebowałbym pomocy bardziej obeznanych użytkowników w programowaniu.
Zarówno zapis jak i odczyt możliwy jest za pomocą płytki FX2LP - udostępnione są narzędzia na PC zarówno dla odczytania jak i zapisania danych poprzez wiersz poleceń na komputerze.
https://github.com/karosium/smbusb
Na githubie jest folder tools i plik smbusb_bq8030flasher.c
Jest to plik nieskompilowany prawdopodobnie w C
Kod: C / C++
Jeśli ktoś mógłby mi pomóc odczytać i poprawnie napisać warunki lub funkcję odwrotną do tej aby na zadeklarowanej tablicy w kodzie Arduino wbić na stałe cztery słowa 00 00 13 88 i te cztery słowa odczytanie podmieniać i nadpisywać w kontrolerze, wtedy można by było zrobić prosty układ (taki jak ja mam i robić tę operację bez użycia komputera oraz przy używaniu tylko przycisków / menu na LCD.
Pozdrawiam ...