wat1970 napisał(a):
A próbowałeś trochę sprzętowego debugowania programu, np. podglądu danych jakie przychodzą po I2C. Masz możliwość przecież ustawiania pułapek czy podglądu zmiennych, wyczerpałeś tę drogę ???. MPLABX IDE i PICKIT3 to bardzo dobry duet do sprzętowego debugowania a zakładam , że taki zestaw masz. Jeśli nie wiesz jak to zrobić to chętnie pomogę w tym zakresie.
Na razie próbowałem dwóch rzeczy:
1) Sprawdziłem komunikację przez I2C za pomocą prostego analizatora stanów logicznych Saleae. Wygląda na to, że dane są czytane prawidłowo.
2) Podejrzałem szesnastobitowe zmienne, przechowujące (już poskładane z dwóch odebranych bajtów) kopie rejestrów z danymi kalibracyjnymi. Mają właściwe typy i zawartość. To znaczy w zapisie hex widać, że składają się z tych samych bajtów, które chwilę wcześniej widziałem na analizatorze podpiętym do I2C.
Jedyna dziwna rzecz wystąpiła, gdy chciałem podejrzeć wartości bufora odbiorczego, wykorzystywanego przy odczycie części MSB i LSB rejestrów kalibracyjnych. Tym razem skorzystałem uarta i zwykłej instrukcji printf("MSB: %x, LSB%x\n", buff[0], buff[1]). W dwóch miejscach zaobserwowałem dziwny efekt zamiany półbajtów miejscami w stosunku do tego, co pokazywał analizator i debugger
Czyli na przykład analizator pokazywał, że przez I2C szły kolejno dwa bajty: 0x12 oraz 0x0C. Debugger pokazał, że zostały one złożone w 0x120C. Natomiast wśród danych przesłanych przez serial pojawiało się coś takiego: "MSB: 12, LSB: C0". To ma jakieś znaczenie? Czy raczej wina leży po stronie jakiegoś błędu w stdio.h?
Dokładne dane z analizatora i podglądu zmiennych debuggera prześlę wieczorem, teraz nie mam do nich dostępu.
Przeglądałem też kod funkcji odpowiedzialnych za obliczenia, porównując go z przykładem z dokumentacji czujnika. Wygląda w porządku. Zresztą na AVR ten sam kod działał,
Testowałem układ także na innym czujniku BMP085 i występuje dokładne ten sam efekt, więc nie jest to chyba problem sprzętowy. No chyba, że obydwa czujniki będące w moim posiadaniu zostały dotknięte w tym samym momencie przez dokładnie taki sam problem.
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)