Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 6 kwi 2026, o 17:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 8 gru 2015, o 17:51 
Offline
Użytkownik

Dołączył(a): 28 cze 2014
Posty: 37
Lokalizacja: Gdańsk
Pomógł: 0

Witam. Miałem działający program, potem dodałem nowe biblioteki i przestał działać jak należy. Po "wyrywaniu włosów z głowy" postanowiłem przepisać go od nowa i tak sie zdarzyło, że zmieniłem kolejność nagłówków. Zaczęło działać, więc w ten sposób odkryłem, że przyczyną była zła kolejność nagłówków. Zostawiłem i nie pisałem już na forum. Niestety dopisałem kolejne bibioteki i mam ten sam problem, z tym, że nie pamiętam jaka była poprawna kolejność i nawet jak usunąłem te nowe biblioteki to nie mogę wrócić do poprzedniego stanu. Wydaje mi się jasne, że jako pierwsze dodaje biblioteki, z których będą korzystać następne, a jednak nie działa... Bardzo proszę o pomoc. Oto kod main.c:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


RS i parsowanie danych działa poprawnie. Problem jest z I2C i MPU. Dostaje błędne wartości na terminalu, prawie cały czas zero( czasem się zmienia, na jakieś 1,2... - gdzie powinien pokazywać np. 40 )

_________________
Zapraszam na bloga: http://www.embeddeddev.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2015, o 18:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Najpierw inkluduje sie biblioteki standardowe < > pozniej wlasne " "

Namazane ze smarta.


Autor postu otrzymał pochwałę

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2015, o 18:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

o panie - jak ty robisz z kodu a szczególnie z inkludowania tzw "mieszankę tyrolską" albo inaczej mówiąc "pasztetową" to ja się nie dziwię - program ma czkawkę albo nawet wymioty ;)

Ja nawet nie będę (sorki) analizował tak niedbale nachlastanego kodu - bo ciężko o tym cokolwiek innego powiedzieć (nie obraź się)

A już nie wspomnę - że masz cudowny pomysł alby w pętli głównej programu MILIARD razy na sekundę czytać wciąż czy tam zapisywać I2C

Podobnie z RS232

to po co ci w ogóle ten timer programowy ? hmmm ? a zresztą - nie dość tego jeszcze timer programowy odpaliłeś co 1 ms ..... !?!?

Niestety ale przy tak napisanym kodzie - to już nawet nie ważna kolejność bibliotek ale to nie dziwne że to nie działa albo raz działa coś tam a w większości nie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2015, o 19:10 
Offline
Użytkownik

Dołączył(a): 28 cze 2014
Posty: 37
Lokalizacja: Gdańsk
Pomógł: 0

Zaincludowałem biblioteki tak jak napisał majster.
Panie Mirku, oczywiście się nie obrażam, mam świadomość, że mój kod może być kiepski. Od niedawna interesuje się procesorami, a zacząłem programować dopiero wtedy. Co do I2C, chciałem do tego wykorzystać przerwania zewnętrzne, ale niestety nie działało, więc zostawiłem tak jak jest( miałem wrócić do tego później ). Timer programowy odpaliłem co 10ms, ponieważ co tyle ma być wywoływana funkcja complementary_filter(), żeby wyniki obliczeń były poprawne. Przerzuciłem uart_putint() i uart_puts(), do timera programowego. Niestety dalej nie działa. Kiedy przestało działać zmieniałem tylko kolejność biblotek własnych, a reszta była taka jak w kodzie wyżej. Chcę, żeby to znowu ruszyło i potem postaram się to jakoś zoptymalizować, bo na razie robiąc zmiany w kodzie, a mając złą kolejność nagłówków albo inny błąd, nie mogę zweryfkować czy te zmiany coś dają...

_________________
Zapraszam na bloga: http://www.embeddeddev.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2015, o 19:16 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

Kolejność ma być taka:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Najpierw systemowe, później Twoje biblioteki.

Jeśli raz "działa a raz nie", to pewnie we włączanych nagłówkach nie masz strażników.
https://en.wikipedia.org/wiki/Include_guard

Zdefiniuj te makra strażnicze tak jak to masz podane w wikipedi albo w pierwszym wierszu pliku *.h umieść:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z tą ostatnią propozycją zakładam że nie masz jakiegoś bardzo "przedpotopowego" kompilatora :-)

Następnie zajmij się programem bo... źle się z nim dzieje....


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2015, o 20:12 
Offline
Użytkownik

Dołączył(a): 28 cze 2014
Posty: 37
Lokalizacja: Gdańsk
Pomógł: 0

florekSi, dziękuję Ci bardzo za konkretną odpowiedź, o to mi chodziło. Makra miałem, kolejność potem też. Błędem okazało się zupełnie co innego... chyba muszę się w końcu wyspać, bo nie myślę. Nowe biblioteki i modyfikacje robiłem bez procesora w pociągu, dlatego nie mogłem ich sprawdzać na bieżąco. Stąd po powrocie do domu byłem pewny, że winą jest kod. Ale jednocześnie ze zmianą oprogramowania, zamocowałem elektronike na robocie. Okazało się, że MPU było w złej płaszczyźnie... stąd to 0,-1,2, itp na terminalu. W każdym razie, dobrze się stało, że napisałem, bo wiem, że muszę jeszcze porządnie popracować z kodem. Dzięki za odpowiedzi. Pozdrawiam :)

_________________
Zapraszam na bloga: http://www.embeddeddev.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2015, o 21:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

majster napisał(a):
Najpierw inkluduje sie biblioteki standardowe < > pozniej wlasne " "

Namazane ze smarta.



Nie zapomnij już nigdy też o tym że:

najpierw includujesz biblioteki standardowe a później własne

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO