Skocz do zawartości

Zawieszanie arduino nano(klon), jestem amatorem szukam wskazówek/wsparcia w małym projekcie


czvrnymat

Pomocna odpowiedź

(edytowany)

@farmaceuta @czvrnymat program nie działa bo jest jeszcze kilka błędów w programie, np: zapis i odczyt zmiennych w przerwaniu i w loop. To powinno się odbywać atomowo, no chyba że Arduino to jakoś z automatu ogarnia. No i kilka błędów w logice działania pętli głównej. Myślę że dogłębna analiza tego kodu ujawni błędy. 

Edytowano przez _LM_
Link do komentarza
Share on other sites

Wgrałem ten ostatni kod bez przerwań do swojego Arduino, dodałem jeszcze miganie led co 100ms, wydruk trwania funkcji display(), biblioteka ustawia sobie zegar na 400kHz, trwa to 37ms, można jeszcze podkręcić na 800k, wyrabia się wtedy w 25ms. Ale nic mi się nie wiesza.  

Jeśliby mi się wieszało, to podejrzewałbym mało RAM, kojarzę, że ta biblioteka robiła bufor na cały ekran, to zajmowało 1024B, połowę, ale teraz tego nie widzę,  kod zajmuje poniżej 700B RAM, chyba że robi ten bufor potem w funkcji. No ale jednak się nie wiesza.

Kod oczywiście jest daleki od ideału, ale głównego problemu szukaj w swojej konstrukcji.

 

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie podłączyłem przycisków, ale pod 5 i 6 podłączyłem kable, jak zwieram na jakiś czas do GND to ekran się przełącza na różne widoki, raczej nie w zamierzony sposób, ale ciągle działa. Nie masz tam żadnej biblioteki do przycisków, użyj bounce2, easy button, one button, jest tego na pęczki.

  • Lubię! 1
Link do komentarza
Share on other sites

9 minut temu, czvrnymat napisał:

@_LM_ podpowiedz co moge zmienic/jak zmienic, glownie jezeli chodzi o przerwania

Generalnie to nie potrzebujesz wcale przerwania...przy tych zawrotnych prędkościach kod i tak wykona się tysiąc razy szybciej niż jeden obrót koła...powinieneś bardziej ten kod "posegregować", w jednym miejscu wyświetlanie, w innym obliczenia, jeszcze w innym zmiana trybów etc...poczytaj o swoich case, kod jest dużo czytelniejszy 

  • Lubię! 1
Link do komentarza
Share on other sites

no zastanawialem sie, jak to bedzie dzialalo bez przerwan. Co jesli czujnik indukcyjny wykryje szpilke w piascie akurat w takim pechowym momencie kiedy kod wchodzi w ktoregos z if’ów.

Co do swich case, nie zrobilem go od poczatku poniewaz dopiero później stwierdziłem ze fajnie by bylo idczytywac jeszcze dystans a nie tylko blokowac mozliwosc zliczania arealu, i wyboru szerokosci roboczej.

Wiadomo bez watpienia, arduino to dopiero poczatki, poszedlem na air, ale musze powoli sie jakos uczyc i osc do przodu. Dziekuje za wszystkie rady, a i tak wiem kazdy mowi nie baw sie zabawkami(arduino) zacznij od stm32, tyle ze ja jestem totalnym laikiem a od czegos trzeba bylo zaczac.

 

Wracajac do tematu obowiam sie ze mam wadliwą plytke, jezeli kolega @kaczakat uruchomil program bez zbednych problemow, a u mnie ciagle blokady i inne takie. Sorawdzalem rowniez caly ten kod w orzegladarce na symulatorzearduino. i wszyskto pieknie dzialalo. 

 

Jedyne co pozostaje to kupic 3 plytke arduino nano, tylko tym razem chyba oryginal

Link do komentarza
Share on other sites

(edytowany)
28 minut temu, czvrnymat napisał:

no zastanawialem sie, jak to bedzie dzialalo bez przerwan. Co jesli czujnik indukcyjny wykryje szpilke w piascie akurat w takim pechowym momencie kiedy kod wchodzi w ktoregos z if’ów.

Czujnik daje tylko impuls, czy jest w stanie high/low dopóki w pobliżu jest magnes? Jeśli to drugie to na pewno zdąrzy wykryć stan...(dopóki nie dodasz żadnych pętli czy delay) 

28 minut temu, czvrnymat napisał:

Co do swich case, nie zrobilem go od poczatku poniewaz dopiero później stwierdziłem ze fajnie by bylo idczytywac jeszcze dystans a nie tylko blokowac mozliwosc zliczania arealu, i wyboru szerokosci roboczej.

Swoich case daje Ci właśnie takie możliwości, trzeba tylko zrozumieć koncepcję 

28 minut temu, czvrnymat napisał:

i tak wiem kazdy mowi nie baw sie zabawkami(arduino) zacznij od stm32, tyle ze ja jestem totalnym laikiem a od czegos trzeba bylo zaczac.

I Dobrze zacząłeś...gdybyś zaczął od stm32 szybko mógł byś się zniechęcić bo są one o wiele bardziej skomplikowane niż Arduino...A samo Arduino też taką zabawką znowu nie jest bo możesz robić na nim naprawdę fajne rzeczy 

28 minut temu, czvrnymat napisał:

 

 

28 minut temu, czvrnymat napisał:

@kaczakat

Jedyne co pozostaje to kupic 3 plytke arduino nano, tylko tym razem chyba oryginal

To nie to...napewno nie masz takiego pecha...może masz jakieś zakłócenia, problemy z zasilaniem, może ten czujnik indukcyjny zakłóca? 

Edytowano przez farmaceuta
Link do komentarza
Share on other sites

(edytowany)
14 minut temu, farmaceuta napisał:

Czujnik daje tylko impuls, czy jest w stanie high/łów dopóki w pobliżu jest magnes? Jeśli to drugie to na pewno zdarzy wykryć stan...(dopóki nie dodasz żadnych pętli czy delay) 

czujnik jest NO, ze stanem wysokim, zas przy wykryciu stali z ok.2-3mm stan z przewodu sygnalowego jest juz niski, przy 6v okolo 0,5v, wiec i tak potrzebny jest jakis dzielnik napiecia do obmiezenia napiecia, zas przy zasilaniu 12v gdy wykryje przeszkodę napiecie wynosi ok. 1.5v

 

14 minut temu, farmaceuta napisał:

Swoich case daje Ci właśnie takie możliwości, trzeba tylko zrozumieć koncepcję 

29 minut temu, czvrnymat napisał:

pozmieniam to jutro, przynajmniej sprobuje

14 minut temu, farmaceuta napisał:

To nie to...napewno nie masz takiego pecha...może masz jakieś zakłócenia, problemy z zasilaniem, może ten czujnik indukcyjny zakłóca? 

bardzo ciezko jest mi stwierdzic, nie wiem jeszxze jakimi narzedziami/sposobami sie poslugiwac zeby wykrywac takie rzeczy. 

Czujnik odlaczylem juz calkowicie wraz wywaleniem z kodu przerwan ifunkcji za niego odpowiedzialnej, 

zasilanie narazie idzie prosto z przewodu podlaczonego do laptopa, kiedy program wydawal mi sie ze dziala, podlaczylem go do zasilacza wtedy tez jeszxze dzialalo

Najwieksze problemy sie zaczely jak spalilem wyswietlacz, kupilem nowy, potem przyszla nowa plytka, i od momentu spalenia wyswietlacza dzieją sie cuda

 

Edytowano przez czvrnymat
Link do komentarza
Share on other sites

odgrzewam kotleta!!

czy myslicie ze jedyny problem jaki mogl wystapic to poprostu podlaczenie wysiwettlacza za pomoca 35cm przewodu? tylko to mi przychodzi do glowy po rozlutowaniu calego ulladu i wlozeniu go w plytke stykową, po czym oczywiscie wszystko zaczęło dzialac 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.