• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
DS18B20 - dziwne "zawieszenie"...
#1
Dzisiaj spotkało mnie coś dziwnego Smile

Arduino Mega 2560, kilka termometrów DS - działa wiele razy bez problemu.
Aż do dzisiaj gdy zdarzyło mi się coś dziwnego - po kilku godzinach pracy,
termometry jakby "zawisły" - układ działał, zapisywał logi na SD, aktualizował 
Virtuino przez BT etc, ale temperatury na wszystkich termometrach nie zmieniały się.
Nie jest to kwestią "zawiśnięcia" procesora bo poza tym, ze pomiary temp.
stały w miejscu reszta działała...

Spotkał się może ktoś z taką sytuacją w Arduino + 1wire + DS18B20???
Gdzie węszyć?

PWL
 
#2
Podłącz analizator 1-Wire lub analizator logiczny oraz oscyloskop do magistrali i zobacz co się dzieje lub nie na magistrali w chwili gdy jest problem z odczytami.

Obstawiam problemy z softem, bo aby wszystkie termometry dawały tylko ostatni odczyt graniczy z cudem. Najprędzej, albo soft nie wysyła komendy konwersji temperatury albo odczytuje ostatnie dane. Stawiam na pierwszą opcję.


PS
Założyłem, że wszystkie termometry są na jednej magistrali. Niestety, podałeś mało informacji, nie pokazałeś kodu programu, nie wiadomo jakiej użyłeś biblioteki., więc pozostaje wróżyć. Biblioteki 1-Wire dla Arduino są różnego rodzaju, złe, kiepskie, beznadziejne (dobrych nie spotkałem). Może na magistrali robi się zwarcie a biblioteka zwraca ostatnio odcytaną wartość?
 
#3
Ja tak miałem... działało przez rok dobrze. Zorientowałem się po miesiącu że temperatura na balkonie cały czas taka sama. Restart magistrali i znowu od pół roku działa.

Wysłane z mojego Neffos Y5s przy użyciu Tapatalka
 
#4
(01-07-2019, 22:32)gavron7 napisał(a): Ja tak miałem... działało przez rok  dobrze. Zorientowałem się po miesiącu że temperatura na balkonie cały czas taka sama. Restart magistrali i znowu od pół roku działa.
Skoro restart pomaga to ewidentna "babuła" w sofcie. Mnie to nie dziwi, bo czego spodziewać się po bibliotekach Arduino?
Jeśli urządzenie ma działać pewnie, to trzeba zrezygnować z Arduino! Można naturalnie poprawić biblioteki Arduino, ale prościej chyba napisać je od nowa, z innym podejściem. Przy przenoszeniu bibliotek z Arduino na ARM (wcześniej AVR) z oryginału pozostawało max 30%. Błędów jest tam dużo, błędów, które mogą zawieszać CPU, zwracać niepoprawne wyniki. Nadużywanie float jest normą, tak jakby AVR miał za dużo RAM, FLASH i był zbyt szybki. Podobnie wrodzona odraza Arduinowców przed używaniem możliwości sprzętowych, przez co obsługa 1-Wire czy WS2812 często powoduje problemy. Szczytem głupoty, jest używanie programowego SPI czy I2C w sytuacji gdy dostępne są interfejsy sprzętowe. Niezrozumiałe jest także rezygnowanie z używania przerwań, przez co można "zabić" nawet najlepszy uC, i jego szybkość pracy, nie ma większego znaczenia, bo i tak czeka na zakończenie zadania, które mogłoby być wykonywane w tle (np transmisja do LCD, wysyłanie danych przez UART, itp). Jakieś "pulsein" blokujące program, zamiast użyć sprzętowych możliwości timera. Strachu przed WDG nigdy nie zrozumie.
Może teraz koledzy są świadomi, dlaczego napisanie dobrego, pewnie działającego programu, nie kosztuje 1'000zł. Dlaczego wymagana jest wiedza, doświadczenie, sprzęt i dużo czasu na testy a to kosztuje i napisanie stosunkowo prostego softu to koszt 10'000zł w górę. Niestety, wielu zleceniodawców twierdzi, że program można napisać w kilka godzin i nie mają na myśli miganie LED-em ale obsługę czujników po I2C/SPI, oszczędzanie energii bo urządzenie pracuje z baterii.. Pozostaje życzyć powodzenie, w znalezieniu frajera, który za kilka stówek taki soft DOBRZE napisze i bateria nie padnie do kilku dniach a program nie będzie się wieszał.


PS1
Arduino jest platformą uruchomieniową. Jest dobre do zabawy, nauki, testów ale nie do pełnosprawnych produktów. Trzeba mieć tego świadomość.
Dobry produkt, tworzony w dzisiejszych czasach, rzadko będzie oparty o AVR, bo pomijając małe możliwości, jest po prostu drogi (dawno nie tworzyłem nic na AVR i pewnie już nie stworzę). Fakt, że czasem AVR sprawdzi się lepiej niż ARM, np szeroki zakres napięć zasilających, ale Microchip wypuścił ARM zasilane napięciem do 5V, tyle, że Microchip, jak to Microchip ma dłuższą erratę niż notę katalogową a i tak nie wszystko działa poprawnie, to nie zaryzykowałbym użyć ich uC.
Nawet jeśli w produkcie użyje się AVR, to w dobrym produkcie, soft nie będzie oparty o biblioteki Arduino, a tym bardziej, nie będzie pisany pod Arduino IDE, bo brak debugera powoduje, że soft pisze się długo, przez co jest drogi.


PS2
Arduino ma dużo wspólnego z PABX Elektronix.. Aby nie sprawiały problemu, trzeba było podłączać je przez timer, który raz na dobę na chwile wyłączał jej zasilanie (centrala CTL jak dobrze nazwę pamiętam, ale nowsze twory, raczej potwory "ip-pbx mini 106", "ip-pbx mx/sx" lepsze nie są), . Gdyby nie fakt, że Elektronix oparty był o 8051 byłbym skłonny stwierdzić, że soft pisany był w Arduino IDE.
 
#5
Zapomniałem .. ja tak miałem na rpi3... Wink

Wysłane z mojego Neffos Y5s przy użyciu Tapatalka
 
#6
(02-07-2019, 07:10)gavron7 napisał(a): Zapomniałem .. ja tak miałem na rpi3... Wink
W jakim stanie była magistrala? Co pokazał oscyloskop? Skoro jednak nie pamiętałeś, czy to Artruino, czy Rpi, to i penie nie pamiętasz co było na magistrali.

W Rpi może być problem zarządzania pamięcią, zresztą w Arduino też. Używane w Arduino allocmem, o czym można nie wiedzieć bez analizy kodu źródłowego wykorzystanych bibliotek, jest proszeniem się o kłopoty. W ogóle używanie arduinowych bibliotek to proszenie się o kłopoty. Arduino, tak jak Windows, w kosmos nie poleci.
 
#7
Co się tak czepiasz? Nie wiem, co pokazywał oscyloskop nie wiem nic poza tym że wykonałem restart rpi i poszło. Nie interesowało mnie to bo to był jednorazowy wyskok Wink jakby mi się powtarzało to bym zaczął diagnozować a tak to nie potrzebuje bo wszystkie urządzenia mogą się zawiesić...

Wysłane z mojego Neffos Y5s przy użyciu Tapatalka
 
#8
(03-07-2019, 07:56)gavron7 napisał(a): Co się tak czepiasz?
Nie czepiam tylko pytam.

(03-07-2019, 07:56)gavron7 napisał(a): Nie wiem, co pokazywał oscyloskop
To błąd, bo w praktyce nic nie wiesz, poza tym, że masz źle wykonane urządzenie, na 99% soft.

(03-07-2019, 07:56)gavron7 napisał(a): wszystkie urządzenia mogą się zawiesić...
"Życzę" więc Ci aby zawiesił się ABS, sterownik poduszki powietrznej, układ kontroli trakcji, komputer pokładowy w nowoczesnym samolocie, komputer sterujący w elektrowni atomowej, komputer dozujący promieniowanie lecznicze (radioterapia), sterownik dozujący leki.
Natal twierdzisz, że "wszystkie urządzenia mogą się zawiesić..."?
 
#9
(03-07-2019, 07:56)gavron7 napisał(a): Co się tak czepiasz? Nie wiem, co pokazywał oscyloskop nie wiem nic poza tym że wykonałem restart rpi i poszło. Nie interesowało mnie to bo to był jednorazowy wyskok Wink jakby mi się powtarzało to bym zaczął diagnozować a tak to nie potrzebuje bo wszystkie urządzenia mogą się zawiesić...

Jak to "nie wiesz co pokazywał oscyloskop"? Amatorszczyzna Smile Powinieneś cofnąć się w czasie, podłączyć kabelki
i czekać na odpowiedni MOMENT. Ew zrób sobie drugi układ, który będzie sprawdzał czy DSy działają i jak stwierdzi,
że nie to zapisze na SD zapis z oscyloskopu... No chyba, że drugi układ się zawiesi...  Big Grin  Albo oscyloskop Smile

Ja mam na szczęście 5-6 termometrów - sytuacja, że przez kilka sekund wszystkie będą pokazywać niezmienną temperaturę jest nieprawdopodobna. Dopiszę więc funkcję sprawdzającą czy 2-3 pomiary się zmieniają - jeśli
nie to reset magistrali. Powinno załatwić "sprawę"... I mam gdzieś co lokalny psychopata o tym myśli Smile

PWL
 
#10
(03-07-2019, 18:20)PierwszyWolnyLogin napisał(a): I mam gdzieś co lokalny psychopata o tym myśli Smile
Kogo masz na myśli?
@gavron7?
Mnie?
Siebie chyba nie?


(03-07-2019, 18:20)PierwszyWolnyLogin napisał(a):
(03-07-2019, 07:56)gavron7 napisał(a): Co się tak czepiasz? Nie wiem, co pokazywał oscyloskop nie wiem nic poza tym że wykonałem restart rpi i poszło. Nie interesowało mnie to bo to był jednorazowy wyskok Wink jakby mi się powtarzało to bym zaczął diagnozować a tak to nie potrzebuje bo wszystkie urządzenia mogą się zawiesić...
Jak to "nie wiesz co pokazywał oscyloskop"? Amatorszczyzna Smile Powinieneś cofnąć się w czasie, podłączyć kabelki
i czekać na odpowiedni MOMENT. Ew zrób sobie drugi układ, który będzie sprawdzał czy DSy działają i jak stwierdzi,
że nie to zapisze na SD zapis z oscyloskopu... No chyba, że drugi układ się zawiesi...  Big Grin  Albo oscyloskop Smile
Typowe myślenie amatorów.
Jakbyś potrafił myśleć jak profesjonalista a nie amator, to wiedziałbyś, ze można podłączyć sprzęt, gdy program "wisi". Cóż, dlugaaaaa nauka jest potrzebna i nie zastąpi jej chodzenie do szkoły!

(03-07-2019, 18:20)PierwszyWolnyLogin napisał(a): Ja mam na szczęście 5-6 termometrów - sytuacja, że przez kilka sekund wszystkie będą pokazywać niezmienną temperaturę jest nieprawdopodobna. Dopiszę więc funkcję sprawdzającą czy 2-3 pomiary się zmieniają - jeśli nie to reset magistrali. Powinno załatwić "sprawę".
W amatorszczyźnie dopuszczalne, w komercji, to byłby to pewnie ostatni projekt, który sprzedałeś, chyba, ze do żółtych przyjaciół, oni na tą chwile biorą wszystko co tanie, dobre nie musi być.
 
  


Skocz do:


Przeglądający: 2 gości