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



Teraz jest 24 kwi 2026, o 12:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 2 lut 2016, o 20:18 
Offline
Nowy

Dołączył(a): 10 mar 2015
Posty: 9
Pomógł: 0

Witam,
czy jest jakiś sposób by w przerwaniu wykonać operacje na zmiennych niecałkowitych? Może jest jakiś trik który to umożliwia?
pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2016, o 20:47 
Offline
Moderator
Avatar użytkownika

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

Tak jest taki trik i bardzo prosty, wystarczy dwa punkty zastosować

1. przenieść obliczenia do programu poza przerwania (jeśli już muszą być zmiennoprzecinkowe)
2. zastosować obliczenia w oparciu o liczby całkowite - też się da

_________________
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 lut 2016, o 22:02 
Offline
Nowy

Dołączył(a): 10 mar 2015
Posty: 9
Pomógł: 0

cóż, niestety obliczenia muszą być koniecznie wykonywane w przerwaniu i niestety przeskalowanie wszystkiego na liczby całkowite też nie zdaje egzaminu...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2016, o 22:33 
Offline
Moderator
Avatar użytkownika

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

A ja ci mówię, że nie muszą być koniecznie w przerwaniu. To że tak mówisz pokazuje tylko jedno - że nie widzisz innych rozwiązań i to jest twój problem.

_________________
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 lut 2016, o 23:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

lorddran napisał(a):
obliczenia muszą być koniecznie wykonywane w przerwaniu

mirekk36 napisał(a):
A ja ci mówię, że nie muszą być koniecznie w przerwaniu.

...a tak z ciekawości - o które linijki kodu jest ta sprzeczka? :)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2016, o 23:22 
Offline
Moderator
Avatar użytkownika

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

kicajek napisał(a):
...a tak z ciekawości - o które linijki kodu jest ta sprzeczka?

To jest najciekawsze ;) .... bo jak na razie nikt nie wie o jakie linijki kodu chodzi ....

_________________
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: 3 lut 2016, o 00:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Hmmm, też próbuję ogarnąć co to za obliczenia, że nie można ich rozbić na liczby całkowite i robić poza przerwaniem... chętnie zapoznam się z problemem :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 00:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2012
Posty: 193
Pomógł: 6

A moze zdarzymy policzyc jakis zmiennyprzecinek w przerwaniu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 18:52 
Offline
Nowy

Dołączył(a): 10 mar 2015
Posty: 9
Pomógł: 0

Dlaczego musi być w przerwaniu? Dlatego, że jest to regulator PI i ważne jest dla mnie by obliczenia i wysyłanie wartości dla PWM odbywały się w tym samym czasie. A dlaczego nie można przeskalować? Cóż, albo robię coś źle, albo nie można bo regulator przestaje działać gdy próbuję przemnożyć wszystkie wartości...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Wykorzystuje przerwanie TIMER1_OVF_vect do wykonania pomiaru wartości prądu i w tym przerwaniu chciałbym dodać cały algorytm regulatora PI.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 20:19 
Offline
Moderator
Avatar użytkownika

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

lorddran napisał(a):
Dlaczego musi być w przerwaniu? Dlatego, że jest to regulator PI

No to sobie kolega powód wymyślił - tak jak myślałem ..... Więc jeszcze raz na spokojnie ci powiem - to nie musi być w przerwaniu

_________________
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: 3 lut 2016, o 20:50 
Offline
Nowy

Dołączył(a): 10 mar 2015
Posty: 9
Pomógł: 0

Źle się wyraziłem. Prawdą jest, że nie trzeba wykonywać algorytmu regulatora w przerwaniu. W wersji programu gdzie funkcja regulatora jest w pętli głównej, a w przerwaniu tylko pomiar - wszystko działa i ma się świetnie. Jednak chciałbym mieć pewność, że dla każdego pomiaru wyliczona będzie odpowiednia wartość z regulatora. Chcę też, by obliczanie wykonywane było zaraz po wykonaniu pomiaru. Tak więc nie musi, ale jednak "chcę i to bardzo" ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 20:51 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 224
Lokalizacja: Opole
Pomógł: 24

W przerwaniu możesz zmieniać tylko flagę xor`em i odczytywać ją w pętli while.

Np.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 21:06 
Offline
Nowy

Dołączył(a): 10 mar 2015
Posty: 9
Pomógł: 0

Tak, jednak wtedy program wraca do miejsca, w którym był gdy zaczynało się przerwanie, a nie do miejsca w którym rozpoczyna się algorytm regulatora. Ja natomiast chcę by zaraz po pomiarze (który wykonuje się w przerwaniu) odbywało się liczenie nowej wartości dla PWM.

Czy jest możliwość, żeby po przerwaniu zacząć realizować pętle główną od wybranego przeze mnie miejsca?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 22:09 
Offline
Moderator
Avatar użytkownika

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

lorddran napisał(a):
Tak, jednak wtedy program wraca do miejsca, w którym był gdy zaczynało się przerwanie, a nie do miejsca w którym rozpoczyna się algorytm regulatora. Ja natomiast chcę by zaraz po pomiarze (który wykonuje się w przerwaniu) odbywało się liczenie nowej wartości dla PWM.

Dlatego panie kolego proponuję ci zacząć naukę technik programowania np z tej książki:
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

wtedy zrozumiesz, że to co piszesz
lorddran napisał(a):
Tak, jednak wtedy program wraca do miejsca, w którym był gdy zaczynało się przerwanie, a nie do miejsca w którym rozpoczyna się algorytm regulatora. .

jest po prostu jakąś totalną niedorzecznością ....

Mówię ci warto poznać podstawowe techniki programowania - nawet najprostszy mechanizm flagi o której wspomina wyżej jeden z kolegów.... I szybko przestaniesz mówić, że program gdzieś tam indziej wraca niż ty tego oczekujesz... To ty programujesz i program działa tak jak chce programista - a nie tak jak mu się akurat wyda za stosowne

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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