Aktywne Wpisy
sylwke3100 +772
Amerykanie pownni posłuchać naszych geniuszy (szczególnie tych z wykopu) i zlikwidować te krzaczory w najdroższej lokalizacji w mieście oraz sprzedać wszystko deweloperom.
Nie może być tak że emeryci, młodzi oraz ogólnie mieszkańcy sobie gdzieś odpoczywają i tak marnują przestrzeń która kosztuje pewnie dziesiątki jak nie setki tys dolarów za m2 i oszpeca te piękne wieżowce.
#nieruchomosci #deweloperka #rod #pdk
Nie może być tak że emeryci, młodzi oraz ogólnie mieszkańcy sobie gdzieś odpoczywają i tak marnują przestrzeń która kosztuje pewnie dziesiątki jak nie setki tys dolarów za m2 i oszpeca te piękne wieżowce.
#nieruchomosci #deweloperka #rod #pdk
Metodzik +293
=====================[DARMOWA GRA NA GOG]===================
FlatOut za D̲A̲R̲M̲O̲ w GOG
OCENA
METASCORE: 71 / USER SCORE 7.7
STEAM: Bardzo pozytywne (4,033 ocen)
DATA WYDANIA: 7 grudnia 2005
AKTUALNE❗ do 17.02 godzina 15:00
Jeżeli chcesz chcesz być dodany/a do listy osób wołanych z tagu #metodzikpoleca epic zapraszam do plusowania TEGO WPISU oraz obserwowania. Znalezione informację dotyczące nowych darmowych ofert będą na bieżąco dodawane. Jest też tam informacja jak się usunąć z listy
FlatOut za D̲A̲R̲M̲O̲ w GOG
OCENA
METASCORE: 71 / USER SCORE 7.7
STEAM: Bardzo pozytywne (4,033 ocen)
DATA WYDANIA: 7 grudnia 2005
AKTUALNE❗ do 17.02 godzina 15:00
Jeżeli chcesz chcesz być dodany/a do listy osób wołanych z tagu #metodzikpoleca epic zapraszam do plusowania TEGO WPISU oraz obserwowania. Znalezione informację dotyczące nowych darmowych ofert będą na bieżąco dodawane. Jest też tam informacja jak się usunąć z listy
Siema Mirki, mam problem z programem na mikrokontroler PIC od Microchip. Generalnie rozchodzi się działania na zmiennych float. Mojemu ośmiobitowemu karakanowi zajmuje to za dużo czasu, przez co nie wyrabiam się w przerwaniu z obliczeniem regulatora. Miał ktoś kiedyś do czynienia z podobnym problemem i wie jak to obejść?
W obliczeniach zastępuj volty milivoltami, sekundy milisekundami itd.
np.
float voltage = 1.5 //V
zamień na
uint16_t voltage=1500 //mV
Jak wypisujesz to przez UART/na wyświetlacz, to rób tak:
printf("voltage= %u.%uV\n", voltage/1000, voltage%1000)
i dostaniesz
Masz tu ATMELowska notę aplikacyjną:
http://www.atmel.com/Images/Atmel-2558-Discrete-PID-Controller-on-tinyAVR-and-megaAVR_ApplicationNote_AVR221.pdf
i chyba kod regulatora z tego przykładu:
https://homepages.uni-regensburg.de/~erc24492/PID-Regler/AVR221/IAR/doxygen/pid_8c.html
Jeśli nie to szukaj tu:
http://start.atmel.com/#examples
Postaraj się przerobić pod siebie.
Albo taka moja pierwsza myśl:
y(k) = 0.007155e(k) - 0.0032e(k-1) - 0.003955e(k-2) + 2y(k-1) - y(k-2)
Rozpisz to tak:
y(k) = (7155*e(k) ) /10^6 - (32*e(k-1)) / 10^4 - (3955*e(k-2) )/ 10^6 + 2y(k-1) - y(k-2)
W sensie -
Oj, to żeby było szybciej, to albo szybsze taktowanie mikrokontrolera - inny kwarc, jak się da, albo ostatecznie wstawka assemblerowa, choć kompilatory dobrze optymalizują kod i cudów bym się nie spodziewał.
Sprawdź jeszcze czy w kompilatorze którego używasz masz poziomy optymalizacji. Nie znam się na PICach i nie wiem jakiego kompilatora tam sie używa.
W gcc masz poziomy od O0 do O3 albo Os z naciskiem na
switch(quater)
{
case 1:
Uref = 200 + sinus[phi];
break;
case 2:
Uref = 200 + sinus[99-phi];
break;
case 3:
Uref = 200 - sinus[phi];
break;
case 4:
Uref = 200 - sinus[99 - phi];
break;
default:
break;
}
e = Uref - Ur;
y = (((e<<5)+(e<<4)+(e<<3)+(e<<1)+e) - ((eprev<<4)+(eprev<<3)+(eprev<<1)) - ((eprev2<<5)+eprev2))>>13 + (yprev << 1) - yprev2;
if (y>=400)
y = 400;
else if
Dzielenie przez potęgi 2 możesz zrobić shiftując wartość w prawo, ale chyba to marna pociecha.
Jeszcze tak przy okazji.
if (phi >= 99)
{
if(quater == 4)
quater = 0;
phi = 0;
quater++;
}
else;
Może się mylę, ale jak quater dojdzie do 4, to po przejściu tego if'a jego wartość będzie 1 a nie 0. A chyba chcesz żeby szło po kolei.
Ja bym dał takie coś:
EDIT:
A nie. To tak miało być. Ewentualnie możesz zastąpić tak: