... z racji, że HardFault zawsze mi się źle kojarzył, chciałem to zrobić w inny, może prostszy sposób :) Możesz zawsze sprawdzić czy argument jest w zakresie RAMu
Pomijając sensowność używania sprintf do SKOPIOWANIA stringa do jakiejś zmiennej, to błędów jest bardzo dużo. 1. Skasowałeś stronę którą chcesz zapisywać? 2. Odblokowałeś zapis do flasha? 3. Twój zapis jest dziurawy, bo jak zero będzie na nieparzystej pozycji, to pętla nie zakończy się wtedy kiedy będziesz chciał 4. Odczytujesz FlashStatus, to sprawdź...
Co to znaczy, że jest legalne ? Zapis '1' jest dozwolony. Każdy string ma na końcu null terminator i trzeba o tym zawsze pamiętać.
Kolejna linijka kolejne UB- Received to jeden bajt, Ty piszesz tam 5 nadpisując inne dane. Wiem, ze Received to jeden bajt. Chodziło mi o to ze wywoła się dopiero po otrzymaniu 5 znaków. CallBack nie do tego służy. To do czego? Masz UB jako że twoja dana ma jeden bajt a printf z parametrem %s oczekuje C stringu (czyli ciągu znaków zakończonego zerem)....
Wystarczy że w funkcji wyświetlania tekstu nie będziesz modyfikował wejściowego stringa. Czyli np. tak: if(*text == '(at)') Wyswietl(0);
Tylko co do rzeczy ma semihosting? P.S. Oczywiście powinieneś używać sscanf(), bo chcesz przerabiać gotowy string, a nie czytać ze strumienia FILE. No chyba że chcesz [; 4\/3!!
Po co stosować takie cuda? W sensie że co? strlen() to jakieś fanaberie? Nie, że fanaberia. Ale po co tworzyć CRC tylko dla stringów.
1. Jak jest zdefiniowane float32_t? 2. Literał 2.4567 jest domyślnie typu double. Użyj 2.4567f. 3. W jaki sposób odczytujesz wartość przekazywaną do funkcji? 4. W jaki sposób wykonujesz konwersję do stringa?
A wysyłanie zwykłego znaku działa? Na początek proponuje sobie podzielić pracę na etapy. 1) Konfiguracja RS232 2) Wysyłanie pojedynczego znaku 3) Wysyłanie stringa 4) Wysyłanie zmiennej 1 bitowej 5) Wysyłanie zmiennej wielo bitowej 6) Wysyłanie zmiennej jako stringa
Sprawdź najpierw pochodzenie tego zera. Najlepiej w terminalu jak Ci pisałem. Moje podejrzenie jest takie, że jak wysyłałeś przez putst() było OK, bo on eliminował zero na końcu Twojego "stringa" char dataBuff wychodząc z funkcji. To zero pojawia się w tablicy niejawnie, ale tam jest. Gdy uruchamiasz DMA nie bierzesz pod uwagę, że tablica ma rozmiar...
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
Witam, czy komuś udało się uruchomić STM32, Keila 5 i uruchomić szablon Vector i np string w C++? Zdaję sobie sprawę z narzutu, jaki wprowadzi wykorzystanie tak wysokiego poziomu programowania na mikrokontroler. Pytanie, czy jest to na tyle stabilna implementacja, że można tego używać? Czy też z Vectoriem i stringiem są problemy i lepiej od razu przygotować...
Ale jesteś świadomy tego, że w każdych przykładach od ST, niezależnie od tego czy to F1, F4, L4 czy cokolwiek innego, jest dokładnie ten sam numer VID i PID? przykład dla F1: #define USBD_VID 0x0483 #define USBD_PID 0x5740 #define USBD_LANGID_STRING 0x409 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define USBD_PRODUCT_FS_STRING...
Dodano po 7 Ale kodu wynikowego nikt nie przegląda linia po linii, zwłaszcza jeżeli linii jest kilka tysięcy. Przecież stringi widać, a nawet się wyszukuje w byle edytorze ps. kod wynikowy nie ma linii. Dodano po 8 aha, jeszcze jedno. Nie myśl przez "plik hex". Plik hex jest tylko formą przejściową, w finalnym wyrobie się stanie daną binarną
Tych instancji to będzie około 100 i dlatego kombinuję jak zaoszczędzić trochę pamięci, bo każda z tych instancji posiada własną, unikatową nazwę w postaci stringa, więc static i constexpr nie pomogą. 4 bajty na wskaźnik to i tak lepiej niż przechowywanie całego stringa w RAM-ie
Jest to przejściówka "Konwerter CP2102 Niestety nie mam takiej pod ręką to nie obadam jaki ma pull up. Próbowałem z DATA rezystor 480ohm do 3.3V ale nie działało. To według mnie zdecydowanie zbyt niska oporność, jak na obciążenie fototranzystora w transoptorze. Spróbuj coś koło 4,7 - 15kΩ. Od biedy można by spróbować uruchomić wewnętrzny pull...
Dodając na koniec wskaźnik na ten twór to: const char * const (*string)[]; Dzięki i pozdrawiam
Chodzi o wyświetlanie Stringów przez USART? To na czas testów tylko. Jakiś pomysł?
Zasadniczo nie jest to możliwe, tzn. funkcja wysyłająca wygląda dobrze, problem jest gdzieś indziej. Masz dokładnie taki program, jak pokazałeś? Jak odbierasz i wyświetlasz?
0. Deklaruję sobie globalnie: Na CRLF nie czekasz? Jeśli nawet ma to być łańcuch znaków to powinno byc miejsce na znak końca teksu w przeciwnym wypadku zapomnij o wykorzystaniu "string.h".
Czy nie jest przypadkiem tak, że do Twojego pliku S tring.c masz swój własny nagłówek S tring.h? Bo jeśli kompilujesz to na Windows, to niestety ten nieco ułomny system nie widzi różnicy między Twoim S tring.h a s tring.h z toolchaina, linijka "#include <string.h>" dołącza tak naprawdę Twój plik S tring.h, w którym tej definicji nie ma, no i taki...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził, że jesteśmy wciąż w jakiejś linii, choć mikrokontroler sobie wtedy...
Chodzi mi o umieszczeni np: static const uint8_t myArray[] = "taki sobie string"; we FLASH ale gdy się nigdzie tego nigdzie nie użyje. Żeby kompilator umieścił to we FLASH to muszę to gdzieś użyć.
Ta linijka jest bez sensu. Chciałem poczekać aż pierwszą wartością w stringu do wysłania będzie 0x55 ale od razu jest więc to nie opóźnia.
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!!
1. const char * const str1 = "string numer 1"; const char str2 const char* text);`.
Zaopatrzyłem się w ten kabelek . Podłączyłem stm32 . Kombinuje kombinuje i nie działa . Nie odbiera mi tego sygnału z serial porta . W aplikacji stma odbiera chary , a ja wysyłam mu stringa to nie działa i próbuje chara też nie działa . Nie wiem co mam robić .
Widząc Twoje doświadczenie to z jeden dzień przy dobrych wiatrach Ci pójdzie na wgranie gołego RTOSa a drugi dzień na napisanie tego terminalu o którym mówisz :) Gotowca raczej nie dostaniesz, ale z drugiej strony napisanie terminalu np po UARcie to nic innego jak wysłanie tego znaku zachęty po uart i oczekiwanie na komendy co jest raczej proste. W...
... proszę o wyjaśnienie, i jak mogę zrobić, żeby moja metoda zadziałała? Jedynym rozwiązaniem jest globalne txt? 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,...
Kolega ma problemy z podstawami C. Z jakich elementów składa się string ? Nie odróżniasz zmiennych od wskaźników i tego co chcesz uzyskać, rzutowanie w ogóle bezsensu. Jak odpowiesz na pierwsze pytanie może przejdziemy dalej. Dlaczego nie chcesz użyć itoa jeśli w ogóle posiadasz tą funkcję w stdlib ? Musisz przygotować string z wynikiem temperatury,...
Podłączenie programatora UART i wykonanie flash read nie zepsuje chipa, ale trzeba by było wlutować RX i TX aby poprawić ślady na płytce. Nie widzę żadnych padów programisty na płytce, twardo. Czy chcesz spróbować? zrobić zrzut oprogramowania bkWriter? Dzięki, spróbuję jak będę miał czas na rozłożenie rzeczy i podpięcie wszystkiego. Te zdjęcia zostały...
echh jednak Freddie miał rację :) http://gcc.gnu.org/onlinedocs/cpp/Standa... __DATE__ __TIME__ [syntax=c]string ver = __DATE__ + __TIME__; string eever = read_ee(123421); if(ver != eever) send_ee(wskaźnik_na_kupę_danych);[/synta... Kod oczywiście nie zadziała ale you got an idea!
Witajcie, mam problem z HID-em w STM32F103VB. Chce wysłać więcej bajtów niż, jeden tak jak jest to w przykładach do stm-a. Interesuje mnie transfer z PC->STM. Mój problem polega na tym, że po skonfigurowaniu mikro kontrolera i próbie wysłania pakietu za pomocą SimpleHIDwrite, program wypisuje mi komunikat: "WRITE ERROR: Urządzenie dołączone do komputera...
Witam, Panowie, konkretne pytanie: Czy opłaca się stosować kopiowanie pamięci przy użyciu DMA zamiast memcpy? System jest wielowątkowy na FreeRTOS. Mam bardzo dużo kopiowania pamięci średnio po 15 bajtów. Wątek mógłby wstrzymać pracę i czekać na semafor z przerwania. Czy to sie jednak opłaca wydajnościowo? Przy okazji: Czy da się zmusić kompilator,...
Nie strstr() zwraca wszystko co jest za wyszukanym ciągiem strstf() zwraca indeks w wyszukianym ciągu. Eee... Nie... http://www.cplusplus.com/reference/cstri... strstr() zwraca wskaźnik na wyszukany ciąg. Jeśli chcesz jego indeks to nic prostszego - wystarczy odjąć wynik tej funkcji (pod warunkiem że nie jest to NULL) od adresu ciągu w którym...
Jednak dane nadawane przez EEPROM się spóźniają powinny być zatrzaskiwane na zboczu narastającym a one na narastającym się dopiero zmieniają jakby miały być zatrzaskiwane na opadającym choć wyraźnie w manualu jest napisane że pracuje przy narastającym. Coś źle doczytałeś The READ instruction outputs the serial data of the addressed memory location...
problem na razie nierozwiązany.. wyłączyłem przerwania w ogóle, kod (fragmenty )wygląda teraz tak: [syntax=c] extern struct message* RX_que; extern volatile uint8_t RX_que_ptr; extern volatile uint8_t RX_que_cnt; struct message { struct message* next; struct message* prev; uint8_t* content; uint16_t size; }; uint8_t add_to_que (struct message** que_ptr,...
Generalnie wiem co na końcu stringa musi wystąpić żeby nie czytał przypadkowych danych z pamięci, aż do napotkania jakiegoś null-a. Po zmianie na unsigned char bufor[5]; dane z klawiatury wprowadzane są na 6 pozycji tablicy a 7 pozycja to ten niepożądany znak...dziwne...
Chyba masz dwa wyjścia, ale potestuj bo teraz nie jestem pewien. zrobić printf() z parametrem %5.2f dla liczby jak twoja np. 12.00. albo zamiast sprintf() użyj snprintf() gdzie drugi parametr (n) ustaw zależnie od tego ile cyfr chcesz skopiować i wyświetlać. int snprintf ( char * s, size_t n, const char * format, ... ); Write formatted output to sized...
Po pierwsze - łańcuch 3 znakowy zajmuje w pamięci CZTERY znaki (bo jest jeszcze '\0' na końcu). Po drugie - przejrzyj naprawdę ten dokument który wskazałem, znajdziesz w nim np coś takiego: 8.1 asctime—format time as string 8.3 ctime—convert time to local and format as string 8.8 strftime—convert date and time to a formatted string...
witam Mam prosty projekt (eclipse,st2link,openOCD), miganie diodami i przerwania od SysTick, projekt działa ok, normlanie mozna debugować itp. Nastepnie do tego projektu dołożyłem moduł FatFS. Projekt sie kompiluje ale przy debugu jest problem, po załadowaniu pliku, debuger nie zatrzymuje się na pierwszej funkcji w main jak to mialo miejsce w podstawowym...
im using samle from here http://iteadstudio.com/produce/enc28j60-... just uncoment some string in ENC28J60.h it looks like #define ENC28J60_CS GPIO_Pin_4 #define ENC28J60_CSL() GPIOA->BRR = ENC28J60_CS; #define ENC28J60_CSH() GPIOA->BSRR = ENC28J60_CS main function now main{ ENC28J60_CSL(); Delay(25000); ENC28J60_CSH() }
moduł kamery VGA za 8 zł, moduł Wi-fi kosztuje obecnie 4-10 zł, a płytka z STM32 to wydatek ok. 25 zł. Zdaje się tylko to ostatnie (moduł z stm32) można kupić za ok25zł przez każdego w przeciętnym sklepie elektronicznym choć i tak jest to na prawdę niewiele. Raczej znam co najmniej kilka sklepów z elektroniką i jeszcze kilka tyg temu moduły z większymi...
Witam, zajmuję cię projektem na uczelnie. Na razie próbuje poruszać serwami Dynamixel RX-64 przez CAN. Używam przejściówki CAN->RS-485. Aby poruszyć serwem wystaczy jako identyfikator wysłać wartość (0x100 << 21) oraz jako dane nową pozycję serwa. Problem polega na tym, że serwo w ogóle nie reaguje. Używam bibliotek firmy ST i udało mi się...
Pytanie proste. Mam zdefiniowany String we flashu. Jak dostać się do każdego znaku z osobna? Jak chcę coś wydobyć z pamięci to mi pokazuje co czwarty znak. Przesunięcie bitowe typu "adres << 8" też mi nie chce działać. Robię parser a ponieważ string ładuję do flasha funkcja strtok nie chce mi działać. a[0] = (*(vu16*) Addr);...
Mam problem z wyświetlaniem współrzędnych dotyku za pomocą funkcji getDisplayPoint() z GLCD dla zestawu HY_mini . Walczę z tym już kilka dni i nic . Do konwersji z liczby na string używam funkcji itoa() i po podstawieniu konkretnej liczby funkcja GUI_Text wyświetla ja poprawnie . Krzyż wskaźnika rysuje dokładnie w punkcie dotyku funkcją DrawCross(display.x,display.y);...
A jest ktoś na tym forum ktoś komu udało się uruchomić ten sterownik na tym procku? Wybaczcie odkop. Mnie udało się uruchomić LCD na bibliotekach z tego linku: http://atmegan.blogspot.com/2012/10/stm3... Kod jest "bardzo" skomplikowany: [syntax=c]#include <stddef.h> #include <stdlib.h> #include <string.h>...
Freddie rozumiem, ze korzystasz z gcc i nieużywane sekcje wyrzuciłeś? No raczej (; Ja to rozwiązanie stosowałem jeszcze z TrueStudio i poza zwiększeniem rozmiaru o tego stringa nic mi nie "urosło" ;] Musiało Ci coś brakować do pełnego działania programu (; W końcu analiza takiego zakręconego stringa nie jest do zrobienia w 2 linijkach (chyba że obydwie...
Zrobiłem to bez przerwań. Program może nie działa idealnie (mam problemy z odbiorem znaków - jutro na tym się skupię), ale udaje mi się wysyłać at komendy do modułu (np. zmienić nazwę modułu, czy pin) oraz przesyłać stringi przez bluetooth na laptopa. Poniżej funkcja wysyłająca i odbierająca pojedynczy znak (w tym wypadku zrezygnowałem z bibliotek ST...
To inaczej: nie wiem jak to się ma do lowpower, ale widziaiłem porównania gdzie taki C++ i zastosowanie algorithm dawało mniejszy kod niż C i for. Sam robiłem nawet na AVR takie porównania i napisanie takiego automatu skończonego w C++ (polimorficznie, używając state machine pattern) dawało w sumie 4 bajty narzutu w zamian za ogrom czytelności. Czy...
Racja, przeciez to logiczne. Po dodaniu najzwyklejszego opoznienia printf wreszcie dziala :) Chcialem jeszcze dopisac obsluge operatora \n wiec zmodyfikowalem funkcje __vfprintf w taki sposob jednak nie dziala: static int __vfprintf_(printf_file_t *stream, const char *format, va_list arg) { char character; stream->length=0; // clear...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
Witam, Niestety poddaje się bo nie wiem czego mi brakuje w kodzie albo co robie nie tak. Nie moge odebrac na komputerze zadnego komunikatu z plytki DEV. Kontrolka na USB - USART swieci się od RX czyli cos jest nadawane (ciagle swiatlo) ale nic nie odbieram Załączam poniższy kod w celu debuggingu: #include <string.h> #include "stm32f4xx.h"...
Witam wszystkich Chciałbym się poradzić ponieważ mam problem z komunikacją USART. W czasie wysyłania stringów do terminala komputer się resetuje, pojawia się blue screen oraz komunikat problem z multiple_irp_complete_request. Sytuacja powstaje tylko w przypadku gdy komunikuję się poprzez przejściówkę USB-USART, gdy korzystam z modułu bluetooth wszystko...
Witam Mam bibliotekę obsługującą LCD, i teraz chciałbym dopisać do niej funkcje wysyłającą na LCD wartość jakiejś zmiennej. Mam to zamiar zrobić tak, że konwertuje int na char[], a potem wysyłam jako string (czyli standardowo). Mam natomiast taki problem, w żadnej bibliotece u mnie nie mam definicji takiej funkcji, próbowałem już z itoa, sprintf oraz...
liczba=atoi(nrfRX To jest tzw Undefined Behaviour. I jest to błąd bardzo poważny. Wytłumaczę Ci, co to robi. Bierze jeden bajt (zakładam że typ tego jest uint8_t []) i konwertuje do wskaźnika do char. Następnie to na co wskazuje ten wskaźnik (a będzie on wskazywać na jakiś adres w zakresie 0x00:0xff (czyli na tablice wektorów)) jest traktowane jako...
Przepraszam za pomyłkę. Funkcja sprinf zwraca liczbę 0xffff ( 16 - bitową) pomimo że jako argumentu używam zmiennej long int i w formacje danych funkcji użyłem "%ld".
Cześć, mam problem z funkcją sscanf(), stworzyłem kod, który przypisuje mi do tablicy konkretną linię $GPRMC i za pomocą funkcji sscanf() chciałbym wyciągnąć z tej tablicy konkretne zmienne odpowiadające za m.in. długość i szerokość geograficzną, jednak nic mi z niej nie może znaleźć w celu przypisania do zmiennych ( a tablica w debuggerze działa prawidłowo),...
Szczególnie nadawanie jest problematyczne, ponieważ nie można mieć non-stop włączonego przerwania, chyba że naprawdę chcesz NON-STOP wysyłać znaki. a no właśnie, o tym nie wiedziałem ;) a chyba mniej więcej tak rozwiązałem to w przed ostatnim poście, po prostu wyłączając to przerwanie jak bufor jest pusty No niestety jest trudniejsze ;) ale tak jest...
.A wszysko się zaczęło od itoa() .... Jak przyjdzie czas na na inne uC, to zobaczysz że nie ma takich wynalazków jak itoa();. Na przykład pisząc pod STM32 mogę się oprzeć tylko na tych podstawowych funkcjach zdefiniowanych w standardzie C. (non-standard function) Przykładowa konwersja integer na string z 12-bitowego przetwornika: char Wynik[11]="...
Cześć! Po kilku małych projektach opartych na Nucleo i Discovery postanowiłem wykonać trochę bardziej skomplikowany i praktyczny projekt - odtwarzacz plików WAV z karty SD i... zwracam się do Was z prośbą o pomoc 😄 Projekt oparty jest o STM32F103RCT6 do którego podłączone jest gniazdo kart microSD i DAC (PCM1780). Za pomocą FatFs odczytuję plik WAV...
Oto cały kod C# [syntax=csharp]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Data; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging;...
Rozpatruję układ, który umożliwi odczyt napięcia na każdym z akumulatorów podłączonych do UPSa w łańcuch składający się z okło 30-40, a nawet 50szt akumulatorów 12V. Odczyt były podczas rozładowania z zapisem na kartę pamięci. Zakładając, że dla każdego akumulatora zrobię dzielnik, to rozdzielczość będzie malała z każdym akumulatorem. Wyniosła by on...
Witam Staram się nawiązać komunikację pomiędzy dwoma płytkami STM32F0 przy użyciu modułów RFM73 - jednakże zatrzymałem się na etapie modyfikowania bibliotek dedykowanych dla modułu RFM70 i STM32F10. Problem polega na tym, że nie dochodzi do komunikacji i nie potrafię znaleźć przyczyny. Zamieszczam kody: RFM70.h [syntax=C] /* ****************************************...
Cześć wszystkim, Zwracam się do Was z prośbą o pomoc w rozwiązaniu problemu z poprawnym wysyłaniem stringa po UART za pomocą przerwania nadawczego. Męczę, się z tym już któryś dzień, czytam reference manuala, i cały czas nie udało mi się tego problemu rozwiązać. Ogólnie rzecz biorąc funkcje do buforowania zdarzeń odbiorczych/nadawczych są sprawdzone...
Witam wszystkich. Korzystając z okazji życzę wszystkim szczęśliwego nowego roku. Przechodząc do problemu, z którym nie potrafię sobie poradzić to posiadam zestaw HY-Mini STM32 i potrzebuję napisać obsługę kart sd przez sdio, a konkretnie chcę zapisywać plik txt (jeśli jest to możliwe lub inny możliwy do odczytania na komputerze) na kartę pamięci. W...
Czy znane są wam inne skuteczne algorytmy pomiaru amplitudy PWM? Pracuje na STM32F072CB i tylko taki mam do dyspozycji wedle założeń projektu więc przesiadką choćby na F1 nie wchodzi w grę... Do tego celu jest więcej niż wystarczający. Metoda pomiaru jest dobra. Dodatkowe pytania: 1. Czy oglądałeś ten przebieg na oscyloskopie? Może po prostu nie jest...
Witam, Próbuję zrealizować nadawanie i odbiór po magistrali I2C - STM32F01RET6 z okładem BNO055. Program zawiesza się na pętlach sprawdzających stan zajętości magistrali lub wygenerowanie START. Jak nie zawiesi się na pętlach to odczytuje jakieś dane ale tylko dla odczytów po 1 bajcie. W przypadku odczytu ilości bajtów > 1 to odczytuje tylko jeden...
Zmodyfikowałem przykład dostarczony od ST Use FPU nadal milczy zastanawiam się czy procesor nie jest uszkodzony. 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 ). [syntax=c] #include "stm32f4_discovery.h" #include <stdio.h> #include <string.h>...
Niestety nie wiem o którą informację na początku skryptu linkera chodzi. :| O tą? * description: * Linker script for STM32F4xxxG chip (1MB Flash, 112kB SRAM, 16kB aux SRAM, * 64kB CCM RAM and 4kB backup SRAM). Only main block o SRAM (112kB) is used. Poza tym Twoja szklana kula działa wyśmienicie. :) Po wystąpieniu przerwania uint8_t...
Męczę bibliotekę USB z ST. I zaciąłem się w jednym miejscu, chciałem przestawić długość danych z 8 bitów na 16 bitów jednak wydaje mi się że biblioteka nie bardzo chce z takimi danymi współpracować. Może miał ktoś z was podobną zagwozdkę? A może ktoś będzie umiał mi pomóc? Na razie próbowałem zmienić rozmiar wysyłanych danych przez edycję Deskryptorów...
Witam ponownie Na początek sugerowałbym przetestować samą poprawność działania SPI, można np. zapętlić MISO z MOSI. Albo odczytywać z peryferiala rejestr ID. Dopiero w następnym etapie uruchamiać obsługę właściwą. Nie analizowałem Twojego programu ale podeślę mój 'bliźniaczy' i działający na STM32F429_DISCO, odczytuje on i wyświetla rejestry GYRO L3GD20....
Wydaje mi się, że zwykła kolejka FIFO spełni swoje zadanie. Kiedyś napisałem coś takiego: fqueue.h [syntax=c] #include <stdint.h> #include <stdbool.h> /**(at)briefWykonuje inkrementacje modulo. * (at)param__val liczba do inkrementacji * (at)param__mod modulo inkrementacji*/ #define INCREMENT_CYCLIC(__val, __mod)do { \ __val =(__val) <...
Rzeczywiście, ta metoda nadaje się znacznie więcej niż dla Wemos D1, nie chciałem nic takiego sugerować, po prostu na Wemos D1 będzie kilka tematów stąd taki tytuł. Tutaj jest nieco więcej szczegółów: https://github.com/JAndrassy/ArduinoOTA ArduinoOTA wspiera: - classic ATmega AVR with at least 64 kB of flash (Arduino Mega, MegaCore MCUs, MightyCore...
Witam. Mam problem z uruchomieniem stabilnie działającego sterownika ethernetu. Kozystam ze stosu LwIP, a aplikacja pracuje w systemie Free RTOS. Problem polega na tym , że po pewnym (niepowtarzalnym) czasie aplikacja przestaje odbierać ramki. Generalnie sterownik ethernetu oraz stos LwIP implementuje korzystając z przykładowego projektu STM, oraz książki...
1176 znaków/sek (...) I więcej nie będzie raczej ;/ a przypuszczam, że ograniczenie 19200 bodów narzuca moduł Bluetooth. Sytuacja zmienia się radykalnie przy prędkości 115200 bodów. Wtedy zdązyłabyś wysłąć USARTEM te 500 pomiarów na sekundę. Uważam, że ograniczeniem nie jest ani przetwornik, ani timer. Po prostu USART przy takiej szybkości nie wyrabia...
https://obrazki.elektroda.pl/7335795800_... Przedstawię tutaj płytkę ESP32-2432S028R oferującą przede wszystkim duży kolorowy wyświetlacz LCD TFT 2.8" oparty o sterowniki ILI9341 (wyświetlacz) i XPT2046 (rezystancyjny panel dotykowy, wraz z rysikiem), a to wszystko za raptem około 50 zł. Pokażę tu jak można przykładowo obsłużyć ten...
Cześć, Jestem w trakcie tworzenia małego projektu. Do obsługi 1wire potrzebuję korzystać z przerwania na PC0. Siedzę nad tym dłuższy kawałek czasu i już naprawdę zgłupiłem. Są dwa kody - jeden ma skonfigurowane przerwania z PC0, drugi z PC1. Dlaczego ten z PC1 działa poprawnie, ten z PC0 nie? Sprawdziłem PB0, również nie działa poprawnie. Wykorzystuję...
Witam Mam pewien problem - obstawiam że banalny ale nie mogę znaleść rozwiązania od 2 dni ;-( Otóż mam czujnika MEMS z którego zbieram dane (najlepiej ok 256 pomiarów z jednej osi) i chcę je wgrać na kartę SD. Niestety coś jest nie tak bo nie działa to dobrze. tzn działa gdy danych jest mało np: MEMS1_to_SDCard (50) oraz char tText_x[500]; natomiast...
Witam, Posiadam płytkę DISCOVERY z STM32F4 i próbuję uruchomić USB w trybie device. Napisałem prosty program w C# do wysyłania danych i wygląda to tak, że mogę wysłać jedynie 72 paczki danych. Steruję zapalaniem diod na płytce za pomocą strzałek na klawiaturze po 72 kliknięciu transmisja się zawiesza. Ma ktoś pomysł na co powiniennem zwrócić uwagę?...
(at)fast_rabbit Piszę na PC w obiektowym Delphi ( tworzę własne komponenty ). Mam za sobą duże aplikacje bazodanowe, łącznie z pisaniem procedur i funkcji w bazach danych. Używam do baz danych PHP, HTML, CSS oraz JavaScrypt, Python na linuxa ( wsparcie obsługi baza danych, zbieranie danych ). Domowo. Piszę w C na AVR STM8 STM32. Poruszam się w Arduino...
Ale niestety musisz tez zrozumieć że programowanie to nie tylko znajomość jakiegoś języka programowania itd. Niestety tutaj trzeba bardzo często ruszyć szare komórki ;) i coś zaprojektować i dopiero później to zaimplementować w kodzie. Tutaj nie jest tak że znajdzie się jakieś przykłady czy gotowce bo co aplikacja to za zwyczaj masz inne wymagania....
Witam Mam problem z uruchomieniem USB w trybie HID. Oczywiście próbowałem zaprzęgnąć przykład od STM'a. Niestety bez skutku. Zasięgnąłem więc do manuala, straszna bieda i kiepsko opisane. Przeanalizowałem kod od STM'a i spróbowałem zrobić to u siebie. Niestety nic to nie dało. Szukałem w internecie i znalazłem przykład od KEILa. Niestety tak samo zakończyło...
Cześć, skonfigurowałem DMA i 2 UARTY (właściwie jeden USART, jeden UART), tak żeby odbierać dane z GPSa na UART4 i poprzez DMA przesyłać dane na stringa, a następnie wysyłać do putty`ego przez USART2. Na pewno dobrze skonfigurowałem UARTy, dane odbieram, natomiast DMA nie działa. Pewnie popełniłem błąd gdzieś w konfiguracji, ale porównywałem ją z różnymi...
chodzi o ALIGN ? Dokładnie, chodzi o ALIGN, ale nie tylko, bo generalnie ALIGNem wyrównujesz początek, a chodzi o wyrównanie końca... <: Wszystko zależy od konkretnej konstrukcji skryptu linkera i startupa... Zobacz jak to jest zrobione w moich przykładach (stm32). jaką flage trzeba dodać, aby kompilator ignorował przypisywanie do samego siebie?...
Witam Używam płytki STM32F4 Discovery. Muszę odczytać sporą ilość danych, więc UART wydaje się jedynym rozsądnym rozwiązaniem. Poniżej kod, którego używam (sugerowałem się kodami z różnych stron). [syntax=c]#include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "misc.h" // I recommend you have a look at these in the ST firmware folder #include...
Witam, Stanąłem przed koniecznością użycia w moim projekcie pamięci zewnętrznej AT45DB321D. W pamięci tej przechowywane mają być wyniki odczytu z przetwornika AD czyli zmienne 12 bitowe. Razem około 8 tysięcy odczytów. (?) Z pomocą przykładów znalezionych w sieci uruchomiłem obsługę w/w pamięci przez sprzętowy SPI. Mogę odczytać status pamięci, zapisać...
Witam, Ostatnio miałem trochę mało czasu żeby się zająć tą sprawą, lecz teraz z powrotem wracam do tematu. Uruchomiłem debugowanie dzięki tutorialowi napisanemu przez Freediego (jeżeli chodzi o tutorial, to super, wszystko ruszyło za pierwszym razem :) ) Będę omawiał przejścia tylko te które prowadziły do problemu. I debugowanie wygląda tak, zaczynamy...
Słuszna uwaga. Pracuję nad bootloaderem. Narazie widzę, że procek w ogóle działa ponieważ Szukam sposobu, żeby wgrać program.
może zdefiniuj sobie dodatkowo w pliku gdbcmd komendy wyświetlające zawartości rejestrów, np. Dodano po 35 tak sobie jeszcze teraz kombinuje z Pythonem w GDB, i zrobiłem takie coś: [syntax=text]define ppp python print(f"Zawartosc rejestru GPIOB->ODR: 0x{int(gdb.parse_and_eval('((GPIO_TypeDe... end end[/syntax] wtedy komenda...
Wersja z szablonem to po prostu lukier. Jeśli chcesz przesłać obiekt struktury to po prostu przekazujesz go do funkcji a sizeof z rzutowaniem zrobi się sam Dla std::string też? Sprecyzujmy: dla PODów (może faktycznie zmienię nazwę by była bardziej jednoznaczna - transmit_pod ?) ;) Albo dla struktur zawierających łańcuchy tekstowe std::string lub char*...
http://obrazki.elektroda.pl/3796073600_1... I Opis ogólny urządzenia: Chciałbym przedstawić mój projekt bazujący na mikrokontrolerze STM32 dokładnie na modelu STM32F11RET6 http://www.st.com/content/st_com/en/prod... Jest to sterownik dla urządzenia...
A więc stworzyłem deskryptory dla urządzenie kompozytowego CDC+HID. Obserwacje: 1. Jednak system ma również oddzielny driver dla klasy kompozytowej, instaluje go najpierw. 2. Potem instalują się sterowniki HID oraz Virtual COM (CDC) 3. Niestety Virtual COM nie chce mi się zainstalować, mimo że używam drivera, który działał, gdy urządzenie nie pracowało...
Jakakolwiek zmiana string literals (u Ciebie to "Why!") w C to undefined behavior. Spróbuj tak: [syntax=c] void lcd_print(int x, int y, char* txt) { txt[0] = 0; // tutaj HardFault } main() { char str[] = "Why not ;)"; lcd_print(0,0,str); } [/syntax]
No i pojawił mi się następny, gorszy problem (tamten został już rozwiązany). Otóż okazuje się, że w momencie kiedy użyję gdziekolwiek w programie funkcji malloc wynikowy wsad jest kompletnie niepoprawny pomimo iż kompilator nie zgłasza żadnych błędów. Program automatycznie się zawiesza, nie zostaje wykonana nawet choćby jedna linijka z funkcji main()....
Witam, To mój pierwszy post na tym forum :) Staram się zrealizować komunikację mojej aplikacji z płytką STM32 poprzez UART. Moim problemem jest to, że stworzona aplikacja pobiera tylko pierwsze 8 bajtów ramki zamiast 52. Jest to na pewno wina mojej aplikacji, ponieważ sprawdzałam co na port COM wysyła STM za pomocą RealTerm'a i wszystko się zgadzało....
Thank you for the explanation. I want to better understand your algorithm. Can you please upload these files?: #include <unistd.h> #include <fcntl.h> #include <string.h>
Zastosowałem się do Twoich wskazówek, porzuciłem HID na rzecz właśnie vendor specific. Posprzątałem także ConfigDescriptor i teraz wygląda tak: [syntax=c]const uint8_t ConfigDescriptor[SIZ_CONFIG_DESC] = { 0x09, // bLength: Configuration Descriptor size USB_CONFIGURATION_DESCRIPTOR_TYPE,// bDescriptorType: Configuration SIZ_CONFIG_DESC, // wTotalLength:...
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);...
Cześć Chciałbym przedstawić kolejny mój projekt, tym razem jest to sterownik CNC. https://obrazki.elektroda.pl/2364320600_... https://obrazki.elektroda.pl/6352873400_... Jest już na rynku masa różnego rodzaju sterowników obrabiarek CNC, jak zwykle jednak chciałem zrobić coś własnego. Najważniejsze założenia projektowe:...
stm32 string flash stm32 usart string growat string
czujnik deszczu skoda warstwa fizyczna muzyka elektroniczna
Lokalizacja kości BIOS na płycie VA70/VG70 REV: 2.1 Acer Aspire V3-771G Schemat elektryczny Citroen Jumpy 1.6i 1998