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



Teraz jest 13 maja 2026, o 07:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 1 kwi 2014, o 23:20 
Offline
Nowy

Dołączył(a): 16 sie 2012
Posty: 15
Pomógł: 0

Cześć, mam taki problem, że wymieniony w temacie uC zawiesza mi się w funkcji która wygląda tak:
Kod:
void pidKontroler( Dane_Katy *Zadany_Kat, Dane_Katy *Zmierzony_Kat, Poprzedni_Blad *Poprzedni_Blad, Dane_PID *DanePid)
{
   int16_t BladPitch=1;
   int16_t RozniczkaPitch=0;

   int16_t BladRoll=1;
   int16_t RozniczkaRoll=0;

   BladPitch=Zadany_Kat->Pitch-Zmierzony_Kat->Pitch;
   BladRoll=Zadany_Kat->Roll-Zmierzony_Kat->Roll;

   RozniczkaPitch=(BladPitch-Poprzedni_Blad->Pitch)/dt;
   RozniczkaRoll=(BladRoll-Poprzedni_Blad->Roll)/dt;

   DanePid->Pitch=(KP*BladPitch)+(KD*RozniczkaPitch);
   DanePid->Roll=(KP*BladRoll)+(KD*RozniczkaRoll);

}

Zastanawiam się czy to przez dużą ilość przekazywanych adresów do funkcji:
Kod:
pidKontroler(&ZadaneKaty, &ZmierzoneKaty, &PoprzedniBlad, &DanePid);

Dodam że jak tej funkcji nie ma to wszystko działa ;) Jakieś sugestie czego to wina? Atmega taktowana 16MHz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 07:46 

Pomógł: 0

Sam bym zaczął od wrzucenia "Mirkowego Myku" z diodą, czyli do jakiegoś wolnego pinu podłączasz diodę, a potem ustawiasz ją by świeciła w przed funkcją którą podejrzewasz o wywalanie programu, następnie gdzieś za funkcją robisz gaszenie diody ;).
Wtedy samo zaświecenie przesuwasz dowolnie po funkcji, jak ci będzie świecić stale to masz miejsce gdzie się program wykłada.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 10:59 
Offline
Moderator
Avatar użytkownika

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

Dokładnie - tzw "debuger na jednej diodzie LED" , kilka prób i znajdziesz sam DOKŁADNE miejsce ;)

_________________
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: 2 kwi 2014, o 11:24 
Offline
Nowy

Dołączył(a): 16 sie 2012
Posty: 15
Pomógł: 0

Właśnie to już zastosowałem, dlatego wrzuciłem ten fragment kodu i nie mam pomysłu co ATmedze się w nim nie podoba :( Jak tą funkcję zakomentuje to wszystko hula no ale brak sterowania ;) Sprawdziłem jeszcze dokładniej i zawiesza się w tym miejscu:
Kod:
DanePid->Pitch=(KP*BladPitch)+(KD*RozniczkaPitch);
   DanePid->Roll= (KP*BladRoll)+(KD*RozniczkaRoll);


I jeszcze jedne pomysł mi przyszedł czemu może się program wieszać czy przerywanie może przeszkadzać w ustawianiu pwm dla silników?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 15:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Witam.
Wiem, że gdzieś na forum była o tym mowa, ale nie mogę tego znaleźć, dokładnie mam na myśli ten operator ->. Czy ktoś mógłby napisać o nim coś więcej? Co on robi itd itd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 16:57 
Offline
Nowy

Dołączył(a): 30 wrz 2012
Posty: 15
Pomógł: 0

kaka0204 napisał(a):
Witam.
Wiem, że gdzieś na forum była o tym mowa, ale nie mogę tego znaleźć, dokładnie mam na myśli ten operator ->. Czy ktoś mógłby napisać o nim coś więcej? Co on robi itd itd.

Jest to operator wyłuskania dla wskaźnika.
Tzn to samo co kropka w operacji cos.element = 1; tylko w przypadku kiedy cos jest wskaźnikiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 17:04 
Offline
Moderator
Avatar użytkownika

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

ElektronikKr napisał(a):
w przypadku kiedy cos jest wskaźnikiem.


W przypadku gdy mamy wskaźnik do struktury.

Czyli wtedy zamiast odwoływać się do jej pól za pomocą kropki jak pisał kolega wyżej, to odwołujemy się za pomocą strzałki ;)

_________________
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: 2 kwi 2014, o 18:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Dzięki bardzo za wyjaśnienie :)



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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