Tuner o którym tu mowa kiedyś już opisywałem na forum: https://obrazki.elektroda.pl/7645194700_... Można też bardzo łatwo zmienić bootlogo w tym tunerze za pomocą konsoli UART: https://obrazki.elektroda.pl/8084879700_... Oczywiście obecnie w dobie DVB-T2 takie tunery nie są zbyt użyteczne. Można oczywiście nadal obejrzeć...
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...
https://obrazki.elektroda.pl/8808596700_... Pokażę tu jak łatwo uruchomić MAX31855 z Arduino a potem omówię jego protokół komunikacji. MAX31855 oferuje 14-bitowy pomiar temperatury z zakresu zależnego od użytej sondy, od -270°C aż do 1800°C. MAX31855 oferuje prosty protokół komunikacji oparty o SPI, zasadniczo odczytujemy z niego tylko...
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, 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ć...
Warto jednak zdawać sobię sprawę jakie są koszty użycia tej klasy: No dobra, ale wiesz że przykład którym się posłużyłeś nie ma identycznej funkcjonalności, no nie? <: Nie żebym był za używaniem std::string na mikrokontrolerach w każdej sytuacji, no ale jednak wypadałoby zaznaczyć, że ta klasa ma sporo większe możliwości niż goły wskaźnik. Bo gdyby...
O dzięki, przeoczyłem to. Zmniejszyłem opóźnienie o 1/3 bo F0 taktuje z 48MHz a F1 z 72MHz, ale nadal nic się nie wyświetla :( Dodano po 13 Z kolei na tym kodzie wyświetla znak zapytania:/ Niezależnie od tego co bym chciał aby wyświetlił. main: [syntax=c]#include "lcd_hd44780_lib.h" int main(void) { lcd_init(); lcd_writecommand(HD44780_CLEAR); while(1)...
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ę...
Korzystam z tego [url=http://www.tme.eu/pl/details/wsh-47... RS485 bazującego na układzie SP3485 ([url=http://www.waveshare.com/w/upload/... a nie jak pisałem MAX3485. Wyprowadzenia /RE oraz DE odpowiadające za kierunek transmisji są ze sobą połączone. Wykorzystuje zestaw...
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() }
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);...
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 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...
.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]="...
Witam, w ramach eksperymentu oraz wstępu do dalszych projektów, nagrałem kilka minut ruchu w sieci CAN podczas jazdy samochodem. Nagrałem to modułem na STM32 po SocketCAN. Teraz próbuję to nagranie przechwycić modułem na Atmega328 (16MHz) z MCP2515. Używam do tego bibliotek Arduino z https://github.com/coryjfowler/MCP_CAN_l... Wgrałem standardowy przykład...
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
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:...
Zmieniłem program i dodałem opóźnienia. Tak teraz wygląda funkcja wysyłająca dane (i grupujące je w bloki po 250 bajtów) w STM32: [syntax=c]#define MAX_TRANSFER = 250[/syntax] [syntax=c]void wyslijDane ( uint8_t *wskaznik_poczatku_danych, uint8_t *wskaznik_konca_danych) { uint32_t dlugosc_danych; //okresla liczbe danych do przeslania int calkowite_transfery...
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...
Tak wygląda cała moja biblioteka: [syntax=c] #include "stm32f10x.h" #include "clock.h" #include "t6963c.h" //--------------------------------------... // Graphic LCD with Toshiba T6963 controller // Copyright (c) Radoslaw Kwiecien, 2007r // http://en.radzio.dxp.pl/t6963/ // Compiler : avr-gcc //--------------------------------------...
Witam, otóż zasilam owy wyświetlacz napięciem ±3.3V, a także stany logiczne są na tym poziomie. Pin kontrastu jest podpięty bezpośrednio do masy, kontrast wizualnie wydaje się być dobrany idealnie. I problem w tym, że pixele bardzo wolno się zapalają.(wyszło mi ok. ~300ms na pełne zaświecenie pixela) Czy jest to jest maksimum wyświetlacza, czy...
Generalnie by użyć switcha w tej sytuacji są 2 opcje, przejście przez tę mapę (switch po kluczu) - w wypadku gdy masz dużo pamięci (większa czytelność kodu), lub funkcja hashująca - gdy tej pamięci nie masz. Z racji użycia c (sądząc po rozszerzeniu) Użyj np djb2 z http://www.cse.yorku.ca/~oz/hash.html Potem robisz: switch(hash(string)) { case wynik_hash:...
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ć.
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!!
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...
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...
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)....
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".
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...
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ź...
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]
Mały krok do przodu. Udało mi się identyfikować co powoduje tak duże zużycie pamięci. Winowajcą jest biblioteka "Regular expressions library" <regex>. Na szczęście jest ona wykorzystywana tylko w jednej mało ważnej funkcji którą udało się zmodyfikować tak aby korzystała z <string> zamiast <regex>. Zajętość pamięci flash spadła ze 140kB...
Występuje wyjątek bo nastepuje dostęp RW do pamięci flash ktora jest tylko do odczytu a wszystkie stałe umieszczane są bezpośrednio we flash. Najprościej do funkcji dodać jeszcze jeden argument ze wskaźnikiem na bufor wyjściowy. [syntax=c]char *STRING_DeleteStr(char * dst, const char *string, const char *del, u8 mode)[/syntax]
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?
Udało mi się skompilować kernela w wersji 6.7(https://github.com/maniekx86/linux_m... Trochę zabawy z tym było, bo najpierw próbowałem 6.1 jak z tego filmiku, ale się nie chciał skompilować za pomocą gcc 12.2. Wogóle pierwszy raz coś robiłem z architekturą MIPS. Zawsze dla mnie to był archaizm, którego nigdy nie spotkałem....
Hmmm... U mnie ten projekt po rozpakowaniu się skompilował od razu, nawet nie otworzyłem Makefile żeby zobaczyć co w nim jest... [syntax=bash]>make Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfloat-abi=h ard -mfpu=fpv4-sp-d16 -ffast-math -g -ggdb3 -Wa,-amhls=out/startup.lst -DSTM32F 4XX -MD -MP -MF...
Na offsecie BS_FilSysType32 w MBR sector 0 niekoniecznie musi być zapisany string "FAT". Dopiero jak załadujez blok z tablicy partycji t o musi się tam byc napis FAT. Pokaż zawrtość bloku: 0x00000800 (wartość z offsetu 446 + 8) bo tam znajduje sie MBR z stringiem "FAT" (przynajmniej powinien ;)).
[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...
Dodając na koniec wskaźnik na ten twór to: const char * const (*string)[]; Dzięki i pozdrawiam
Tak więc nie potrafię tego rozwiązać. Jeśli ktoś tu trafił bo szukał odpowiedzi na ten temat, to polecam zrobić coś takiego : Lepiej nie. Nie dość, że zwracasz wskaźnik na znienną zaalokowaną na stosie, to jeszcze piszesz po pamięci poza zmienną.
1. const char * const str1 = "string numer 1"; const char str2 const char* text);`.
Witam, Mam problem z nawiązaniem komunikacji między dwoma zestawami STM32F103ZET6+nRF24L01. Bazowałem na informacjach z tej strony: "[url=http://maniacbug.github.io/RF24Net... Ściągnąłem odpowiednie pliki z klasami RF24 i RF24Network, oraz klasą SPI(wykorzystywana przez poprzednie klasy), przerobiłem je pod STM32, po czym spróbowałem...
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>...
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ć.
No tak to pominąłem. W tablicy są liczby. Dokładnie to typ u32. Choć wystarczy informacja o liczbowym typie. Może skorzystam i dopiszę coś jeszcze. Otóż program realterm nie jest dla mnie dobrze znany więc opisze jakie czynności zamierzam wykonać. Wysyłam z uP dane do kompa przez BTM222 i odbieram aplikacja realterm. Dane odebrane aplikacja a wysłane...
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...
Witam. Szkole się w programowaniu zacnych STM32 i od razu na poczatku mam problem z funkcja printf(); Po wywołaniu tej funkcji procesor się zawiesza. Mam zrobiony proste nadawanie i odbieranie danych przez UART. Używam Keila MDK ARM V5 biblioteki HAL wygenerowane w STM32CUBEMX. Korzystam z płytki Kamami Zl27ARM. Na razie chcę uzyskać następujące efekty:...
Mnie właśnie przydałby się sam scheduler, bo koncepcja działania peryferiów często bardzo zależy od użytego układu i samego projektu. Może powinieneś rozdzielić ten projekt na dwa, jeden to czysty scheduler i drugi projekt to cały system który z kolei jest oparty o ten pierwszy projekt. Zauważ, że im bardziej rozbudowany będzie ten projekt, tym trudniej...
Nie, że fanaberia. Ale po co tworzyć CRC tylko dla stringów. Nie rozumiem. W moim przypadku ten string to będzie zestaw zmiennych liczbowych, które wysyłam do PC. Zmienne będą oddzielone znakiem średnika. Myślę, że CRC jest właściwym rozwiązaniem, żeby zabezpieczyć się przed błędami w odczytanych danych? Chyba, że masz na myśli coś innego. CRC dla...
stm32 string flash stm32 usart string growat string
schemat magnetofon finezja lampka sharan rezystor opalarka
brumienie laptop wzmacniacz tda2003
Podłączenie zbiorniczka oleju mieszanki w skuterze 2T – montaż, odpowietrzanie, przewody DeLonghi ECAM vs ESAM – różnice termobloków, serwis, awaryjność, modele ekspresów