https://obrazki.elektroda.pl/2718988000_... Witajcie moi drodzy W tym temacie pokażę jak każdy początkujący może najprościej uruchomić w warunkach amatorskich mikrokontroler PIC32MX795F512H bez potrzeby trawienia/kupowania pod niego konkretnego PCB. Oprócz minimalnego niezbędnego układu pracy tego mikrokontrolera umieszczę tutaj kilka...
To nie ma nic do windowsa, działasz totalnie na oślep. Tak się nie rozwiniesz jako programista. I nie naprawia się błędów przez reinstalacja, ale przez precyzyjną analizę. Na małych architekturach zmienny przecinek nie jest przyłączany by default, a na życzenie. Problem tkwi w twoim projekcie. To mogą być paradoksalne złączenia okoliczności, jak sprintf...
W moim MPlab było w: Project -> Build Options ->Project -> PICC Linker -> int + long + float teras sprintf w %f daje liczbe zmiennoprzecinkową, a nie 'f', wyniki się wachają i problemu do końca ie rozwiązałem ale to już inna bajka(uśrednianie), bardzoi mi pomogło. Dzięki
Witam. Chcialem uzyc funkcji sprintf w kodzie, ale najwyrazniej program wymaga dołączenia jakis bibliotek. Standardowe bibliotek nie wystaczają, linker nie moze znalezc funkcji _sbrk itp. Czy ktos moglby wyjasnic o co dokladnie chodzi ? Dodatkowo sa tez zoptymalizowane funkcje sprintf bez uzycia floatow (oszczednosc miejsca) - jak spowodowac ze doda...
dodaj opcję -Map=$blabla.map,--cref do linkowania jeśli jej nie masz Nie bardzo rozumiem. Gdzie mam to dodać? W ogóle to zapomniałem napisać. ARM7-TDMI, Eclipse, CodeSourcery, extremalnie zmodyfikowane przykłady Freddiego Chopina. PS. masz strasznie dużo warningów. Łatwo w tym gąszczu przegapić ważne rzeczy. Dużo to ich było wcześniej ;) Ze 100. Teraz...
Linker nie może się czegoś doszukać, pewnie brak jakiegoś pliku bibliotecznego. Mogę powiedzieć Ci tylko tyle, że u mnie sprintf kompiluje się bez problemu na WinARM, specjalnie sprawdziłem. Jeżeli chcesz, możesz przesłać mi program, spróbuję skompilować go u siebie.
Ja bym się tam nie poddawał. Jeśli nie działa Ci printf() z floatami, to - jak pisałem - jest spora szansa, że w projekcie masz poważny problem związany z wyrównaniem stosów. Zignorujesz semihosting to w końcu trafisz na inny objaw tego samego, nierozwiązanego problemu. W każdym razie problem z wyrównaniem stosów objawia się też tak, że czasem takie...
Witam, Mój komputer był już tak powolny, że byłem zmuszony przywrócić system, niestety... Teraz już komputer śmiga aż miło, ale niestety nie wszystko śmiga :not: Zainstalowałem, tak jak uprzednio (przed kilkoma laty) eclipse, bibliotekę HAL (czyli cały pakiet SW4STM32) i zintegrowany CubeMX. Niestety moje projekty nie kompilują się poprawnie. Wyskakuje...
Zrobiłem coś takiego: Project > Properties > Toolchain > AVR/GNU Linker > Libraries tam w górnym okienku dodałem Twoją linijkę jednak po kompilacji wywala mi błąd poniższej treści: cannot find -l-Wl Nie jestem pewien, czy w odpowiednim miejscu to zlinkowałem, i zupełnie nie rozumiem czego nie może znaleźć (wskazuję na błąd) . Podpowiesz coś jeszcze?...
Witam, Dodałem do swojego programu funkcję sprintf i mam problem z skompilowaniem programu. 18:09:16 **** Incremental Build of configuration Release for project timer **** make all Building target: timer.elf Invoking: AVR C Linker avr-gcc -Wl,-Map,timer.map -mmcu=atmega8 -o "timer.elf" ./ds18b20.o ./lcd.o ./main.o /usr/local/CrossPack-AVR-20130212/lib/gc...
/*--------------------------------------... * Linker script for running in internal Flash on the AT91SAM7X512. *---------------------------------------... OUTPUT_FORMAT("elf32-littlearm&... "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm)...
Witam! Próbowałem napisać jakiś prosty program wykorzystujący zmienne dynamiczne, niestety program przestawał działać w momencie wywoływania funkcji malloc bądź sprintf. Podobne przypadki były już tu omawiane, jednak ten jest trochę inny: syscalls.c #include <sys/types.h> #include <errno.h> #include "uart.h" caddr_t _sbrk(int...
Chyba logiczne jest, że jak chcesz mieć mały kod, to używasz optymalizacji rozmiaru, czyli -Os... No akurat te poziomy optymalizacji dają oszczędność na poziomie kilkuset B. Tak się składa że też od kilki dni "męczę" podobny projekt. Udało mi się uruchomić stronę (tzn. odpowiada ale nie ładuje danych)...związane jest to z tym że musiałem za komentować...
Witam. Z góry przepraszam za dużo linii w poście. Problem dotyczy GNUARM oraz procka LPC2129. Mam następujący problem występujący podczas linkowania poniższego kodu: int main() { char bufor[256]; unsigned int i = 0; IODIR0 = 0xFF000000; IODIR1 = 0x00FF0000; UART0_init(); while (1) { sprintf(bufor, "ZONK...
ok, problem na dzień dzisiejszy został rozwiązany gdyby ktoś miał podobny problem: przy zainstalowanym środowisku LPCXpresso, doinstalowanym CSL Arm Toolchain warto doinstalować Sourcery G++ Lite 2010.09-51 for ARM EABI wg. opisu na stronie Chopina i skorzystać z gotowego projektu na LPC2103 (w przypadku LCP2106 dopasować wielkości pamięci RAM, ROM...
Kompilator przy optymalizowaniu programu wkłada funkcje biblioteczne niejawnie i jest z nimi też problem. Bo są rozwijane jako veneer i generują nie poprawny kod. Przykład sprintf(buf,"1234") jest zamieniany na strcpy i ma odwołanie typu veneer. Jak wywołam jawnie strcpy jest ok. Trzeba kontrolować skompilowany program i potem szukać przyczyny z kodem...
Raczej nic to nie zmieni. W funkcjach variadic float jest traktowany jak double (zajmuje 8 bajtów lub 2 rejestry), stąd problem. Kompilator dba o stos podczas pracy programu, ale to co dostaje na wejściu musi być wyrównane do 8-miu bajtów. Jeśli chcesz znaleźć źródło problemów, to olej na chwilę FreeRTOSa i po prostu w jakimś programiku zwykłym przetestuj...
OK, więc tak: startup.s /* +=======================================... | includes +=======================================... */ #include "hdr/hdr_cpsr.h" /* +=======================================... | startup code +=======================================...
Utrudnia? Przecież to tylko parę kliknięć, niewiele więcej niż ustawienie w konfiguracji w AVRStudio. A na WinAVR nikt chyba sam z siebie się nie rzuca, jest to po prostu opisane w kursie a tam zwykle krok po kroku jest opisane jak utworzyć plik makefile. Z jednej strony utrudnia, z drugiej strony ułatwia. Na przykład dołączenie biblioteki funkcji sprintf...
Weź wszystkie podstawowe pliki (startup, skrypt linkera, tablicę wektorów, Makefile) z jednego źródła, bo jak je mieszasz to nigdy nie wiadomo co nie zadziała. 4\/3!!
Aby float działał w printf/sprintf , należy dodać w opcjach linkera dodatkową bibliotekę. Jak to zrobić, opisane jest pod koniec pierwszego posta w temacie http://www.elektroda.pl/rtvforum/topic10...
Funkcje te są w nagłówku <avr/pgmspace.h>: http://www.tuxgraphics.org/common/src2/a... Te, które mają sufiks _PF obsługują wskaźniki 24 i 32 bitowe do FLASH. Pozostałe funkcje - np. sprintf_P i inne z IO.h z _P obsługują __memx ale tylko w obrębie pierwszych 64 kB - nie ma potrzeby,...
int -> char[] - itoa() float -> char[] - tutaj funkcji jest wiele, zależnie od potrzeb - najlepiej poprzeglądać dokumentację do libc (zwykle newlib) - dołączoną do kompilatora. Implementację funkcji itoa() można znaleźć na mojej stronie www.freddiechopin.info -> Download -> ARM -> Różne Na podstawie funkcji itoa() można zresztą wymyślić własną funkcję...
Gdzie masz funkcję write_text(); ? Tworzysz w ogóle jakieś pliki nagłówkowe? extern możesz też zastosować do tej funkcji syscalls.c który współgra ze skryptem linkera a o tym poczytaj na stronie Freddiego http://www.freddiechopin.info/
Zrobiłem wszystko zgodnie z instrukcją na stronie pana Mirka: http://mirekk36.blogspot.com/2013/04/ecl... Używam Eclipse Indigo SR2 z toolchain-em Atmela z Atmel Studio 6.2 i z WinAVR z 2010 roku. Niestety mam błąd podczas budowania programu (konsola): ... ./wiring_shift.o -lprintf_flt -lm avr-g++.exe: error:...
Witam Mam taki problem, przy kompilacji pokazują mi się błądy: 3x proba.cpp <-główny plik #include <iostream> #include <cstdio> #include <cstdlib> #include "liczba.h" int main() { int s=3,d=4,a1=2,a2=5,r,t; liczba pierwsza(s,d); liczba druga(a1,a2); liczba nowa(r,t); nowa=pierwsza*druga;...
Poniżej przedstawiam korespondencję oraz dalsze kroki mające na celu wykorzystanie implementacji funkcji printf pochodzącej z strony freddiego chopina. Ja: Witaj, Chcialem wykorzystac twoja funkcje printf, jednak w paczce z nia zabraklo pliku usart.h . Brakowolo jedynie referencji do funkcji usart_put_char więc ją dopisalem. Niestety nie ma również...
Witam! Chciałbym się dowiedzieć jak poprawnie używać liczby zmienno przecinkowe. Korzystam z win-avr i niestety nie mogę sobie poradzić. Dodałem biblioteki printf_flt oraz m (math) i odpowiednie opcje dla linkera (zywcem wziete ze strony avr-gcc) ale niestety jakiekolwiek uzywanie floatów daje mi 0 (sprintf'uje do tablicy znakow i usartem przesylam...
Witam, Od niedawna jestem świeżym posiadaczem płytki testowej dla LPC2148 (z Kamami) i powoli rozgrywam tajniki tych mikroprocków. Wcześniej sporo pisałem na AVR'ki. Mam problem z funkcją sprintf()/iprintf(). Otóż wszystko działa poprawnie, kiedy wywołuję np. taki kod: int a=2; char buf[16]; sprintf(buf, "A: %d", a); LCDWrite(buf);...
Witam! Od jakiegoś czasu bawię się mikrokontrolerami. Ostatnio próbuje swoich sił przy WinArmie. Nie mam problemu przy prostrszych projektach, gdzie w skład wchodzi pare plików. Problem i to duży pojawił się ostatnio, gdy próbowałem skompilować projekcik FREE RTOS-a (dość rozbudowany). Zmieniam ścieżkę dostępu do projektu, w pliku poza tym nic nie zmieniam....
Już próbowałem zwiększyć rozmiary na 2048 Może być zbyt mało. I który-main czy process? Przeczytaj komentarz nad tymi dwoma wartościami w skrypcie linkera. Przeczytaj go BARDZO wnikliwie. Dodam też, że szablony są skonfigurowane na pracę z dwoma osobnymi stosami. No i jeśli sprintf() używasz w przerwaniach (wielu), które mogą być zagnieżdżone, to nie...
Witam. Mam kłopot staram się wyświetlić na lcd lub wysłać przez USART zmienną która powinna przyjąć wartość około 70000 - 100000 ... Mam wielkiego zonka :-( Teoretycznie definiuję zmienną jako volatile uint32_t licznik = 70000; a na lcd dostaję jakieś dziwne odczyty ... to samo na rs... używam takiej funckji : sprintf_P((char*)tekst, PSTR("Licznik:...
Witam Mam problem z konwersją flota w printf/sprintf. W miejscu gdzie powinien być wynik konwersji, printf wstawia "ERROR". Biblioteka libm jest niby dołączona (-lm), ale to nic nie daje. Co powinno być jeszcze wstawione w opcjach żeby zaczęło to działać, a może to z innego powodu nie działa? Może malloc nie che przydzielić pamięci dla printfa? Tu jeszcze...
Dołacz odpowiednią bibliotekę. Opcje linkera w większosci toolchainów -u _printf_float jezeli zamierzasz skanować float-y to również -u _scanf_float Dodano po 4 Nie zauważyłem że to coocox - tam masz o ile pamiętam w konfiguracji projektu odpowiedni checkbox
Dodaj do flag linkera: [syntax=bash] LDFLAGS += -Wl,-u,vfprintf -lprintf_flt -lm [/syntax] W Atmel studio pewnie można gdzieś wyklikać to myszką. Poza tym sprintf zwraca wartość. Warto to również sprawdzać.
Tak wiem, ale spokojnie - floata używam w ostatecznosci. Output do char* można uzyskać biorąc cześć całkowitą i osobno pomnożoną przez np 1000 czesc ułamkową. Potem tylko "&d.%d". Ale po co sobie utrudniać życie :) Poza tym, procesor ma się dostosować do tego co aj chce a nie do tego co on może :P Po skorzystaniu z rady mi14chal , kompilator zgłąsza...
Toolchain : C:\Program Files\GNU Tools ARM Embedded\4.9 2014q4 Debugowanie programu : http://obrazki.elektroda.pl/8776950400_1... Gdzieś w sieci wygrzebałem: In case that link ever disappears, what you have to do is ensure that your gcc command has "-Wl,-u,vfprintf -lprintf_flt -lm". This translates to: force vfprintf to...
Od kilku dni zabawiam się kamerką OV7670, próbuję pobrać z niej obraz w formacie RGB565 i o mało ambitnej rozdzielczości QCIF(bo taki zmieści się w całości w RAM). Program, który napisałem ma za zadanie w przerwaniu pobrać obraz do pamięci, zatrzymać przerwanie i zapisać zawartość do pliku bmp. Oto mój kod : Otw. pliku 0 Init OV7670 1 System Clock 120...
Mam problem z przesyłaniem liczb zmiennopozycyjnych przez port RS232. kod obsługi uartu jest poprawny, dobrze sprawdza się w innych aplikacjach. sklejam i wysyłam zmienne w ten sposób sprintf(mystr,"\r\n krok %i czas = %d \ty = %d",n,czas,y[k]); // sklejanie stringa mystr uart_puts(mystr); //wysylanie mystr po RS w...
tmf o i pamiętałeś o dołączeniu libm.a i libprintf_flt.a? Do linkera przekazujesz -Wl,-u,vfprintf? Bez tych bibliotek sprintf nie działa. Do programowania pamięci flash mojego uC używam avr studio. Nigdy nie stosowałem żadnego przekazywania "czegokolwiek" do linkera. Myślałem, że samo #include <stdlib.h> załatwia sprawę. Mógłbyś nieco przybliżyć...
W skrypcie linkera zmieniłem rozmiary stosów : __main_stack_size = 2048; __process_stack_size = 2048; Do projektu dołączyłem biblioteki gcc: #include <errno.h> #include <sys/types.h> oraz funkcję _sbark: caddr_t _sbrk (int size) { extern char __heap_start; extern char __heap_end; static char *current_heap_end = &__heap_start;...
po co ci struktura w ktorej jest TYLKO INT?! Czy ty znasz zastosowanie struktur? Po co przepisujesz stałą tablicę intów do dynamicznej tablicy intów (bo w efekcie wlasnie to osiągasz alokując na stercie miejsce na te swoje struktury)... 1. Nieeleganckie otagowanie struktury - Dlaczego typ u ciebie nazywa się tak samo jak tag?... eleganckim rozwiazaniem...
Kod, w którym testowałem liczby stałopozycyjne: ------ Build started: Project: FFP, Configuration: Debug AVR ------ Build started. Project "FFP.cproj" (default targets): Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!=''). Target...
Albo użyć "sprintf" z biblioteki "stdio.h". sprintf (sbuf, "%0a.bf", temperatura); write_text (sbuf); W ciągu %... zamiast 'b' podstaw liczbę cyfr wyświetlanych po przecinku, a zamiast 'a' podstaw łączną liczbę znaków formatowanego ciągu łącznie z przecinkiem (kropką). Np. pisząc "%05.2f" dla temperatury równej "23.5" otrzymasz...
ad 1. Jak słusznie się domyślasz trzeba włączyć <math.h> i całość zlinkować z libm.a. Bibliotekę dodasz w opcjach projektu AVR Studio. ad 2. Winę ponosi optymalizacja. Twój drugi przykład też nie zadziała, trzeba zrobic volatile asm. A najlepiej tak nie robic, tylko skorzystać z delay.h. ad 3. Jak masz zainstalowane WinAVR albo atmelowy toolchain...
printf() używa okrutnych ilości RAM, więc zacząłbym od tego. Jeśli nie wyświetlasz liczb z przecinkiem, to użyj iprintf() - wersja ta nie obsługuje zmiennego przecinka, ale za to zajmuje mniej pamięci flash i chyba trochę mniej RAM. Do tego printf() wymaga funkcjonalnego syscallsa _write_r(), więc na "pierwszy ogień" lepiej zacząć od sprintf() (lub...
Stos 1024 bajty o ile dobrze patrzę w skrypt linkera. Za mały jeśli chcesz używać funkcji typu sprintf(). Jak masz problem to pierwsze co należy zrobić to zwiększyć stos i to BARDZO, żeby wykluczyć najbardziej prawdopodobną przyczynę. Daj tam z 8kB. Chciałbym jednak zrozumieć na czym polega problem. Czy przyczyną jest obsługa double w newlib? Widzę,...
ta płytka ma standardowy program do obsługi i teoretycznie można z niego obsłuztc karte ale ja niewiem jak ją zamontować [syntax=c]/*****************************... (c)*************************************... ** ** http://www.powermcu.com ** **--------------File Info------------------------------------...
AKTUALIZACJA 4 - WB2S MQTT wysyłka (tzw. "publish") zdaje się działać Udało mi się uruchomić MQTT - a przynajmniej częsciowo. Poniżej zrzuty ekranu z Wiresharka: https://obrazki.elektroda.pl/5879949100_... Wireshark jest w stanie rozpoznać pakiety MQTT i odkodować ich zawartość: https://obrazki.elektroda.pl/6198785700_...
https://obrazki.elektroda.pl/4024708700_... Witajcie moi drodzy. Przedstawię tu pierwszy na świecie tutorial programowania modułu WiFi WB2S, czyli BK7231. Moduł ten występuje w wielu urządzeniach smart home, a w internecie panuje opinia, że nie można stworzyć dla niego własnego firmware. Nic bardziej mylnego - pokażę tu krok po kroku...
Witam, Tak jak w temacie, programuję układ, którego celem jest zczytywanie wskazań akcelerometru i wyświetlanie ich na wyśeitlaczu LCD o takim: http://www.kamami.pl/index.php?ukey=prod... Ale nie chodzi o program, bo działa poprawnie, lecz o środowisko. Na jednym komputerze, na którym działam w notepad++ i programuje przy użyciu...
Witam. mam problemy z konwersją stringa char tab do double i odwrotnie. W linkerze dodałem "-Wl,-u,vfprintf,-lprintf_flt,-lm" do konwersji double to string wykorzystuje "atof" i generalnie chodzi ok, choć czasem jest błąd na ostatniej pozycji, problem jest przy konwersji w drugą stronę tu nie wychodzi nic. jakiej funkcji najlepiej użyć i jak? Ja próbowałem...
arduino sprintf float sprintf sprintf arduino
volvo silnika obliczanie checksum kondensator mniejszy zasilacz
używany telefon telewizor toshiba czarny ekran
HCS300 – programowanie układu KeeLoq: CH341A, CH347T czy PICkit 4/5? Audi A8 D3 – nie gaśnie podświetlenie zapalniczek i przycisków MMI po zamknięciu auta