Kurs na F0Discovery z wieloma przykładami był publikowany w ciągu ostaniego półtora roku w EP - oglądaj i ćwicz. Prosty program: [syntax=c]#include "stm32f0xx.h" //======================================... // defs for STM32F05x chips #define GPIO_MODER_OUT1 //======================================...
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...
OpenOCD zaktualizowanie tak jak kompilator wcześniej. Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda. 1.Import projektu lpc1114_blink_led i rename na stm32f0_blink_led 2. Zmiany...
Zlikwidowałem Delay ale nic się nie zmieniło. Diody nie zapala.
Panowie, udało się to rozwiązać. Ten powyższy projekt nie jest taki zły tylko trzeba go naprawić: 1. Skonfigurować poprawnie piny SPI 2. Upewnić się, że funkcje delay działają dobrze 3. Upewnić się, że konfiguracja zegara systemowego jest dobra. Jakbyś ktoś dalej miał problemy to pytać na PW podeślę poprawiony kod.
Ja wykorzystuje takie coś :) Dokładnie to ten timer jest wykorzystywany do dekrementowania paru innych liczników, wrzuciłem do niego delaya bo tak było najszybciej :]. Chociaż jak patrzę to modę wywalić jeden, ale nadal muszę dekrementować jeden licznik w cykliczny sposób oprócz delaya, więc albo delay dekrementuje się razem z nim albo wrzucam do oddzielnego...
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] /* ****************************************...
Przyczepilem sie optymalizacji itp. opcji kompilatora ale w miedzyczasie wyszlo ze najwyrazniej rdzen zrzuca na stos rejestry r0-r3 i klika innych, wiec problem nie lezy tutaj. Wiem ze gdzies popelnilem blad, nie mam doswiadczenia z ARM-ami. Oczyszcze i zminimalizuje kod aby bylo absolutne minimum powodujace problemy i wrzuce. Systick szczesliwie miga...
1. Czy wiesz, że Twój programowy timer liczy do 2001? 2. timerFlag źle zadeklarowane. Powinno być static volatile _Bool. Reszta zmiennych też dość radosna. 3. Kod, który wkleiłeś nie zawiera niczego, co odnosiłoby się do inicjowania portów dla wyświetlacza ani samego wyświetlacza, a problem masz podobno z wyświetlaczem, a nie z diodami LED. Mogą to...
Witam. Na początku muszę zaznaczyć, że jestem raczej początkującym w temacie mikrokontrolerów i ogólnie elektroniki. Kupiłem sobie stm32f0 discovery oraz termometr ds18b20, podłączyłem wszystko jak trzeba - pin 1-wire do pc7, oraz piny zasilania odpowiednio do 3v i GND na płytce. Korzystam z IAR Embedded Workbench EWARM. Termometr działa, bo procedura...
Cały obecny kod: http://obrazki.elektroda.pl/5926424400_1...
Cześć przerobiłem kod kol. Szczywronka i postanowiłem zmodyfikować fo dla stm32f0discovery oto kod [syntax=c] //Załączenie pliku nagłówkowego #include "stm32f0xx.h" //Deklaracja funkcji //void gpio_pin_cfg(GPIO_TypeDef *port_ptr, uint32_t pin, uint32_t mode_cnf_value); int main(void){ //Włączenie zegara dla GPIOC RCC->APB2ENR = RCC_AHBENR_GPIOCEN;...
Podczas kolejnego dnia walki orżnąłem kod praktycznie ze wszystkiego. Doprowadziłem do sytuacji odwrotnej - by działał 2 kanał PWM dla TIM1 należy zainicjalizować TIM3! W dodatku, zmiana wartości delay() w main również powoduje zaprzestanie działania PWM (podobnie jak wyłączenie TIM3). Kompletnie nie wiem, co robię źle. Wymieniłem już nawet uC na egzemplarz...
Nie mam tego programu więc Ci nie zrobię... Zrób nowy projekt w TrueStudio i dodaj do projektu foldery delay, lib, gpio, i pliki stm32f0-discover i main.
Odznacz reset+delay i halt. Z jaką optymalizacją kompiliujesz program?
Nie sądzę, by jakikolwiek projekt dał się sensownie zrobić bez przerwania timera, więc testowanie obecności pastylki można zrobić w tym przerwaniu. Z drugiej strony kod obsługi OneWire z delay() nie nadaje się do użycia w projekcie, w którym są przerwania, więC proponuję zrobić od nowa obsługę OW. Przykład na F0 masz w niedawnej EP.
Ok, zegar i podtrzymanie działa. Problem tylko jest taki, że od 16 do teraz (6h) zegar "zgubił" jakieś 10 sekund. Da się temu jakoś zaradzić? Ponadto muszę zrobić mniej więcej 10ms opóźnienia (widoczne w kodzie), bo bez tego czasami zegar nie rusza. Jest jakieś wyjaśnienie na to i lepsze rozwiązanie niż sztywny delay? Teraz mój kod inicjowania RTC wygląda...
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)...
(at)szelus Wiekszość startupów ma ten sam adres obłsugi tych wyjątków. Dlatego nazwą się nie sugeruj o ile nie zostały napisane ich handlery Nie wiem jak za bardzo działa "Instrution Stepping Mode", Nie. Normalnie wykonuje to na uC Macie pomysł co może być winą albo jak dojść do problemu? 1. Jeżeli masz zainstalowany Atolloc albo CubeIDE to znajdź...
Przesądy... ;) Nie "jak najszybciej" a "odpowiednio szybko"; np. jedyne w systemie przerwanie zgłaszane co 100 us może być obsługiwane przez 99 us i wszystko będzie ok. A co do diody - cały kod, który robi to, co trzeba w przerwaniu zgłaszanym co 10..20 ms, wygląda tak (na STM32F0): [syntax=c]static uint8_t bstate = 0, led_timer = 0; bstate = (bstate...
http://obrazki.elektroda.pl/6522944300_1... RFM12 Timing Diagram http://obrazki.elektroda.pl/9770641200_1...
Timera użyje kiedy uporam się z całą resztą. Metoda delay() jest tylko tymczasowym rozwiązaniem i zdaję sobie sprawę z jej prymitywności. Chyba, że pomoże on mi rozwiązać mój problem z przerwaniami? Nie widziałem żadnego tematu, w którym było wyjaśnione podłączenie ich do klawiatury.
Zasadniczy probem twojego rozwiązania to delay() w obsłudze przerwania i ogólnie za dużo w nim robisz. Z zasady w przerwaniu wykonujesz jak najmniej kodu, aby z niego wyjść najszybciej jak się da. A tutaj wykonanie kodu w przerwaniu zależy od kolejnych przerwań. Ustawiaj tam sobie jakąś zmienną globalną kiedy chcesz coś wykonać, wybudź procek, opuść...
Ustawienie MOE nic nie dało :( Problem mam również z uruchomieniem sprzętowego pwm. [syntax=c] #include "stm32f0xx.h" #include "stm32f072b_discovery.h" int main(void) { RCC->AHBENR |= RCC_AHBENR_GPIOCEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOAEN ; //wlaczenie zegara portu C, B, A RCC -> APB2ENR |= RCC_APB2ENR_TIM1EN; //wlaczenie zegara dla TIM1 GPIOC->MODER...
Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR. Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone. No ale koniec sekwencji POR oznacza wykonanie kodu z Reset Handler ? [syntax=c]int...
Ciekawe, o tym bym nie pomyślał. Spróbuję tak zrobić. Dziękuję za pomoc. Pewnie to kilka dni potrwa ale jeżeli się uda to dam znać. W przypadku porażki pewnie też się odezwę :) Dodano po 7 Dobra, zrobiłem testy i nadal jest problem ale z czym innym niż te 1us. Wychodzi na to, że wcześniej już miałem to dobrze zrobione na Timerze. Najpierw standardowo...
Witam serdecznie. Początkowo miałem problem z uruchomieniem układu, nawet pisałem do Piotra czy nie ma jakiegoś błędu w zamieszczonym kodzie. Problemy były dwa, po pierwsze używałem płytki testowej na której był umieszczony kwarc, którego z niewiadomych mi powodów zostawiłem. Po drugie istotny jest rodzaj bramki lub konwertera napięcia na wyjściu. Np...
Cześć, Jestem jeszcze w piaskownicy jeśli chodzi o STM, a moje programowanie staram się opierać na samodzielną walkę z rejestrami :) Niestety nie chce mi zadziałać sterowanie diodą LED przez PWM. Moglibyście rzucić okiem na ustawienie rejestrów bo już siedzę nad tym którąś godzinę i za bardzo nie mogę wpaść na pomysł. uC taktowany przez wew. zegar 8MHz,...
Witam, podłączyłem do mojej płytki 2 moduły nrf odpowiednio odbiornik do SPI1 a nadajnik na SPI2. Niestety mam problem z obsługą tych układów, nie zgłaszają mi one przerwań na pinach który ustawiłem jako wejściowy z pull-up oraz triggerem reagującym na zbocze opadające (sprawdzałem piny zwierając je do masy przerwanie zostało wywołane poprawnie). Funkcje...
Witam, ogarnąłem już sobie I2C, układ PCF8583 działa świetnie i bo sobie obsługuję. Dodaję obsługę pamięci EEPROM 24C64 i co ciekawe, układ PCF działa natomiast w momencie wysłania komendy START + Adres eeproma, ten zwraca NACK, czyli nie odpowiada - sprawdzone analizatorem stanów logicznych. Przewody to raptem 15 cm, więc wątpię, że to jest to. Częstotliwość...
Cześć. Tak jak napisałem w nazwie tematu posiadam ARM'a STM32F072RB. Podłączyłem kolejno kolumny, później wiersze klawiatury matrycowej 4x3 do portów GPIOC1-GPIOC7. Chcę odczytywać wciskane klawisze na klawiaturze i napisałem jak na razie taki kod: [syntax=c] #include "stm32f0xx.h" #include <stdio.h> volatile uint32_t timer_ms = 0x0; void delay(int...
Witam, walczę z mikrokontrolerem STM32F051K8T6. Urządzonko, które buduję, to system mierzący odległość na podstawie odstrojenia generatora LC - zbieram częstotliwość i amplitudę. Częstotliwość jest mierzona przez TIM2, na który wchodzą impulsy, a TIM6 co 20ms odczytuje jego zawartość i zeruje. Amplituda - wiadomo, przetwornik A/C. Z tablicy 50 próbek...
Witam. Mam 2 problemy które wynikły w czasie mojej zabawy z ARM. Mam nadzieję że ktoś mi podpowie co jest nie tak. Mam dwie funkcje które pod AVR działały bezbłędnie a pod ARM już nie do końca chcą funkcjonować. Wypunktuję te problemy. 1. Funkcja "SD_writeSingleBlock" z biblioteki do obsługi karty SD ze strony darhmanitech.com. Funkcja: http://obrazki.elektroda.pl/1642057700_1...
Witam, Pozmieniałem trochę ten domyślny program. Moja część zawarta jest w linijkach "moj program" reszte kodu wyłączyłem. Proszę o sprawdzenie, bo jeszcze czekam na kuriera z moim zestawem STM32F0 Discovery. ****************************************... ** ** File : main.c ** ** Abstract : main function. ** **...
Tu jest fragment całego programu : [syntax=c]#include "stm32f0xx.h" #include "KS0108.h" #include "eeprom.h" #define PRZYCISK1_PORT GPIOF #define PRZYCISK1_PIN GPIO_Pin_4 #define PRZYCISK2_PORT GPIOF #define PRZYCISK2_PIN GPIO_Pin_5 #define STACYJKA_PORT GPIOA #define STACYJKA_PIN GPIO_Pin_2 #define LPG_PORT GPIOA #define LPG_PIN GPIO_Pin_3 #define PB_PORT...
Próbuję się skomunikować z DS3231 RTC, więc napisałem funkcje do obsługi I2C. Zrobiłem (chyba) tak jak jest to opisane z nocie, ale zawsze zatrzymuje się w pierwszej pętli po wysłaniu STARTu. Miał ktoś styczność z I2C w F0 ? Dodano po 47 Ten natłok andów i orów zawsze się mści. Co przez to rozumiesz ? NBYTES sprawdź adnotację, a ty nigdzie startu nie...
Musisz więc w loop() sprawdzać stan wybranego pinu funkcją digitalRead() Naliczyłem 17 delay, których czas ustawiony jest na 100ms. Daje to łącznie 1,7sekundy i może być tak, że po takim czasie program zareaguje na zmianę stanu wejścia. Pierwsza rzecz jaką bym zrobił to wywalił delay i sterowanie zrealizował na przerwaniach od timera. Przy takim podejściu...
Cześć, próbuję właśnie napisać obsługę interfeju USB z użyciem FreeRTOSa (to moje pierwsze spotkanie z RTOSem na mikrokontrolerze). Stworzyłem sobie wątek czekający na semafor ustawiany w przerwaniu, wykonujący kod biblioteki USB. Kod wygląda tak: [syntax=c]#include "stm32f0xx_hal_pcd.h" #include "FreeRTOS.h" #include "task.h" #include "semphr.h" #include...
Udało się odpalić Blinkera na Nucleo-072. Program miga dowolną diodą na porcie A, przy czym ustawione jest na PA5, gdzie w Nucleo podpięta jest właśnie dioda LED. Na PA6 też jest ustawione miganie naprzemiennie z PA5. Ja uzyskałem częstotliwość przebiegu około 24Hz. Oto kod dla tych, którzy przechodzą tą drogę jak ja przechodziłem: [syntax=c] #include...
Witam, wyświetlacz pokazuje mi nieodpowiednie znaki na ekranie. Ośmio bitowy tryb wyświetla nieprawidłowe znaki(po wpisaniu jednego polecenia wyświetlają się dwa znaki) a cztero bitowy nie wyświetla nic. Trzeba jakoś ustawić taktowanie zegara? Używam ekspandera I2C PCF8574 czyli D4-D7 dane, D0-D3 rs,rw,en,led tak ? Orientuje się ktoś co robię źle? Jestem...
Witam. Kiedyś przez moment bawiłem się CoOS i powstał z tego działający poniższy kod. Może coś pomoże: [syntax=c] #include "stm32f0xx.h" #include "stm32f0xx_gpio.h" #include "coos.h" #define LED0 GPIO_Pin_1 #define LED1 GPIO_Pin_8 #define PRIORITY_BLINK_TASK0 2 /* Priority of Blink task 0 */ #define PRIORITY_BLINK_TASK1 3 /* Priority of Blink task 1...
Ja mam taką funkcję od opóźnienia zrobionego na podstawie SysTick'a, nawet działa. Korzystam z niej podczas komunikacji 1wire i wszystko pięknie śmiga. W funkcji delay_init( 168 ); wpisujesz częstotliwość zegara w MHz np. dla STM32F4. [syntax=c_loadrunner]#include "../lib/stm32f0xx.h" #include "delay.h" static uint8_t fac_us = 0; void delay_init( uint8_t...
Chciałem uruchomić debugger i pokazało mi taki błąd: http://obrazki.elektroda.pl/3372069600_1... Podczas wgrywania oprogramowania w konsoli pokazuje mi takie rzeczy: http://obrazki.elektroda.pl/9063610900_1... Wrzucam też w formie tekstowej to co wyżej: Open On-Chip Debugger 0.9.0-dev-00415-g2d4ae3f-dirty (2015-06-12-17:54)...
By przetestować czy uC wchodzi w ogóle w obsługę przerwania ustawiłem PA9 jako wyjście tak by w przerwaniu jego stan był zmieniany na przeciwny. SPI w ogóle nie jest wyłączane. W przerwaniu ustawiam CS na stan wysoki, zmieniam stan PA9 na przeciwny, wyłączam kanał, ustawiam nową liczbę danych do przesłania na 1200, czyszczę flagę,ustawiam CS na stan...
Musisz w swojej aplikacji dodać gdzieś swoją własną funkcje HAL_Delay(), która po prostu będzie wywoływała task-delay z FreeRTOSa.
Pokaż jeszcze tą magiczną funkcje _delay_ms() (najlepiej wraz z assemblerem). Przy okazji: FMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructure; Jeśli nie jesteś 100% pewny, że "wypełniłeś" _WSZYSTKIE_ istniejące pola tych struktur, to powinny być one zainicjalizowane zerem ("... = {0};"), albo...
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...
Można timer zatrzymywać i startować po ustawieniu TIM3->CNT i time_ms. Ja także staram się zawsze mieć odpowiednią rozdzielczość argumentu, tak aby nie używać np. delay_us(3); ale delay_ns(3000); itp. dzięki temu błąd +- 1 nie ma znaczenia (poza czasami krytycznymi np. do pomiarów itp.).
Dla rozluźnienia atmosfery - raport kompilacji przykładu Blink.ino (czyli miganie diodą) z Arduino pod STM32F030 (stm32duino core). Kod źródłowy blink.ino: Sketch uses 10800 bytes (65%) of program storage space. Maximum is 16384 bytes. Global variables use 896 bytes (21%) of dynamic memory, leaving 3200 bytes for local variables. Maximum...
Witam Pracuje aktualnie nad obsługą diod WS2812 za pomocą mikrokontrolera stm32 (nucleo-f401re i stm32f0discovery). Komunikacja odbywa się za pomocą SPI z DMA. Problem w tym, że diody zachowują się praktycznie losowo. Zazwyczaj świecą się na biało. Nie jestem także w stanie kontrolować ich ilości. Poniżej udostępniam kod. https://obrazki.elektroda.pl/6687811200_...
stm32f0 discovery stm32f0 przykład systick stm32f0
strefa alarm volvo silnika mplab pic16f84a
Licznik Kingway Euroboy 50 2T – awarie, naprawa, zamienniki, modernizacja Odbieranie rozmów WhatsApp na Xiaomi Redmi Note 12 Pro bez odblokowywania