Spróbuj może przekopiować to do osobnej tablicy znaków (zakończonej znakiem '/0') i użyć funkcji atof() z stdlib.h.
Sprawdziłem i faktycznie wchodzi w HardFault... W dodatku przy debugowaniu wysypują się jescze takie błedy [syntax=c] Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xb087b8 Error: JTAG-DP STICKY ERROR Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xb087b8 Warn : Block read error address 0xb087b4 Error: JTAG-DP STICKY ERROR Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR...
Dzięki za odpowiedzi! Zainstalowałem najnowszą wersję OpenOCD v0.5. Trochę zmieniły się komunikaty, jednak błąd jest cały czas podobny... Poniżej wklejam treść: Info : only one transport option; autoselect 'jtag' 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 Info : clock speed 1000 kHz Info : JTAG tap: stm32.cpu tap/device...
Myślę że bład jest zupełnie gdzie indziej. Parametry są tak przekazywane jak być powinny. Nie szukaj błedu kompilatora. To nie przeszkadza ale 2.454545 o ile nie zdefiniowałeś flagi -fsingle-precision-constant to double a nie float.
Nienazwany "STM32" może to robić softwarowo w setkach cykli Nazwany - H7 ma FPU operujące na double Uprzedziłeś mnie. Unia jest idealnym narzędziem do tego tematu. Nie jest.
Mam problem z wysłaniem komendy i odbioru wartość 16bit w urządzeniu. Sprawa wygląda tak: Przez aplikacje napisaną w C# wpf komunikuję się z urządzeniem. Mam tam Slider który ma sterować przetwornikiem DAC 16bit. Komunikacja po SPI. Wzorowałem się na stronie: [url=https://forum.arduino.cc/index.php?... W obecnej chwili działa mi on ale...
double buffering rozwiąże tylko problem z jednoczesnym wyświetlaniem, jednak zdecydowana większość ciekłokrystalicznych wyświetlaczy graficznych ma tak żałosne odświeżanie, że jak chcesz zmieniać na nim parametry całościowo częściej niż nawet co sekundę to będzie smużył
W wyglądzie powinno działać. Radzę kupić debuggera. Ponieważ łatwiej jest pracować. https://ru.aliexpress.com/item/ARM-Emula... To prawda, że istnieją ustawienia niuanse https://www.segger.com/nxp-lpcxpresso.ht... ale warto.
Remove capacitor on NRTS? CPU is new, never programed? Yes, it's new MCU, freshly mounted after ariving from farnell. I refered to http://www.st.com/st-web-ui/static/activ... while designing reset button, is it wrong and the capacitor needs to be removed? I just look on discovery schematic, it's...
Niestety tutaj nic się nie da poradzić. Bez double bufferingu (czyli tego drugiego bufora) będzie migało. No chyba że narysowanie nowej wskazówki i w ogóle całego tła procesor zdążył by zrobić pomiędzy wyświetleniami kolejnych klatek. Może pokaż rysunek tła i wskazówki. Jeżeli wskazówka ma dostatecznie małą powierzchnię to jest jeszcze jeden sposób...
W CodeSourcery (a raczej w newlibie) nie ma dtostr() tak samo jak nie ma np. itoa(). Są inne funkcje konwertujące double/float to stringa, ale są równie rozbudowane jak sprintf() (syscalls). 4\/3!!
Witam Mam problem z prawidłowym skomunikowaniem się z prockiem STM32F100. Używam JTAG-a ARM-USB-OCD i OpenOCD. Inne STM32 mi chodzą bez problemów (testowałem na kilku różnych 103 i 107). Może ma ktoś jakieś doświadczenia z tym związane. OpenOCD pluje : Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports,...
Ja nie wiem co tu kogo dziwi. Tablicę do której formatujesz dane masz na stosie w przerwaniu. Tablicę tą przekazujesz do nieblokującej funkcji, która rozpoczyna transfer przez UART. Następnie wychodzisz z przerwania, tablica przestaje istnieć, a UART sobie dalej z niej odczytuje dane... Dodano po 30 Nie wiemy nic o typie uC. Jeśli nie jest to Cortex-M4,...
Ale bez tych flag linker wywala błąd, bo libc,libgcc je potrzebują. Zresztą kompilator nie używa instrukcji vfp, bo gdyby używał to miałbym błąd związany z brakiem koprocesora. A tu operacje zmiennoprzecinkowe nie działają wtedy, gdy argumentami są liczby double inicjowane w sekcji .data. Na liczbach całkowitych działają poprawnie.
Czy mozna w tym CoIDE jakos korzystać z bibliotek innych firm, czy raczej nie bardzo? Np. z bibliotek Keil uVision? Dodano po 1 Dalej nie odpowiedziałeśna pytanie czy masz wogóle obsługe liczb zmienno przecinkowych. To znaczy jak? To trzeba gdzieś ustawić? włączyć? Robiłem takie rzeczy jak np.: float a = 123.5; float b; b = log20(a); albo: double a;...
Marcys - czytaj RM-a i zrób to na logikę. I2C b. ladnie pracuje z DMA. Zobacz sobie poradnik kolegi szczywronka (jak uzywac generalnie DMA). W pierwszych próbach nie kombinuj z double buffer itp. Jezeli jestes sprawny w C to zzajmie Ci to z próbami godzinkę w najgorszym razie.
Zieleń stąd, że metoda jest błędna. Chcąc dokonać takiego przekształcenia musisz dokonać konwersji RGB na szarość, lub liczyć każdą składową oddzielnie. Bo w Twoim wypadku różnica otrzymana we wzorze double p = p1 - (p2 + p3 + p4 + p5); jest zależna od koloru. Załóżmy, że tylko p2 różni się od p1. Jeśli różni się składowa G to wynik jest zupełnie inny,...
Witam, Jestem dość początkujący jeśli chodzi o STMy dlatego proszę o wyrozumiałość. Do pamięci flash procesora wrzuciłem kod, który prawdopodobnie zawiesza procesor. Od tego momentu nie mogę się połączyć z uC używając OpenOCD. Komunikat j/n: D:\ARM\openocd-0.5.0\bin>openocd-... -f interface/olimex-arm-usb-ocd.cfg - f target/stm32f1x.cfg...
Witam, próbuje znaleźć dobry sposób na pomiar amplitudy impulsu PWM. Zakres zmian wypełnienia 5 % do 95 %. Czestotliwosc sygnalu sie nie zmienia i wynosi 1 KHz. Mój pomysł polega na tym, że po wychwyceniu zbocza narastajacego odpalam ( w przerwaniu od input capture) timer ktory co 10 us ( 5 % z 1 ms to 50 us) trigeruje pomiar ADC poprzez DMA (czyli...
Trochę nie składnie to napisałem, ale przy pow() mam ten sam błąd. Jakby ktoś chciał to mała funkcja na pierwiastek: float moje_sqrt(float a) { double x=1; int i=20; while(i--) { x=(x+a/x)/2; } return (float)x; } Ale nie podoba mi się ten błąd :/
Napisane jest: Szukajcie, a znajdziecie. [url=http://www.st.com/st-web-ui/static/... Przyjemnej lektury :)
Twój problem polega na tym że no jakby ominąłeś problem. Coś mi się nie chce wierzyć ze codesourcery było z niedokompilowaną biblioteką libc.a, a yagartoo działa. Miałem taki sam problem co Ty ale tyle że z STM32, ja korzystam z Linuxa i przekompilowałem sobie kompilator, ale później sprawdziłem codesourcery i pracuję aktualnie na codesourcery jest...
Urodziłem w końcu coś takiego. Mam nadzieję że zadziała :) [syntax=csharp] using System; using System.Threading; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using Microsoft.SPOT.Presentation; using Microsoft.SPOT.Presentation.Media; using Microsoft.SPOT.Input; using System.Threading; namespace HC_SR04 { public class HC_SR04 { private OutputPort...
Mój kod: [syntax=c] vel = (double) (encoder_count - last_encoder_count) / dt; vel = (vel / ENCODER_MAXVAL) * 2 * M_PI; last_encoder_count = encoder_count; [/syntax] Jedyne czego nie rozumiem to iloczyn bitowy z 16383. Co to daje? Jakie jest jego zadanie?
[syntax=c]#include <stdint.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <math.h> double M2F(char x) { return 440.0 * pow(2.0, ((double)x - 69.0) / 12.0); } int main(int argc, char *argv[]){ unsigned char midi[256*1024]; int maximum = 0; if(argc<2) { printf("MIDI (Type...
No i wyszło szydło z worka. Tak ja mi doradziłeś zrobiłem nowy projekt i tylko wstawiłem te dwie funkcje. Okazało się, że jak kod wygląda jak niżej to jest ok, program kompiluje się prawidłowo double test1 = acos(0.5); double test2 = sqrt(0.5); a jak tak to zaczynają się problemy i błędy jak wcześniej double temp=0.5; double test1 =...
W moim kodzie jest (w zasadzie będzie bo to testy na razie) dużo skoków i odczytywania stałych z pamięci. Rozumiem działanie waitstat-ów, których zadaniem jest "dopasowanie" wolniejszej pamięci Flash do szybkiego rdzenia, pobierającego dane z większą szybkością niż ta na to pozwala. Niestety dalej nie bardzo rozumiem działanie instrumentu prefetch...
Witam. Poskładałem Jtaga ze strony Freediego Chopina. Niestety nie mogę zaprogramować targeta(płytka HY-Mini z STM32F103VCT6). Wszystko jest konfigurowane wg tutoriala. To pokazuje mi konsola eclipse: Open On-Chip Debugger 0.5.0 (2011-08-09-23:26) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
Ja tu nie widzę żadnego błędu kompilacji. Komunikaty pochodzą z konsolidatora.
1. Co będzie jak nie wyrównam stosu, kiedy natknę się na problem? Zasadniczo problem występuje praktycznie tylko przy przekazywaniu 64-bitowych zmiennych do funkcji o zmiennej ilości argumentów, takich jak printf() (tutaj od razu uwaga - 32-bitowy float dla takich funkcji zawsze jest konwertowany do 64-bitowego double). Ze względu na to jak zdefiniowane...
Wielkie dzięki za odpowiedź, faktycznie jest to dobry pomysł. Pogrzebałem też w dokumentacji i okazuje się, że DMA w stm32 ma sprzętową realizację podmiany buforów. Nie spotkałem się z tym w żadnym przykładzie, każdy jakoś kombinuje a to na prawdę działa, więc tak dla potomnych: Do konfiguracji DMA dopisujemy te 2 linijki: [syntax=c] DMA_DoubleBufferModeConfig(DMA1_Stream7,...
[syntax=c]double* xcorr_table = malloc(Na*Ma*sizeof(double));[/syntax]
Niby dla ARM double i float to to samo a jednak nie to samo. Chyba Ci się pomyliło z AVR... Typ double na ARM jest pełną 64-bitową liczbą zmiennoprzecinkową podwójnej precyzji. volatile float f = 123.5434; f *= 123.123 też nie przejdzie przez koprocesor. Wyżej napisałem dokładnie o tym - bez końcówki "f" (albo rzutowania), to są liczby typu double,...
Po każdym zapisie trzeba flash odczytać. Nie trzeba*. Jeśli masz na myśli PM0075 (2.3.3) to "Read the programmed value and verify" odnosi się tylko do weryfikacji i nie ma wpływu na programowanie, źle interpretujesz wspomniany rysunek. To samo masz w 2.3.4, na końcu masz "read & verify" po kasowaniu. Z tym odczytem chodzi tylko o to aby sprawdzić...
Witaj! [syntax=c]void ADC1_2_IRQHandler(void) [/syntax] Nie trzeba w tym czyścić flagi przerwania ? Taki rozrzut pomiarów, hmmm masz tam parę przerwań włączasz je wyłączasz i timer strzela przerwaniami nie tak jak trzeba. Gdyby ta częstotliwość była zawsze mniejsza niż te 200 to było by proste, a że jest mniejsza/większa to znaczy że coś zupełnie sie...
No to w sumie temat jest prosty. Poprzednio zrozumiałem że tę funkcję chcesz ładować z zewnątrz w trakcie pracy procesora (np. z PC albo innego układu podłaczonego jakimś interfejsem komunikacyjnym) robisz sobie wskaznik na funkcję. Jak chcesz zmienic co jest wołane zmieniasz po prostu ten wskaźnik: [syntax=c]float Oblicz(float v1,float v2){ return...
Czołem! Chyba znowu utknąłem w bojach z STM32F2. Wysyłam taką komendę: openocd -f interface/jtagkey.cfg -f target/stm32f2x.cfg -c "init; reset halt; flash write_image erase out/test.hex; reset run; shutdown" i dostaję odpowiedź: Open On-Chip Debugger 0.5.0 (2011-12-03-10:15) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
Po pierwsze to powinieneś solidnie komentować takie funkcje. Opisz sobie dokładnie które zmienne powinny mieć jakie jednostki. Gdybyś to zrobił to byś zobaczył że do zmiennej która trzyma wartość w stopniach przypisujesz radiany. Dalej - zastąp RAD2ST makrem DEG2RAD(x). Będzie czytelniej. Jeżeli nie masz jakiejś kosmicznej konieczności stosowania liczb...
Witam, próbuję uruchomić program napisany przez Freddie'go Chopin'a, na procku STM32F103R wlutowanym w moduł MMstm32F103R http://www.propox.com/products/t_174.htm... na płycie ewaluacyjnej EVBmm http://www.propox.com/products/t_183.htm... Zainstalowałem oprogramowanie, sterowniki, Eclipse, openocd itp. według instrukcji umieszczonej na stronie Freddiego....
Wszystkie te których używam (sqrtf(), powf(), acosf()) są liczone przez FPU? Niekoniecznie. W Newlib (czyli libm.a) nie ma implementacji specjalnie dla tego koprocesora, jednak jeśli masz włączoną optymalizację, skonfigurowane FPU (opcje kompilacji) i dodaną flagę -ffast-math, to kompilator niektóre z nich potraktuje jako funkcje inline i zastąpi odpowiednimi...
Nie możesz zmieniać adresu źródłowego dla DMA podczas transferu. Jeżeli nie używasz podwójnego buforowania, a chcesz zmienić bufor/obszar, z którego DMA ma pobierać dane, to należy zatrzymać DMA, zaczekać na potwierdzenie (bit DMA_EN == 0), zmienić adresy, ilość bajtów do transmisji i na nowo wystartować transfer. Łatwiej pewnie będzie użyć Double Buffer...
Globalne (ale nie wątkowe, niektóre funkcje formatujące tak działają), albo jakiś rodzaj zarządzania tymi fragmentami pamięci. W C jest to hardkor, bardzo trudno to eksploatować (łatwo raz użyć źle). Tym niemniej profesjonalny kod w C (linux, drivery itd) potrafi alokować w jednym module, a gdzieś zupełnie inaczej zwolnić (kosztem bardzo precyzyjnego...
Witam, a więc działam sobie na płytce ZL31 z kamami, w wersji z odłączonym st-linkiem, za programator i debugger służy mi jtag-arm z andtechu, jest to urządzenie na bazie ft2232. Soft to toolchain skonfigurowany podług tutka freddiego chopina. Wszystko ładnie działało jak trzeba do dzisiaj, gdy w którymś momencie zauważyłem, że skompilowany program...
Bezpośrednie wywołanie funkcji termf ("double - %d", 1.35); powoduje błędne wyświetlenie. Bo parametr %d nie określa liczby zmiennoprzecinkowej. Trochę pobawiłem się biblioteką (STM32) i jak pisałem wyżej, funkcja termf nie działa prawidłowo gdy brakuje w jej wywołaniu wskaźnika do tablicy (nie wiem dlaczego) Trzeba go dodać: int termf (char *ptr,const...
Data packing When the data frame size fits into one byte (less than or equal to 8 bits), data packing is used automatically when any read or write 16-bit access is performed on the SPIx_DR register. The double data frame pattern is handled in parallel in this case. At first, the SPI operates using the pattern stored in the LSB of the accessed word,...
Co do zmiennego przecinka - jeśli ARM nie ma FPU to jest to tak samo prawdziwe dla ARM jak i AVR. Bezedura (; Po co mam kombinować bezsensownie jak coś policzyć na liczbach całkowitych, skoro układ ma prawie 100MHz i nawet bez FPU mogę sobie takich operacji wykonywać kilkadziesiąt-kilkaset tysięcy na sekundę? Kiedyś pisałem dosyć skomplikowany algorytm,...
zwiększenie rozmiaru powoduje błąd kompilacji z powodu niewystarczającej ilości pamięci To na początek zacznij od poznania różnicy między sin() a sinf(), potem do rozważań dodaj też to, że M_PI jest typu double, podobnie jak wszystkie inne stałe w formie "x.y". http://en.cppreference.com/w/c/numeric/m... 16 kB RAM i 128 kB flash to oczywiście nie...
Zwróź też uwagę, że w cytowanym przez Ciebie dokumencie nie ma ani słowa o Cortex, a Cortex jest w tym aspekcie inny od wszystkich dotychczas produkowanych procesorów. Sorry, ale dalsza dyskusja nie ma sensu, skoro twierdzisz że wiesz wszystko o Cortexach, tylko nie to, że są one częścią architektury ARMv7-M... No i jeśli te dodatkowe instrukcje uważasz...
Or redefine TX_DS as 5 instead of (1<<5). Or do it any other way, just don't perform this double shifting. :)
Pytanie, co z ta liczbą 64 bit zrobisz? Konwersja sprintfem nie wypali. Sprintf obsługuje int i float. Double traktuje jak float wiec nie wyświetlisz tyle cyfr ile byś chciał. Bawię się w kalkulator i mam własne procedury wyświetlania/wprowadzania longów. Jednak, jak widzę, użycie "po łatwiźnie" procedur matematycznych dostarczanych z Arduino ogranicza...
Hej, Napisałem (chyba) najprostszy program w assemblerze który ma szanse zadziałać (no dobra prostsze było by ustawienie jednego rejestru - lecz nie w tym rzecz ;) ). Po skompilowaniu, zlinkowaniu i przekonwertowaniu na format binarny, wgrywam na uC i dzieją się dziwne rzeczy. Otóż, program: arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mapcs-32 -gstabs...
Witam od dłuższego czasu piszę sobie spokojnie projekcik na STM32f429. Z racji że projekt dość szybko rośnie w i C zaczął zajmować pół mega postanowiłem skurczyć go przy użyciu C++. Konwersja poszła gładko jednak ADC przestał mierzyć... Siedzę nad tym już 3 dzien i doszedłem że w momencie gdy mamy coś takiego: [syntax=c]class TempSensor : public Core::Cortex...
DMA przed każdym użyciem wymaga, przynajmniej częściowego, powtórnego zaprogramowania - napewno długość bloku, być może też adresy. Ty tego nie robisz. Rozumiem, że po zakończeniu transmisji DMA należy ją zaprogramować jeszcze raz, ale akurat w tym przykładzie chce dane wysyłać tylko raz, inicjuje ją w Board_Config(); Więc dla pierwszego razu jest...
Cześć! Mam problem z procesorem stm32f107, z płytki waveshare port107v. Wszystko działało dobrze, mogłem debugować, wgrywać flash etc, aż w pewnym momencie openocd przy połączeniu wyświetla mi takie błędy: Open On-Chip Debugger 0.7.0 (2013-05-05-10:41) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/d...
[syntax=c] IMU *imu = new IMU(); int main(void) { double dt; // delta time for all calculations uint32_t timer = 0, debug_timer = 0; // double madgwickRoll, madgwickPitch, madgwickYaw; // double madgwickRollRate, madgwickPitchRate, madgwickYawRate; fpu_enable(); system_init(); pll_start(CRYSTAL, SYSCLK_FREQ); _delay_ms(1000); while (1) { // Calculate...
Faktycznie, nie zauważyłem tego. Przy kompilacji czegoś takiego: [syntax=c] float zmienna; ... zmienna = zmienna + 1.5; [/syntax] Kompilator zamieni zmienną na double, doda liczbę double o wartości "1.5" i całość przerobi z powrotem na floata. Pomaga dodanie litery "f" na końcu liczby: [syntax=c] float zmienna; ... zmienna = zmienna + 1.5f; [/syntax]...
(at)grzegorzn - FPU w Cortex M jest 32bitowy, nie ma natywnych instrukcji na typie 64bitowym więc ich stosowanie na siłę uważam za nierozsądne. (at)_lazor_ nie wiem co to za pierdoły. Jaki "upscale" do 64bit? Przecież taka konwersja jest bez sensu, szczególnie, że domyślnie aktualnie do floating point używane są instrukcje SSE2 a nie x87. Niemniej jeśli...
Witam Zgodnie z poradami ze .text .global _start _start: (at) Label, not really required mov r0, #5 (at) Load register r0 with the value 5 mov r1, #4 (at) Load register r1 with the value 4 add r2, r1, r0 (at) Add r0 and r1 and store in r2 stop: b stop (at) Infinite loop to stop execution Nastepnie kompilujemy: $ arm-none-eabi-as -mcpu=cortex-m3...
Jasne ! sqrtf już nie konwertuje na double. Ale jeszcze dopytam z ciekawości, skoro FPU ma wsparcie dla float to jak jest wykonywany sqrt dla double ?
można zobaczyć co to jest to M_PI? Jakby się zrobiła doublem (np w wyrażeniu) to by potrzebowała format %lf A po drugie z tytułu optymalizacji często są po dwie biblioteki z printfem: ze zmiennym przecinkiem i bez.
W sumie w trybie 8-mio bitowym możliwe że by poszło (double buffering), bo pamięci jest na obraz 18-to bitowy. Oczywiście pod warunkiem że wtedy pamięć jest wykorzystywana jako 8-mio bitowa. Nie wgłębiałem się. Najgorzej jak nadal jest 18-to bitowa a konwersja 8-->18bitów jest robiona w locie podczas zapisu do tej pamięci. ten lcd jest wogóle jakiś...
Hm w cubie pewnie jest, ale jakoś nie jestem w stanie tego przezwyciężyć. Poziomy abstrakcji są fajne ale zupełnie niepotrzebnie pożerają zasoby uC. Moje urządzenie z kodem keila oczywiście odnajduje USB natomiast ten sam kod "przystosowany" (zmiany polegały głównie na dopasowaniu do standardu gcc) na atollicu ten kod nie działa. Czy oby tylko linker...
O wiele za proste jak na wykrywanie Double click i nie zadziała. Musi badać też okres kiedy puści po pierwszym kliknięciu, jeżeli jest dłuższe niż coś tam to traktujemy jako pojedynczy klik itd itd. Takie rzeczy jak UI robi się dużo łatwiej używając RTOSa
Witam, walczę z mikrokontrolerem STM32F051K8T6. Urządzonko, które buduję, to system mierzący odległość na podstawie odstrojenia generatora LC - zbieram częstotliwość i amplitudę. Częstotliwość jest mierzona przez TIM2, na który wchodzą impulsy, a TIM6 co 20ms odczytuje jego zawartość i zeruje. Amplituda - wiadomo, przetwornik A/C. Z tablicy 50 próbek...
Kiedyś w poszukiwaniu taniego źródła przetworników AD i DA zawędrowałem na płytę główną PC-ta. Można na niej znaleźć zintegrowaną kartę dźwiękową zamkniętą w jednym układzie scalonym, całość ma jedną zasadniczą zaletę, w internecie można znaleźć PDF-a z dokładnym opisem tych scalaków. Takim doskonałym przykładem jest ALC202: --Single chip audio CODEC...
To już wiem, że mam zablokowaną pamięć Flash. Chyba nawet domyślam się, że mogłem tego dokonać próbując wgrać binarkę przez vsgui dołączonym do versaloon'a. OpenOCD wypluwa: Open On-Chip Debugger 0.8.0-rc2 (2014-04-15-16:15) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/d... xsvf adapter...
Kiedyś szukałem jak zaokrąglić do 3 miejsc po przecinku. Znalazłem różne rozwiązania m.inn. to Co prawda dotyczy double ale może coś wykombinujesz. [syntax=c] double zaokraglij_do_3(double x) { int y = x * 10000; // przesuwamy przecinek o 4 miejsca i pozbywamy sie reszty za przecinkiem - y jest calkowite if (y % 10 >= 5) y += 10; // jezeli cyfra jednosci...
Witam, Stworzyłem płytkę z mikrokontrolerem STM32F407. Próbowałem ja zaprogramować przykładem "blink_led" ze strony Frediego i nie chciało działać. Oprogramowanie Eclipse + bleeding toolchain + openocd 0.7.0 zostało skonfigurowane wg tutoriala Frediego na Ubuntu. Nie chciało się poprawnie programować, więc próbowałem różnych porad z internetu, ale to...
To znaczy że tak samo nadaje to urządzenie. To po co Ci 7 bitów jak nadawcze daje 8 W razie wątpliwości zawsze patrzymy do dokumentacji Data register (USART_DR) When receiving with the parity enabled, the value read in the MSB bit is the received parity bit.
Sprawdziłem bibliotekę do JPEG, o której pisałem w pierwszym poście: [syntax=c]//1999 Cristi Cuturicu //#pragma hdrstop #include <stdio.h> #include <stdlib.h> #include <string.h> #include "datatype.h" #include "stm32f4xx.h" struct Parametry_JPG { char ile_pikseli_Vert_pola; char ile_pikseli_Hor_pola; char *p_bufor_YUV_pola; int numer_konwertowanego_pasa;...
Mam mały problem z DMA podczas pracy z DCMI. nowydamian-a . Zwiększa wskaźnik na bufor i ponownie włącza DMA. Różnica jest w tym że resetowanie wskaźnika mam w przerwaniu od DCMI. Dzięki temu każda kolejna ramka obrazu powinna zaczynać się od pozycji zerowej bufora (obraz zawsze powinien być w tym samym miejscu, nawet jak po drodze któraś rama straci...
Kolejne pytanie jakie się pojawiło dlaczego Timer1 działa z prędkością 168mhz powinno być 84Mhz(przy 84mhz odmierzając 10s przerwanie pojawia się po 5 ). Ten temat pojawia się tutaj kilka razy na miesiąc [; Jak przeczytasz DOKŁADNIE podrozdział o zegarach w RCC to wszystko stanie się jasne. Co do Twojego przykładu to niezby ma on jakikolwiek sens,...
Zaktualizowałem GDB i obecnie mam wersje: " C/C++ GDB Hardware Debugging 7.2.0.201309180223org.eclipse.cdt.debug.... CDT " Zmieniłem ustawienia w GDB tak jak mówiłeś. Przedstawia to załączone niżej zdjęcie: http://obrazki.elektroda.pl/5901709400_1... OpenOcd w dalszym ciągu poprawnie się uruchamia, natomiast...
#include delay.h _delay_ns(double ns) _delay_us(double us) 21MHz = 4,76ns
Witam, mam problem z odbieraniem danych przez i2c z użyciem mikrokontrolera stm32f103. Sytuacja wygląda tak, że potrafię przesyłać dane po i2c, (wysyłam adres, czujnik odpowiada, wysyłam mu komendę wykonania pomiaru, wiem że go wykonuję ponieważ wtedy "mruga" diodą), niestety mam problem z odbieraniem danych. Testowałem już wiele funkcji z sieci, ale...
Z drugiej strony jak sobie bierzesz nietypowe napięcie referencyjne (3300 mV), to potem masz problemy obliczeniowe. To akurat jest dla mnie bardzo typowe napięcie referencyjne. Nie spotkałem się jeszcze z małym prockiem z którego wystawałby pin Vref. I nawet większe (QFP64) też potrafią (w większości) tego nie mieć... To akurat charakterystyczne dla...
Witam. Łącze ze sobą IMU na MPU6050 po I2C z stm32f100rb. I2C jest skonfigurowane, funkcja testowa komunikacji zwraca pozytywną wartość. 60 razy na sekundę wywołuję sobie funkcję : [syntax=c]void mpu6050_updateQuaternion() { int16_t ax = 0; int16_t ay = 0; int16_t az = 0; int16_t gx = 0; int16_t gy = 0; int16_t gz = 0; double axg = 0; double ayg = 0;...
Są konkretne powody; pierwszy z nich to czas alokacji, drugi to problemy z fragmentacją pamięci, trzeci to garbage collection. Standardowy malloc w przerwaniu to pomyłka jesli chodzi o czas wykonywania... Przesada - malloc trwa (sprawdzałem) koło 150 cykli - nie wiem gdzie tutaj tragedia... Dłużej może trwać free, zwłaszcza jeśli będzie łączył bloki....
Newsy – czemu nikt nie napisał że STM32 ma interfejs kamery DCMI? Piny idealnie pasują do wyjścia ADV7280. Jest też tryb "embedded synchro", bardzo ważny, bo ADV jest kompatybilny z ITU 656 i http://obrazki.elektroda.pl/5966179600_1... Także jest 8-bit embedded synchro, to czego potrzebuję – do podłączenia 8 pinów data i...
Opisywane zachowanie może być spowodowane zlinkowaniem z (alernatywnym) libc , która z powodów objętościowych nie ma pełnej obłsugi double/float (zresztą atof powinien zwrócić double, nie float). Sprawdź, czy twój kompilator/środowisko/biblioteki są prawidłowo skonfigurowane/użyte do pracy z float/double.
Kod wygląda tak jak sugerujesz, najpierw właczam wszystko w SPI, potem strumienie. Obsługę przerwań pomijam, tam nic się nie zmieniło, tylko czyszczę flagi i macham pinami testowymi. [syntax=c]//////////////////////////////... // odczytuje pamięć przez DMA // Parametry: nic // Zwraca: kod błędu ////////////////////////////////////////...
(at)BlueDraco myślę ze (at)Freddie Chopin ma rację i po prostu jeszcze to działanie się nie zrobiło. a to jest niepotrzebne int16_t tr = byte_0 | byte_1 << 8; Głupio tez że najpierw robi działania na double, później przekształca do float. Tu to nie ma sensu.
Bez znaczenia co na to system Unix, ponieważ w nim nie korzystasz z kompilatora skonfigurowanego na "multilib" i nigdy nie używasz tam ręcznie podanego skryptu linkera. Co się dzieje? Ludzie rozsądni a takie bąki puszczają. Ręcznie to się nie linkuje od około 40~50 lat, a w moim przypadku to co? Sama się pamięć rozplanuje? Takie 'multilib' seriami...
Ja mam poprawnie działający I2C z DMA. Wklejam jeśli jeszcze jest Ci potrzebny, jak nie może ktoś inny skorzysta. Konfiguracja I2C ( standardowo) [syntax=c] void Config_I2C() { I2C_InitTypeDef I2C_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2... ENABLE); I2C_InitStruct.I2C_ClockSpeed = 400000; I2C_InitStruct.I2C_Mode = I2C_Mode_I2C; I2C_InitStruct.I2C_DutyCycle...
Kod inicjalizacji działa, niestety problem braku filtracji dalej występuje. Jak to jest możliwe że wychodzi z filtra identyczna wartość jak ta z akcelerometru? Może to jakiś błąd kompilatora albo co? Poniżej udostępniam kod do wglądu. Może ktoś coś znajdzie. [syntax=c] double kalman_calculate (double new_angle, double new_rate, unsigned long time) {...
Witam, Tak jak w temacie mam problem z poprawnym dzialaniem TIM2/3/4/5 w polaczeniu z DMA1. W moim projekcie jeden z powyzszych timerow skonfigurowany jest jako slave w trybie GATED (z wykorzystaniem wejscia ETR), po wyzwoleniu na jednym z kanalow generuje PWM (PWM1), oraz na kolejnym kanale wykorzystuje tryb porownywania do wysylania requestow DMA...
Jeśli rozwiązałeś problem, to wrzuć rozwiązanie - dla potomnych i dla sprawdzenia. Co do szybkości - problemem jest to, że rysujesz wszystko piksel po pikselu. Aby to przyspieszyć musisz np. odczytać cała linię do tablicy (jedno wywołanie f_read()) i następnie całą tą linię wyświetlić jakąś funkcją (taką która przyjmuje tablicę i jej rozmiar). Rozmiar...
(at)Piotrus_999 Przceież to czym piszesz to jest właśnie ring/double/ping-pong/bounce buffer/s.
Witajcie, Po raz kolejny mam problem ze środowiskiem programistycznym. Otóż piszę sobie program, chcę kompilować i dostaję taki komunikat o błędzie: c:/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.2/... robot.elf section `.text' will not fit in region `rom' c:/codesourcery/sourcery g++...
(at)BlueDraco: Zgadzam się z Tobą i też się zastanawiam na czym polega ta dziwna maniera polecania zabytkowych, 8-bitowych AVR'ów? Pomijając ich ograniczenia strukturalne, za każdym razem wchodząc na Forum widzę problemy typu: jaki programator, programator nie działa, błędy zapisu, program jest dobry, a jednak nie działa... i tysiąc tego typu problemów...
Wszystkie są bardzo pamięciożerne i generują masę nadmiarowego kodu. Działać - działają Czy dla STM, czy dla AVR, arduinowe biblioteki są beznadziejne i nie trzeba się tym przejmować, przynajmniej Arduinowcy się nie przejmują. Jak widać na przykładzie AVR, czy 1 cykl ale z DMA nie skorzystamy. Po co w Arduino DMA? Amatorom się nigdzie nie spieszy,...
Witam Pracuję na F405 i F415 teraz kupiłem wersję F427 która ma 256kilo ramu, jak chcę zaprogramować Flash OpenOCD daje mi takie coś [syntax=actionscript]Open On-Chip Debugger 0.7.0 (2013-05-05-10:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : only one transport option; autoselect 'jtag'...
Program działa, ledy się świecą. Oto kody: stm32f4_discovery_lcd.c : [syntax=c] #include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "stm32f4_discovery_lcd.h" #include "fonts.c" /** (at)addtogroup Utilities * (at){ */ /** (at)addtogroup STM32F4_DISCOVERY * (at){ */ /** (at)defgroup stm32f4_discovery_LCD * (at)brief This file includes the LCD...
Witam, mam problem z komunikacją z czujnikiem ciśnienia HP02S. Szukałem swojego problemu na forum, ale nie znalazłem. Udało mi się bez problemu odczytać dane z EEPROMu. Udało mi się też skomunikować z czujnikiem, ale do czasu. Sekwencja odczytu ciśnienia wygląda następująco (pseudokod): [syntax=c] i2c_start(); i2c_write(0xEE); i2c_write(0xFF); i2c_write(0xF0);...
Witam, napisałem mini-programik na odczytywanie wartości prądu z dwóch kanałów ADC i zapisywanie ich przez DMA. Po wciśnięciu przycisku rozpoczyna się pojedynczy pomiar z dwóch kanałów ADC1. Po pierwszym wciśnięciu przycisku wartości zapisywane w tablicy są poprawne, jednak po następnych wciśnięciach przycisku wartości te nie zmieniają się. W manualu...
Witam, Korzystam z tego kodu: [syntax=c]#include "main.h" #include "stm32f3_discovery.h" /** * (at)brief Initializes the putput pins for the Timer one channels. Currently * hard coded to drive the LED3 (channel 1), LED7 (channel 2), and * LED10 (channel 3) on the STM32F3 Discovery board. * (at)param pwm_freq: Frequency of the PWM in Hz * (at)retval...
Witam serdecznie Kolegów! Aktualnie jestem w trakcie pisania gry typu labirynt z kulką na procesor ARM STM32F103VCT6. Wszystko mam pięknie i ładnie obsłużone (symulacja odbić od powierzchni płaskich, detekcja kontaktu z otworami) no ale zostało jeszcze najważniejsze - symulacja odbić kulki od kantów prostokąta. I tu niestety zaczynają się schody. Z...
A z stm8s208 lub stm8l151 dało by rade to wykonać? Czasu mam niewiele bo tylko do piątku a kod ma ponad 500 linijek (oczywiście marnotrawione sporo ale tylko dla "widzów" tak robiona) Mam jeszcze stm8l152 oraz stm32f103 ale ich raczej już nie przewiduje bo zbyt duże marnotractwo by było w tym wypadku.
Ponieważ ja ją zadaje. round() zwraca zaokrągloną liczbę typu double. Dlaczego uważasz, że bedzie nie przewidywalne? A jest przewidywalne? W przykładzie napisałeś licz = 0. Jakby nie zaokrąglić czwórki nie będzie. W innym wątku robisz licz+=1, co bez volatile (a i to nie jest wszystko) już jest trudne do przewidzenia. Napisz co chcesz zrobić.
Też sterowałem z STMa ten wyświetlacz przez UART. Pewien dyskomfort może dawać fakt, że przez UART bity lecą odwrotną kolejnością. Nieszczęsne SPI nie ma trybu 9bitów. Sytuacja zmieniła się w wyższych modelach. Na pewno STM32F3 ma dużo bardziej elastyczne SPI. Bodajże Cortex-M3 posiada instrukcję rbit, która zamienia kolejność bitów. Łącząc ją z przesunięciem...
stm32 double stm32 double buffer float double stm32
onkyo podłączyć bluetooth samsung error efekt negatywu
wnętrze zasilacza wnętrze zasilacza
Schemat elektryczny układu rozruchowego sprężarki hermetycznej: kluczowe elementy i działanie Zwiększenie mocy silnika 3-fazowego asynchronicznego: metody i ograniczenia