Jesli ostatni próbuje się wykonać memcpy, to na 99% jest to zapisz danych pod zero lub inna pamięc RO. Dowiedz się ile wynosi parametr pxQueue->pcWriteTo. Jeśli ta liczba to nie jest adres RAMu (0x20000000+ wskaznikiem , z ktorego korzysta RTOS. Skoro ten wskaznik u ciebie ==0, no to krzaki gotowe...
Struktura zawiera pola dla czasu i daty więc zmiana dnia z pewnością sama się nie zrobi. Jak dla mnie najmniej upierdliwą metodą jest trzymanie alarmu w programie w formie timestampa a przy programowaniu alarmu jego przeliczanie do HALowskiej struktury przy użyciu time.h
Tak mnie uczyli różnej maści "starzy wyjadacze" programiści... Pewnie każdy zauważył już, że niektóre rzeczy są w informatyce robione na zasadzie "tak, bo tak". IMO po prostu kiedyś ktoś tak zrobił i stało się to pewnym standardem, bez zastanowienia czy tak jest lepiej, gorzej czy bez różnicy. 4\/3!!
No dobra, czas tWC musi w moim przypadku trwać minimum 70ns. Na wejściu WE musi pojawić się stan niski po czasie minimum 0ns (czyli w tym wypadku nawet od razu?) po zmianie adresu, ale nie później niż na 60ns przed.. no właśnie, przed czym? Przed kolejną zmianą adresu? Skoro tHA ma minumum 0ns? Szczerze powiem że nie rozumiem o co Ci chodzi. Tu raczej...
Pytanie perspektywiczne, nie realizuję obecnie nic takiego Kilka nóg mikrokontrolera (np 3, albo 4,5) ustawione w wyjście, i traktowane jako jedno "słowo". Ale nie 8. Ustawiane jednym rozkazem a nie trzema. Sąsiednie spełniają inne role. Czy jest takie coś i jak to się nazywa po angielsku Rodzina AVR (w tym duże Attiny) ale/i STM32
OK, ale chcę zmieniać liniowo wartość prądu odcięcia, a przy stałych Vref raczej się tak nie da. Czy można w STM32 ustawiać liniowo wartość napięcia reakcji?
Skrypt linkera z Cube'a "działa" tak, że na początku pamięci ram ląduje sekcja data (zmienne inicjalizowane przy starcie programu - lokalne statyczne i globalne), potem jest bss (zmienne zerowane przy starcie programu - nie inicjalizowane statyczne i globalne). Następny kawałek to _user_heap_stack - czyli sterta i stos "w jednym". Rozmiar data i bss...
Czy czas działania DMA dla PWM, ADC i UART nie będzie kolidować ze sobą? Gdyby np. ustawić wolniejszą prędkość transmisji na 19kb/s (powtarzanego 5 razy/sek) to czas transmisji kolidowałby z czasem obliczeń danych pobranych z ADC i ustawiania PWM.
mozesz tez przy wiekszym nieco udziale rdzenia (ale wtedy bedzie już w pełni automatyczne i jedyne co musisz liczyć to co ile transmisja do ADC ma być wyzwalana). Czas ten musi być większy niż czas transmisji + 210ns. Zauważ że w przypadku 100k I2C ta częstotliwosc nie może być wieksza niż ~590Hz a w przypadku 400k 2370Hz. Jezeli potrzebujesz większej...
Rozwiązanie drugie jest lepsze, nawet trzymał bym jako znacznik czasu czas UTC i do niego dodawał offset. A z ustawianiem czasu nie ma problemu - wystarczy, że zadaną godzinę w razie potrzeby potraktujesz odwrotną poprawką niż do wyświetlania.
Krótko mówiąc - masz wybrany dobry proc? ;) Ja nie używam CCS tylko Eclipse+GCC [przerobiłem pod LM4 migacz Freddiego na STM32] i muszę ustawiać to ręcznie, nie wiem jak jest tu. Zresztą pod CCS dla MSP430 też trzeba odpowiedni model wybrać, także nie do końca łapię w czym problem... Pzdr.
Biblioteka Arduino do obsługi Rtc dla Nucleo. Dodano po 2 Aby obsłużyć RTC (Real-Time Clock) na płytce Nucleo przy użyciu Arduino, zalecam skorzystanie z biblioteki STM32RTC , która jest specjalnie zaprojektowana do pracy z mikrokontrolerami STM32, w tym płytkami Nucleo. Poniżej znajdziesz szczegółowe kroki, jak zainstalować i używać tej biblioteki....
OK, dzieki użyłem gotowca Nie używaj gotowców w takiej banalnej sytuacji. Doczytaj co to jest ten Systick. W dużym skrócie to licznik 24 bitowy - to ważna informacja, może zliczyć maksymalnie do ok. 16 mln (2 do 24). Po doliczeniu do zaprogramowanej wartości zgłasza przerwanie. Do ustawiania wartości można użyć funkcji Systick_Config(), ale najlepiej...
No bo pomyśl. Najpierw ustawiasz wyjście push-pull a potem dajesz mu stan wysoki. A zastanów się co się dzieje w czasie gdy ustawisz wyjście push-pull i program przechodzi do ustawiania stanu wysokiego? Na wyjściu jest 0 bo jest to domyślna wartość. A więc najpierw daj tą super funkcję GPIO_SetBits a dopiero potem tą jeszcze bardziej super funkcję GPIO_Init.
1. Przykładowy projekt dla STM32 (kompletny dla gcc i Eclipse) znajdziesz tu http://www.elektroda.pl/rtvforum/topic13... 2. Moje zdanie na temat tych bibliotek jest takie: Skoro zamiast: STH->REG1 = COMPLICATED_MODE_4; STH->REG2 = PRESCALE_64; STH->REG3 = DO_MAGIC_4_TIMES; można napisać: STH_InitStruct_t STH_InitStruct = {COMPLICATED_MODE_4,...
RCC_CFGR_PPRE2_DIV1 Chyba kolega coś pomylił: Ustawiam RCC_CFGR_ PPRE1 _DIV2 , a nie drugi raz rejetr PPRE2 _DIV1 Właśnie się odnosiłem do tego, żeby w ogóle nie "ustawiać" RCC_CFGR_PPRE2_DIV1 więc się nie pomyliłem. Jak zmienna i będzie volatile to też tyle samo trwa ? Masz tam wpisane wartości opóźnień na sztywno i optymalizator mógł stwierdzić,...
Czy po uruchomieniu/restarcie STM32 porty ustawiają się od razu na domyślne wartości rejestrów ? Tak.
Jesteś dopiero na początku problemów z modemem. Jeśli uC ma sterować modemem, to musisz w kodzie zbudować całkiem spory automat z parsowaniem dowolnych odpowiedzi modemu i np. ustawianiem znaczników wykrycia poszczególnych odpowiedzi. Pierwsze zdziwienie, jakiego doświadczysz: modem może w dowolnym momencie wypluć dowolną wiadomość - i Twoje oprogramowanie...
Za pomocą BRR możesz szybko kasować poszczególne bity bez dotykania innych , a z pomocą BSRR ustawiać poszczególne bity bez dotykania innych . BSRR daje jeszcze jedna możliwość, w tym samym czasie możesz jedne bity kasować, jeszcze inne ustawiać, bez dotykania jeszcze innych . Mechanizm ten jest po to, aby przyspieszyć dostęp do portów i żeby dostęp...
Dzięki wielki za szczegółowe wytłumaczenie wszystkiego. Troszkę dostałem zaćmy :-) i zacząłem liczyć takty timerów , "sklejać" ze sobą przebiegi PWM, i mi nie wychodził czas, a przecież długość całego impulsu ustawia Zegar SPI.
Nie o to bo on nie może nic lutować do płytki, no dobra to można tu użyć timera, żeby wyliczał ten czas, jak skonczy liczyc to ustawia flage dodatkową na przykład która pozwala sprawdzić kolejny warunek.
Funkcja, którą wywołujesz zajmuje troche duzo czasu jak na przerwanie. Radziłbym ją wyrzucic do main a w przerwaniu ustawiać jakąś flagę, że było przerwanie czy coś w tym stylu.
Odczyt rejestru DR przez debugger jest odczytem, a więc resetuje flagę RXNE w rejestrze SR. Wyłącz podgląd rejestru DR to powinno być lepiej.
Wiem jak włączyć każdą z diod, ale tylko jedną 'za jednym zamachem' Pokaż jak to robisz bo wróżek tu nie ma aby stwierdzić czy używasz HAL, SPL czy piszesz bezpośrednio do rejestrów. nie wiem jak napisać program, gdzie GPIO_Mode się zmienia podczas działania programu. A jak ustawiasz teraz, ze nie wiesz jak to zmienić w czasie działania programu?
Czyli RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2... ENABLE) też mam ustawiać?
Jeśli dobrze rozumie to nawet jeśli w programie ustawiałbym całą linie danych za jednym razem to i tak port STM32 jest ustawiany bit po bicie. Natomiast w AVR może być ustawiany 8 bitów jednocześnie? Wprowadzę wyżej wymienioną zmianę i zobaczymy co z tego wyjdzie.
Zupełnie nie rozumiem, do czego (poza psuciem sygnałów) są potrzebne te transoptory. Zacznij od wyrzucenia ich z układu. Oprogramowanie moim zdaniem błędne - nie widzę kasowania impulsu powrotnego przy braku odbicia, zadziwiające użycie obliczeń zmiennopozycyjnych przy całkowitych argumentach i wyniku. Rzuć okiem na to: https://ep.com.pl/files/11495.pdf...
Nie bardzo wiedziałbym jak tego użyć. Chyba że jakiś przykład miałby ktos, kto to już robił. A może tak: [syntax=c] #include <time.h> ... struct tm * loctim ; // struktura zawiera pola typu tm_year czy tm_min time_t tt ; // odczytywanie licznika tt = RTC->CNTH; tt = tt << 16; tt = tt | RTC->CNTL; loctim = localtime(&tt) ; ......
Sprawdzasz flagę sygnalizującą zdarzenie które chcesz obsłużyć. Jeśli jest ustawiona to ją kasujesz i obsługujesz dane zdarzenie. To przerwanie globalne więc służy do obsługi różnych zdarzeń. No ok. Ale cały czas dążę do tego, że flaga ustawia się kiedy to zdarzenie nie nastąpiło bo kanał CC jest wyłączony.
Przedstaw sobie parametry w logic to ci zdekoduje. Wszystko działa. Zbocze i polaryzacja - to się w parametrach transmisji ustawia.
Cieszę się, że mogłem pomóc. Fakt - ciężko się w tym odnaleźć, tym bardziej, że czasem są dziwne zależności. Jak np. żeby włączyć PWM dla TIM1 trzeba ustawić bit w rejestrze od break'a i dead-time: Dodano po 57 Pomogło dzięki. Ogólnie biorąc to w tych ARM'ach strasznie dużo rejestrów trzeba poustawiać, żeby coś działało ;) Mam jeszcze pytanie dotyczące...
Cześć, Pozwolę sobie oszczędzić trochę czasu innym, którzy spotkają się z tym problemem. Nie wiem jak wygląda sprawa ze starszymi mikrokontrolerami, ale w F7 rozwiązano problem odwróconej kolejności bitów, rejestry modułu CRC pozwalają na ustawienie sprzętowego odwrócenia bitów i bajtów. Przykład konfiguracji pod CRC32[zip, itp] dla biblioteki HAL:...
1/ nadużywanie ustawiania bitów "|=". Nigdzie nie ma odpowiadającego wstępnego kasowania bitów, które są ustawiane, więc z góry zakładam, że ten kod może być zawodny. Najlepszym rozwiązaniem jest pojedyncze wpisanie do rejestru jednej wartości zawierającej żądane ustawienia wszystkich pól. 2/ [syntax=C]TIM1->PSC = 23999; TIM1->ARR = 1;[/syntax] Na timer...
Alternative function da się tylko ustawić dla wyjść. Jako wejście można ustawić pływające, z pullup/downem albo analogowe. Tabelki z opisami jakie piny jak mają być ustawione są zaraz nad opisem rejestrów w RM0008 między innymi ta, którą Ci wkleiłem i nimi należy się kierować przy ustawianiu GPIO.
http://obrazki.elektroda.pl/8034957300_1... Z racji iż były święta i było kilka dni luzu postanowiłem w ramach rozruszania szarych komórek pobawić się płytką HY-MiniSTM3V. Znawcy procesorów ARM doskonale znają tę płytkę więc znają jej możliwości. Samo mruganie diodą mnie nudzi, więc wymyśliłem projekt bardziej ambitny :D i tak powstał...
To jak już rozebrałeś to na jakim kontrolerze jest ta stacja? STM32 czy STC? Jeśli na STC to bardziej jest to odpowiednik Mini STC. I wygląd, rozmieszczenie elementów tez jest zgodne. Nawet potencjometr do kalibracji... Masz możliwość zmiany nastaw PID (w STC przy wypiętej kolbie po dłuższym wciśnięciu enkodera), a przy wpiętej kolbie jest możliwość...
Ta linia : LCD_WriteReg(0x0011,0x60B8/*58 0x6070*/); LCD_Delay(5); wyglada inaczej niz u mnie, tzn wszystkie linie u ciebie z komentarzem w nawiasie , u mnie zawieraja wlasnie ta wykomentowana wartosc. linie powyzej (te z komentowana zawartosci) nie maja jako tako wplywu na kolory tak ta linia wyrozniona przeze mnie ustawia sposob zapisu...
Konfiguruję ADC do pracy w STM32L152. Tradycyjnie, problem jest taki, że nie działa. Kod programu wygląda następująco: [syntax=c] int main(void) { RCC->AHBENR = RCC_AHBENR_GPIOAEN;//taktowanie portu A RCC->APB2ENR = RCC_APB2ENR_ADC1EN;//taktowanie ADC GPIOA->MODER |= GPIO_MODER_MODER0;//PA0 jako wejscie analogowe ADC1->CR2 = ADC_CR2_ADON;//wybudzenie...
Debouncing w przerwaniu - tylko nie mów, że robisz to przez aktywne oczekiwanie wewnątrz przerwania. Jeśli tak, to zauważ, że to, że skasowałeś flagę przerwania i jesteś w przerwaniu wcale nie oznacza, że flaga nie może zostać ustawiona ponownie. Możliwy jest taki scenariusz: wciskasz przycisk, pojawia się zbocze opadające które ustawia flagę a więc...
Tak wiem to wygląda trochę głupio gość piszę że chce wysyłać co 1 sek jeden bajt. Czy nie mógł by po prostu wpisać jej do rejestru nadawczego co 1 sek? A pewnie że by mógł. Tyle że ja ostateczne będę chciał przesyłać 20 elementów tablicy, czyli zapoczątkuje jedno wysyłanie a DMA samo przejedzie po wszystkich elementach tablicy aż licznik zejdzie do...
Witam. Borykam się z takim oto problemem: Mam stm32 połączony po I2C z RTC razem z baterią podtrzymującą napięcie. Ustawiam sobie przy pomocy pewnej funkcji da sztywno czas czyli sekundy, minuty, godziny, dzień, miesiąc oraz rok. Następnie zakomentowuje funkcję ustawiającą czas aby mieć pewność, że żaden bajt nie zostanie wpisany do RTC po raz drugi....
W tym temacie napisałem już co najmniej 2x gdzie się to ustawia. 4\/3!!
Problem nadal występuje. W wersji 5.0.1 Cube jako nakładka do Eclipse (Neon.3 release 4.6.3) nie można już edytować pola LSE (nie dziwne, bo nie ma po co - mikrokontrolery akceptują tylko klasyczne kwarce zegarkowe 32768 Hz). Jednakże problem dzielenia wartości w polu LSE przy każdym wejściu w Clock Configuration nadal występuje. Po zmianie wartości...
Co ma CLK do naszego przypadku z LCD jak go nie używamy?? To jest najważniejsze: p.FSMC_AddressSetupTime = 1; p.FSMC_DataSetupTime = 1; Ja mam wszystko w rejetrach na wartości minimalne czasów i nadal lipa. Uzywam stm32f217 z 120 MHz taktowania, więc powinno być lepiej niż w STM32f1, ale tak nie jest. Zauważyłem, że jak zmieniłem ilość danych z 16 na...
Na takich jakie ma ten STM. Jeżeli to jest jego wina, to po prostu sprawdzę procesor konkurencji. Co najmniej 144 nóżki. Minimum 2 ADC po 8 kanałów >= 16 nóżek pomiarowych Minimum 4 timery z czego minimum 8 kanałów PWM Minimum 512K na program Min 50Mhz DMA min 2 kanały USB CAN Interfejs SPI do podłączenia ethernet przez kość ENC28J60 I do tego w cenie...
Spróbowałem maski, ale też wspomniałem, że dokładnie takim samym błędem kończy się poszczególne ustawianie bitów jak robię to na całej reszcie rejestrów. Salmona widziałem, z tym, że on korzystał z STM32 C031, co prawda dokumentacja z której korzystał jak na razie pokrywa się, tak jemu sterowanie diodą zadziałało od razu, tak mi już nie działa. Inna...
Zauważa pozornie. Ustawia się tak by na wyjściu byl stan wysoki przez jak najkrótszy czas (w okolicach zera). 50Hz to wolny przebieg. Jakiekolwiek napięcie wejściowe spolaryzuje diodę wejściowa. Dlaczego nie użyjesz odpowiedniego optotriaka? Rezystory muszą wytrzymać odpowiednie napięcie i moc. dobierze rezystor w kolektorze.
No ale wyzwalanie nowego transferu nadal musi być w IFie. Albo wywal ustawianie bitu HTIE.
Nie ma tutorialu C do ARM. Jest po prostu C i musisz sie nauczyc nowej architektury (np ARM), i jak sie pewne rzeczy ustawia, stosuje.
Po to są bufory cykliczne (czy kołowe), żeby uniknąć takich problemów - do bufora sięga tylko wątek ISR i wątek pobierający dane z bufora: przy odbieraniu danych w ISR wpisujemy znak na pozycji wskazywanej przez indeks wejściowy i ustawiamy ten indeks na następną pozycję; przy pobieraniu danych z bufora zabieramy znak z pozycji wskazywanej przez indeks...
https://obrazki.elektroda.pl/2479002500_... Cześć, W nawiązaniu do projektów : Stacja lutownicza RT PRO 3 (grot Weller RT) by Slawek K. https://www.elektroda.pl/rtvforum/topic3... Stacja lutownicza/rozlutownicza RT PRO 3 by Slawek K. https://www.elektroda.pl/rtvforum/topic3... zrobiłem kolejną wersję stacji lutowniczej,...
Witam , Wracam do tematu . Zegar skończony i przetestowany . Podziękowania dla autora za pomoc . Kilka krótkich filmów z pracy zegara wykonane telefonem . https://filmy.elektroda.pl/11_1551555088... https://filmy.elektroda.pl/90_1551555174... https://filmy.elektroda.pl/15_1551555225... https://filmy.elektroda.pl/89_1551555287... Jedna z dwóch gier...
Pewnie dlatego, ze wczesniej programowałem (AVRy) pod Eclipse, a CooCox to w sumei Eclipse jest. Coocoxa kiedyś używałem, ale odniosłem wrażenie że nie nadąża za trendami w STM32. Jeśli nie czujesz się jakoś specjalnie przywiązany do (schyłkowego) SPL (np. dorobek własny), to ośmielę się zasugerować System Workbench for STM32 także na Eclipse i używanie...
Procesor konkretnie STM32F411 - w pierwszym poście jest napisane. Trybu uśpienia na razie nie używam bo przy tych wybudzaniach co 125us nie ma to zbytnio sensu. Próbowałem też podejścia z trybem InputCapture - wejscie DRDY skonfigurowałem w tym trybie, transfer DMA z Timera generowany na opadającym zboczu przerwania. W tym transferze chciałem "uruchomić"...
Nie sądzę. Tak czy siak ustawiasz to raz i zapominasz. Ew. piszesz uniwersalnego Makefile'a z masą ifeq zależnych od symboli a potem wrzucasz definicje tychże w odpowiednie miejsca w Eclipse'ie. Ale średni ma to sens imho, jedyne czego czasem używam to Build configu w wersji debug i release, mam wtedy -O0 i -Os przełączane z klika. Ale nadal zysk niewielki,...
Witam Jestem początkującym w temacie FreeRTOS i mam parę problemów ze zrozumieniem działania tego systemu. Jeśli mam jakąś obsługę przerwania i w czasie jego wystąpienia ustawiam semafor na który czeka jakieś zadanie o niskim priorytecie (albo nie najwyższym) to po wyjściu z tego przerwania to zadanie będzie niezwłocznie wykonywane czy system poczeka...
BTW najpierw powinieneś coś wysłać a potem czekać na opróżnienie bufora - nie na odwrót jak u Ciebie. Nieprawda - właśnie lepiej czekać PRZED, bo po wysłaniu wcale nie musisz - możesz w tym czasie robić coś innego. Jest to rozwiązanie o wiele bardziej optymalne - czekając PO czekasz ZAWSZE (nawet jak za chwilę nic nie będziesz wysyłał. Czekając PRZED...
Inicjalizacja podstawowa wygląda dobrze. Teraz tylko wywal odbiornik, zostaw sam nadajnik i do niego podepnij się z analizatorem. Potem ustaw "Operating Mode" na "Loopback" i wygeneruj kod. Nie martw się, też się kiedyś z tym ostro namęczyłem :P Warto dokładnie poczytać RMa i inne pdf które wypuściło ST, czasem są tam niezłe ciekawostki (np. ten Loopback)....
No może to jest to (a nawet chyba na pewno), choć rozumiałem to inaczej - ustawienie bitu START powoduje wygenerowanie sekwencji Start (dla mastera), więc logiczne że używa się go w programie obsługi a nie konfiguracji. Bit ACKEN nie powoduje żadnej reakcji 'natychmiast', informuje tylko że układ ma wysyłać potwierdzenia w czasie pracy. To zdanie "cleared...
a napisz jeszcze, gdzie zmieniasz stan portu na przeciwny, bo jak dla mnie, to instrukcja Bit_SET tylko go ustawia na 1.
Cześć, W budowanym przeze mnie układzie używam układu LMH6321, aby otrzymać większą wydajność prądową napięcia wystawianego przez DAC (AD5722). https://obrazki.elektroda.pl/5716122500_... Dodałem jeszcze wzmacniacz operacyjny w konfiguracji wtórnika w celu kompensacji dość dużego napięcia niezrównoważenia bufora LMH6321. Ograniczenie...
W RCC->CFGR ustaw preskaler dla głównego clocka ADC, to raz. Skąd on jest brany - RM - clock tree. Dwa - możliwe (a raczej pewne), że ADON trzeba będzie 2x ustawiać - odsyłam do opisu rejestrów w RM dlaczego. Trzy - sampling time: szukaj w RM "channel-by-channel programmable sample time", aczolwiek nie jest to krytyczne. Cztery ustaw odp. kanał w SQR1...3...
https://obrazki.elektroda.pl/7494052400_... Część początkujących, czy bardziej zaawansowanych użytkowników Arduino, zauważa po czasie ograniczenia związane z zastosowaniem w nim 8-bitowego mikrokontrolera ATmega328P bądź ATmega32u4. Idealnym wyborem wtedy jest płytka z 32-bitowym mikrokontrolerem STM32F103C8T6 od ARM, którą można...
A co to jest OB? Option Bytes W sumie jeszcze będę musiał wybadać co tam jest nie tak. W debug to było wyrzucane, bo chodzi o zabezpieczenie (RDP, WRP), więc objawiło się dopiero w wersji release ;) Dorzuciłem to w którymś momencie i chyba zapomniałem sprawdzić, bo wyrzucone nie sprawiało problemu, hehehe :D Co ciekawe RDP się ustawiał, bo potem musiałem...
To może przygotowałby kolega dla potomności przykład ? Bez rtosa dla uproszczenia? No ale co w tym przykładzie by miało być (innego niż w przykładzie dla C)? Przykłady ze stronki - choć już nieco "przedatowane" - spokojnie nadają się do wrzucenia do nich kodu C++. Jakby się uprzeć to miganie LEDem można zrobić w C++, ale zaraz by się pojawili malkontenci...
Tu I2C IMHO będzie gorszy, bo trudniej go sensownie z DMA połączyć, chyba, że hardware jest naprawdę sprytny, tylko jaki MCU takowym dysponuje? Sporo uC z rodziny STM32 ma taki I2C, szczególnie L0, L4, F7. Ładujesz do rejestru w jednej operacji adres urządzenia, kierunek transmisji oraz ilość bajtów do transmisji. Ustawiasz Start i w przerwaniu po...
I tu są dwie szkoły. Albo zrobić jedna niepotrzebną operacje, która wykonuje sie najczęściej raz po resecie i mieć pewność, że zawsze będzie ok (nawet jak inny kod, coś wcześniej na tych rejestrach zrobił), albo zaoszczędzić te kilka bajtów i czasem, w przyszłości, długo szukać błędu.
Musiałem je przeoczyć. Już wszystko udało mi się zrobić i napisać pierwsze programy. Pracuję w Keil 4.7 i nie muszę dołączać oddzielnie pliku z definicjami adresów rejestrów. Tworząc projekt wybieram mikrokontroler zgadzam się na dodanie pliku startowego i tworzę główny plik. Bez konfiguracji zegara wszystko rusza na wewnętrznym i jest dobrze. Problem...
Koledzy nie zrozumieli pytania :) Doskonale wiem jaki operator co robi :). W miejscach gdzie używam ~ wcale nie chcę ustawiać bitu na 1. Co lepsze - nawet nie chcę tego bitu ustawiać na zero gdyż jest on standardowo ustawiony na 0 do czasu aż ktoś go nie zmieni na 1 :). Tak jak wcześniej napisałem - te linie w których jest tylda - są w ogóle nie istotne...
No trochę ogarnąłem to co napisałeś Freddie Chopin. I teraz sytuacja wygląda tak, że mam prawidłowy odbiór danych po wysłaniu wiadomości z komputera w procku ale nie działa mi wysyłanie informacji z procesora do komputer. Nie rozumiem chyba zasady działania. Mój USART1_IrqHandler(): Dodano po 9 No dobra problem rozwiązany. Jak zwykle przyczyna błacha....
Pogubiłem się. W książce jest napisane, że przerwanie generowane będzie w momencie doliczenia do TIM_Pulse, ale z eksperymentu widzę, że częstotliwość generowania przerwania zależy w tym przypadku od prescaler + period (oraz oczywiście hclk). Co w takim razie ustawia TIM_Pulse? Dodano po 35 No i po uruchomieniu mam parę szybkich mignięć, a potem się...
Witam! To znowu ja. Uczyli w szkole o generale, co się kulom nie kłaniał, a ja mam rejestry, co się resetu nie słuchają, ani sprzętowego z pinu, ani z jtag-a. Jak to rozumieć? Timer i dma też nic sobie z resetu nie robią. Teoretycznie po resecie powinienem mieć w rejestrach reset value, ale przynajmniej w wymienionych tak nie mam. Pomaga dopiero wyłączenie...
Dodanie tej linijki wydaje się załatwiło sprawę ADC1->CR1 |= ADC_CR1_JAUTO ; z opisu wynika This bit set and cleared by software to enable/disable automatic injected group conversion after regular group conversion. czyli jak rozumiem pomimo że grupa injected ma wyższy priorytet to i tak będzie obsługiwana jako druga. Ciekawe jest to, że pomimo iż staram...
Dzięki za odpowiedź. Zastanawia mnie też sens stosowania zewnętrznego trafo. Czy różnią się one w praktycznym znaczeniu odporności na różne problemy wspomniane powyżej od złącz LEN z wbudowanym trafem? Mam na "widelcu" złącze RJ45-TRAFO-LP ( [url=http://www.tme.eu/pl/details/rj45-t... ) i może takie będzie...
Wciąż więc debatujemy nad funkcją dla jednego tylko układu, czyli dla STM32F0, w którym to faktycznie opóźnienie może mieć tylko dwie wartości. Co z układem w którym opóźnienie to może mieć więcej możliwych ustawień (STM32F4)? Tylko dla optymalizacji kilku linii i kilku cykli mam zrezygnować z faktu, że dla większości układów ST funkcja wygląda praktycznie...
(at)atom1477 Wiesz co mnie urzekło? NIE MA DEBUGGERA. Piszesz program, odpalasz go i ma działać. I lepiej żebyś rozumiał co robisz bo jak namieszasz to możesz wszystko wyrzucić bo nic Ci nie pomoże. To bardzo odświeżające tak sobie kodować w pamięci i debugować kod w głowie zanim jeszcze w ogóle zostanie uruchomiony. Po to masz tak mało pamięci żeby...
nsvinc dzięki wielkie :) Jak już napisałem to mój pierwszy i ostatni projekt z ta biblioteką. Zaczynając, pewnie jak każdy, myślałem, że producent zapewnił łatwy i dobry sposób programowania swojego procesora. Niestety żeby coś w tym napisać, nie wystarczy korzystać z biblioteki, bo i tak trzeba patrzeć w dokumentację i ustawiać często wszystko po swojemu...
kod nie ma nic do rzeczy, bo działał be zarzutu potrzebowałem wyprowadzić 32 kHz na zewnątrz i ten problem wyszedł niejako w praniu. Ale to przecież ustawia się właśnie kodem.
Proces enumeracji pomyślnie zakończony jednak teraz od kilku już dni borykam się z problemem od strony PC związanego z brakiem sterownika. Nawet podszywając się urządzenia typu MassStorage itp co według przykładów nie wymaga dodatkowych sterowników w dalszym ciągu urządzenie nie jest rozpoznawane albo gdy próbuję ze sterownikiem własnym dostaję błąd...
Dzięki szczywronek. Otwarłem dziś rano elektrodę, a tu niespodzianka. Pobrałem poradnik, zapisałem na dysku i poszedłem do roboty. Teraz otworzyłem, nieco poczytałem i już wiem, że z tym poradnikiem nie zginę w STM'ach. Przede wszystkim nie będę musiał się wpatrywać tak często w angielskie teksty, od których czacha mi dymi. Po krótkiej lekturze już...
dzięi za dotychczasową pomoc, zmiana SSM i SSI nic nie zmienia flaga TXE cały czas jest róna 0; A jak ustawiasz te bity i w którym miejscu? (jesli przed wywolaniem funkcji SPI_Init to ona Ci to i tak wyzeruje). Tu masz kod jaki mi działał z wykorzystaniem biblioteki ST void DAC_Init(void) { SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef...
Doczytałem trochę i ustawiłem zegar I2C2 na nowo ale całość dalej nie działa. Po wysłaniu adresu kamery ustawiana jest flaga AF czyli kamera nie zwraca bitu ACK. Co może być przyczyną takiego zachowania? [syntax=c] oid I2C_conf(void) { I2C2->CR1 |=I2C_CR1_ACK; I2C2->CR2 |= 8; //ustawienie APB1 na 8MHz I2C2->CCR |= 40; //SCL 100kHz -> 100kHz = 8MHz/CCR...
No to po kolei. Załóżmy, że masz ustawiony znacznik przerwania X. Próbujesz wykonać swoją błędną operację: SR &= ~X; którą procesor wykonuje tak: temp = SR; temp &= ~X; SR = temp; Po wykonaniu temp = SR; w SR jest ustawiany bit Y, bo timer właśnie wygenerował inne przerwanie. Twój błędny kod skasuje bit Y, bo zapisze 0 na pozycję bitu Y. Kod poprawny...
No bo wciąż ustawiasz rejestr IMR "odwrotnie" - zajrzyj do manuala co oznacza 0, a co oznacza 1. I w ramach testów zrezygnuj z ustawiania jakichkolwiek priorytetów przerwań czy czegokolwiek z nimi związanego. 4\/3!!
Do sterownika musisz wysylac dane zgodnie protokolem rs232. Nope. Raz, że Windows obsługuje tylko dane do 8bit, a dwa, ze krótsze są reprezentowane jako 8 bit. W efekcie calusieńka drogę od aplikacji do STMa pokonują jako 8bit. A co sobie potem STM z nimi zrobi (może zignorować parę bitów przecież) to juz tylko kwestia tego jak napisano aplikację w...
tak ma ale IMHO u-Blox sprawuja sie fajniej zwlaszcza seria precyzyjnych (niestety tez nie sa tanie). Jeszcze odnosnie Telita to zarowno GPS i modem mozna obslugiwac z jednego seriala. Wszystko ustawia sie odpowiednia komenda AT. Jednak ma to wade przy odpaleniu niektorych funckji GPS przestaje na ten czas dzialac (tzn. nie przesyla nam NMEA)... Zreszta...
Witam, Mam pewien problem z usypianiem/wybudzaniem procesora. Chciałbym uśpić procesor na czas wykonania konwersji przez przetwornik. Chciałem do tego celu wykorzystać tryb SLEEP ON EXIT. Rozpoczęcie konwersji wykonywane jest w przerwaniu od Timera, po wykonaniu instrukcji rozpoczynającej konwersję chciałem uśpić procesor, a wybudzić go w procedurze...
Witam dziękuję za odpowiedź. A więc tak po następnym uruchomieniu code blocksa już pamiętał ustawienia, więc nie wiem czym mogło być to spowodowane. (między czasie mógł być restart więc może to pomogło) Co do Ustawienia kompilatora i flag to kolega wcześniej miał rację nie mam ustawionych ani flag ani linkiera. Chcę programować procesor STM32F767ZI...
Co to niby ma być? USART1->BRR = (24+(0.9216/2))/0.9216; Policz to po ludzku: FCLK w Hz, szybkość transmisji w b/s Popatrz, jak zaprogramowałeś DMA - po 8 transferów, miały być 4 po 16 bitów z ADC do pamięci i 8 po 8 bitów z pamięci do USART. Dobry zwyczaj: nie ustawiaj bitów, których nie potrzebujesz ustawiać - w tym przypadku np.priorytetów DMA. Kod...
Nie ma takiej możliwości. DMA w STM32 nie ma funkcji przerzutu do tokena. Takie coś ma np. DMA zaimplementowany w PIC32. Na twój problem stosuje się specyficzne obejście, tzw. szukacz :] (nie wiem czy jest to nazwane profesjonalnie, ale wiadomo ocb) Sytuacja: 1) DMA jest skonfigurowany w circular mode, i przerzuca w kółko n danych do bufora o rozmiarze...
Zmiany bitu CPOL niczego nie zmieniają w działaniu LCD, więc spoczynkowy stan zegara jest dla niego chyba obojętny. Ustawienie bitu CPHA powoduje całkowity zanik komunikacji, czyli powinien być 0. Ciągle zastanawia mnie ten Baud Rate. Przy prawidłowej transmisji nie powinno mieć znaczenia zwalnianie jej. Zresztą wyświetlacz działa prawidłowo przy 72MHz...
Witam, jestem w trakcie wykonywania ćwiczeń z książki Mikrokontrolery STM32 w sieci Ethernet na zestawie uruchomieniowym ZL29ARM, z programatorem j-link edu, w środowisku eclipse (a konkretniej System Workbench for STM32 z pluginem do obsługi j-link). Aktualnie zawiesiłem się dłuższy czas na konfigurowaniu budzików biblioteki lwip (dla posiadających...
Co do modulacji na poszczególnych podnośnych, to chyba łatwo będzie QAM, można by zrobić QAM-16, będzie po 4 bity na bod, ładny kod wyjdzie, ale oczywiście nic nie stoi na przeszkodzie, żeby zrobić QAM-256 (może poza szumami). Samą modulację uzyskuje się przez ustawienie odpowiednich wartości w widmie zespolonym, dla każdej kombinacji bitów czytasz...
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Właśnie problem w tym, że próbowałem zrobić to jak należy ( czekając na flagi ) i w ten sposób zapisuje więcej danych. Razem z adresem urządzenia I2C musi być ustawiany bit R/W - w zależności od tego czy chcesz czytać czy pisać....itd.... Adres ar1020...
Och darmowy kompilator się znajdzie....GCC jest na licencji GPL, więc muszą udostępniać źródła. I ktoś się pokusił o własną kompilację. Może nie w najnowszej wersji, ale działają wszystkie opcje (w tym kod MIPS16), a biblioteki Microchipowe można łatwo podlinkować więc nie ma problemu. Poza tym nawet w tych Microchipowych była opcja -O1. W rodzinie...
Ok, czyli w zasadzie zalecane, ale nie bezwzględnie wymagane, szczególnie przy układach próbnych. Dla końcowych projektów powinno się je chyba najlepiej ustawić na pull (up czy down nie ma znaczenia - dla np. układów gdzie decyduje o tym GPIOx->ODR, można ustawianie ODR sobie darować).
tadzik85 napisał: Jednak istotnym mankamentem w przypadku ST jest fakt, że wartość kopiowana nijak ma się do ustawień w linkerze. ? Chodzi o to, że do vectora przerwań trafia wartość SP wynikająca z linkera, a w startupie wprost ustawiany jest RAM_END,
Fakt, u mnie tak jest bo na początku robię: [syntax=c] GPIOA->CRH = 0x0; GPIOA->CRL = 0x0; GPIOA->ODR = 0x0; [/syntax] Tak samo dla wszystkich portów B,C,D a później dopiero ustawiam co tam potrzebuje.
Dzięki wielkie za pierwszą podpowiedź jutro sprawdzę sugestię, ale priorytety w NVIC rozumiem : Hmmmmmm... czyli w pierwszej grupie TIM1 ma preemption=0 i sub=2 natomiast systick jest w 0 grupie i ma preemption == sub == 0 czyli wg mnie powinien wywłaszczać. P.S: W timerze delay jest mi potrzebny bo wysyłam dane po rs485 i muszę odczekać czas ze względu...
Trzeba ustawiać bit UG rejestru EGR po każdej zmianie.
zgemma ustawianie czasu ustawianie czasu pcf8583 ustawianie czasu bascom
włączeniu kompa restart płyta indukcyjny chiński sterowniki bluetooth module
odkurzacz dyson moduł odblokować
Epson XP-620 Ink Pad Replacement Guide: Waste Pad Location, Reset, and Compatible Kits Błąd 5865 PTM w MAN TGX - Czujnik prędkości wentylatora