Wpis z mikrobloga

http://pastebin.com/tVxVg1ZH

Nie mam pojęcia co tu się #!$%@?, ale ten kawałek kodu resetuje mi w kółko mikrokontroler. Wywoluje tu funkcje na pobieranie temperatury z czujnika ds18b20 przy użyciu załączonej biblioteki, a następnie zwracam prędkość dźwięku w tej temp.
Dodałem dupa-printy do środka i wychodzi, że całość działa, ale się wywala przy returnie, bo print "dupa1-1" pojawia się, ale "dupa2" juz nie (_ )

#arduino #avr #atmega #mikrokontrolery
  • 25
@Atraktor: Szczerze nie widzę nic co mogło by popsuć program. Jeżeli chodzi o typy zmiennych skoro dupa1-1 jest zwracane to dziwne żeby dalej się wywołało. Nie wiem jak to jest z bibliotekami arduino czy watchdog nie jest wlaczony? I wywala się na delay?
@WasylWasaty: delay nie ma tu wplywu, dodalem je tylko zeby zdazyc zobaczyc na wyswietlaczu co się dzieje. Jak wywale wszystkie delaye i printy to tylko widze, że Atmega w kolko mi inicjalizuje wyswietlacz. Wyglada jakby pamięć się wyjebywała przy returnie, ale czy to w ogóle możliwe? Jakiś overflow?
@wik5: tak, zresztą zakres zmiennej na pewno nie jest tu winny, bo przerabiałem też problemy z nimi. Na wyniku tu będzie liczba +/- 35000, gdzie unsigned int ma zakres do 65535. No i w przypadku ew przekroczenia po prostu dostałbym błędny wynik, a nie reset
@Atraktor: 1. na 100% wykluczyłeś problem sprzętowy, typu wiszący pin resetu? (chyba że w arduino nie ma takiego czegoś) 2. Próbowałeś wyrzucić z funkcji sam pomiar i podstawić jakąś liczbę na sztywno? 3. jak dasz kolejną dupę za ostatnim delayem to ją zobaczysz czy nie?
@kao3991: tak,tak,tak. Wystarczy taki kod i już resetuje mikro. Jeśli wykomentuję wywolanie sensor.getAddress a zamiast tego wpiszę do zmiennej ta np 40 to wszystko działa.

unsigned int GetSpeedOfSound(void)
{
uint8_t t_a;
sensor.getAddress(&t_a,0);
return 34321;
}