Pomysł pierwszy: zapisz poprawny wzór na zawartość rejestru okresu OCR #define PERIOD (F_CLK / PRESCALER) Pomysł drugi: załaduj poprawną wartość: OCR1A = PERIOD - 1; Pomysł 3: Takie użycie przerwania kompletnie nie ma sensu. Wyłącz przerwanie i testuj znacznik timera z rejestru TIFR w pętli głównej. Pomysł 4: Zamiast printf użyj czegoś prostszego -...
Witam! Podaję jedno z rozwiązań. [syntax=c]#include <stdio.h>/* tutaj funkcje we/wy */ #include <stdlib.h>/* tutaj funkcje losowe */ #include <math.h>/* tutaj funkcje matematyczne */ #include <time.h>/* tu funkcje dotyczace czasu */ #define PI 3.14 #define PRECYZJA 1000.0 int main(void) { int ilosc_krokow; int i; int a; double...
Ok, to chyba nie będę na razie kombinował bo nie mam pojęcia o tych syscalls :P Spróbuję jutro odpalić Twoją funkcję printf ;] Jeśli chodzi o timer - to tak, wiem, że mogę to wszystko włączyć w jednej linii, ale tak jakoś z przyzwyczajenia zostawiłem samo enable na koniec, teraz to przerzucę ;]
Problem ze zbyt wolnym zliczaniem skryptów wydaje się być związany z ESP. Działa dobrze na WB3S: https://obrazki.elektroda.pl/2327825600_... . Na ESP wzrost jest co kilka sekund: https://obrazki.elektroda.pl/4909929500_... . Wygląda na to, że czas delta tików skryptów jest nieprawidłowy: [syntax=c] void SVM_RunThreads(int...
Wklej caly program. #include<pic.h> #include <stdio.h> long int GlobalTime, time; #define INTERVAL 20 #define HOURS 3600 #define MINUTES 60 #define SECONDS 1 void ConsoleInit() { SPEN=1; TRISC5=1; TRISC4=1; RCSTA = 0x90; TXSTA = 0x20; // 0 SPBRG=51; // 51 } // OBSLUGA PRZERWANIA static void interrupt get_ir_int(void)...
W ciągu nie spełna miesiąca poznałem jak mrugać diodą, robić dokładne opóźnienia w wykorzystaniu timera, uart, przekierowanie printf na uart i ostatnio udało się z dalmierzem odległości HC-SR04. Zamówiłem w TME EA-XPR-019 to nie będzię trzeba programować przez uart. Jak ktoś w miare ogarnął avr to lpc1114 nie jest trudny. Zamykam temat
Czy to gdzieś w manualu powinienem szukać czy może w kodzie asm? Zrobiłem tez taki test że w main'e miałem: [syntax=c]AT91F_PIO_SetOutput(AT91C_BASE... AT91C_PIO_PC6); AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, AT91C_PIO_PC6); licznik++; if(nHzTicker) { printf(licznik); }[/syntax] sam Timer szedł 1000Hz. Licznik naliczał zaledwie do około 279900, podczas...
Poprawiłem warunek, teraz czeka dopóki flaga == 0, jeśli 1 to wyświetla wynik z tym że działa dla P1.8 i CT16B1. Na P1.8 jest microswitch podciągnięty do VCC przez rezystor. Kod dla P3.3 i CTB160 dalej nie wchodzi do przerwania. jakiś pomysł ? To wrzuca na terminal dla P1.8 i CT16B1: Test Rozpoczynam pomiar Licznik=1728 Licznik2=1728 Przerwanie=1 I=0...
błąd jaki zauważyłem to definicja "main" powinna być z dwoma argumentami, czyli "int main(int argc, char*argv[])". Wynika to z faktu, że biblioteka SDL2 podmieni ją na swoją. Dokładniej to SDL definiuje makro "main" jako "SDL_main" i jest to typ funkcyjny dwuargumentowy "int(*)(int,char**)". goto? Niektórzy tego nie lubią i uważają za zło. Jeżeli to...
Cześć, Platforma: STM32F769I-DISCO OS: FreeRTOS Środowisko: System Workbench for STM32 Próbuję zaimplementować PTP na podanej platformie, jednak od dłuższego czasu męczę się z regularnie pojawiającym się Hard Faultem. Jak zdołałem wybadać, błąd pojawia się prawdopodobnie, gdy upłynie czas jednego z timerów programowych, które są tworzone. Tworzonych...
Witam ! Piszę program do sterownika oświetlenia, napotkałem się na następujący problem , oto kod : [syntax=c] #include <stdio.h> #include <stdlib.h> #define PIN_TRIAC (0) static struct { volatile enum States {ON,OFF} state; // stan wlaczony czy wylaczony volatile char pval; // wartosc mocy w % od 0 do 100 void (*TurnOn)(void); //wlacz void...
analogicznego uzywam i w innych programach... i dziala... no ale na innych procesorach :/... void Timer_Init() { OCR0 = 150; USART_Transmit('^'); TCCR0 = (1<<CS02)|(0<<CS... TIMSK |= OCIE0; } ISR(TIMER0_COMP_vect) { USART_Transmit('*'); OCR0 += 150; }...
Napisz coś podobnego jak poniżej: [syntax=c] // zmienne globalne dostepne rowniez w przerwaniu volatile uint32_t PulseWidth; volatile uint8_t zakonczono_pomiar = 0; // obsluga przerwania TMR32B0 void TIMER32_0_IRQHandler(void) { static uint32_t LastCapture = 0; if ( LPC_TMR32B0->IR & (0x1<<4) ) // sprawdzenie czy przerwanie od kanalu zliczajacego...
No i znowu jaja z tym DS89C430. ;-) Tym razem wziąłem się za przesyłanie danych przez RSa. Ze wspomnianej już strony: http://www.edw.com.pl/index.php?module=C... przekopiowałem sobie prosty program typu "Hello word". Mam problem z użyciem funkcji printf. Program po zamknięciu w komentarze wszystkich funkcji printf...
Pomyśl, ile czasu zajmuje pomiar i jak często przetwornik chciałby wywołać przerwanie. Potem zastanów się, ile czasu zajmuje obsługa przerwania. Samo to nie jest może powodem błędu, który obserwujesz, ale z pewnością nie ma sensu i jest błędem koncepcyjnym projektu. Niezależnie od tego, w jakim trybie pracuje ADC, czytaj wynik w przerwaniu timera, np....
Temat poruszyłem już w inym wątku dotyczącego uC DS89C430/450, ale zdecydowałem się umieścić go w osobnym ze względu na to, że nie wszyscy pewnie są zainteresowani DS89C430/450, a i problem wydaje się bardziej "uniwersalny". ;-) Problem dotyczy funkcji printf i w zasadzie paru innych z biblioteki <stdio.h>. Mój program po zamknięciu w komentarze...
Nie wiem czy to jest w ogóle możliwe bo fprint musi mieć zdefiniowaną funkcję wysyłającą tekst po jednym znaku. Definiujesz pośredni bufor i do niego ładujesz pojedyncze znaki. Funkcja umieszczająca znaki powinna sprawdzać poziom zapełnienia bufora i uruchamiać/resetować timer. Jeśli bufor zacznie się zapełniać lub nastąpi timeout, bufor powinien zostać...
A jak by było dla win32? Znalazłem coś takiego jak: #include <sys/time.h> #include <time.h> #include <iostream> //czasami "iostream.h" using namespace std; int main(){ timeval t; //zmienna z czasem gettimeofday(&t,NULL);//pobi... aktualny czas printf("sec:%dn",t.tv_...
Nie mam teraz kodu przed oczami ale mniej wiecej wyglada to tak w duzym skrocie, wszystkie ustawienia timera itd sa poprawnie zainicjowane: unsigned int timovf; SIGNAL (SIG_OVERFLOW0) { timovf++; } void initialize(void) { //ustawienia timera,przerwan,wlaczenie wszystkiego timovf = 0; } int main(void) { initialize(); for(;;) { if(timovf == 15) { timovf...
Niby tak, ale obsługa 16 bitowych rejestrów ADC, albo 16 bitowego Timera to zawsze będzie więcej operacji na 8bit, tak samo jak przetworzenie tych wartości, w tym printf czy itoa. To samo dotyczy łańcuchów zaw. instrukcje sterujące urządzeniem przez UART. Zatem w przypadku maszyn 8 bitowych jest niemal pewne, że pokaźna część instrukcji to będzie obsługa...
Hah, faktycznie - dzieki raz jeszcze za zwrocenie uwagi. Teraz dziala znosnie, ale i tak nie wiem czemu dioda nie gasnie. Kolejny problem to taki ze czasami zmienna dana ma wartosc ujemna, to znaczy taka funkcja wysyla minus przed liczba. printf("int %d\n",dana); Pozniej gdy juz odbiore wszystkie bity, sa one zanegowane przez odbiornik....
Więc jesteś w stanie zbudować siebie... dobrze. Dodałem więcej debugowania printf w dwóch sekcjach kodu: https://obrazki.elektroda.pl/7518555700_... https://obrazki.elektroda.pl/7145039500_... Czy możesz skompilować najnowszą wersję aplikacji (aplikacja główna, ściągnij oba repozytoria) i wkleić swój dziennik? Oto mój...
Witam, Mam do mikrokontrolera podłączony układ, który w wielkim uproszczeniu dostaje sygnał PWM z uC i zwraca go z pewnym przesunięciem fazy z powrotem . Chciałbym mierzyć to przesunięcie fazowe. W tym celu podaje do tego układu sygnał o częstotliwości 40 kHz z PWM, a sygnał wyjściowy układu dołączam do wejścia CAPTURE 0.0. W trakcie działania programu...
Ok czyli mam tak - niestety programu nie mogę uruchomić , w środowisku KEIL są zdefniowane stałe których w ac6 nie ma. Zmieniłem tryb pracy timera, teraz kod wygląda następująco: [syntax=c] int main(void) { UART2_INIT_PRINTF(); GPIO_InitTypeDef echo; // ustawienie pinu jako wejście ( PA8 - wejście timera 1 ch1 ), tryb alternatywny AF_TIM1 echo.GPIO_Pin...
kawałek kodu: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #define BAUDRATE B115200 #define MODEMDEVICE "/dev/ttyS0" #define _POSIX_SOURCE 1 #define FALSE 0 #define TRUE 1 volatile int STOP=FALSE; int...
Projekt jest taki jaki jest, przez make kompiluje się co trzeba, część funkcjonalności została tymczasowo zakomentowana (ta z FreeRTOS) w ramach poszukiwania źródła problemu. Z CodeSourcery walczyłem i walczę, ale problem mam ze skryptem linkera Twoja strona bardzo pożyteczna i ciekawa, przydałby się jakiś artykuł o skryptach linkera (podobny do tego...
Ustawienie kierunku wyjścia było tylko przy wyrzucania zbednych linijek usunąłem go ale już dopisałem, moze ktoś sprawdzić czy u niego działa taki prosty kod bo ja już zaczyna podejrzewać procek... . Jeżeli wrzucę LED_TOGGLE; w pętle while to na oscyloskopie widzę przebieg prostokątny więc pozostałe sprawy są OK nie wiem dlaczego nie działa to przewanie...
Właśnie nie doczytałem z tym WEBIOPI i stąd moje pytanie. Nie musisz się bawić w żadne PHP, można tak skonfigurować serwer www że będzie używał plików w C (np instrukcje printf). Kwestia tylko jakiego serwera będziesz do tego używał, jeśli WEBIOPI nie wystarczy to pewnie nginx będzie w sam raz z powodu małych wymagań. Możesz też spróbować zwyczajnie...
Przy _USE_LFN = 0 poprawnie listuje katalog, natomiast dla _USE_LFN = 1 ląduje w w HardFault_Handler. Mój kody wygląda następująco [syntax=c] #ifdef __USE_CMSIS #include "LPC17xx.h" #endif #include <cr_section_macros.h> #include "lpc17xx_systick.h" #include "lpc17xx_uart.h" #include "lpc17xx_pinsel.h" #include "diskio.h" #include "ff.h" #include...
To może zapytam inaczej: Kto mi pomoze i powie dlaczego ten program nie działa, chodzi o TIMER2 co z nim jest nie tak?? #define IE3 0x20 #define XtalFreq (11059490)/*main crystal frequency */ #define TM2_DIV (-XtalFreq/1200*5) /* 50 ms */ sbit M_WIND = P1^5; struct METEO { float pressure; float temperature; int licznik_wind; int...
No niestety. Str912 jest straszny to mu trzeba przyznac(choc to nie oznacza ze nie dziala z jakis magicznych powodow, poprostu miewam z nim wszystkie ,mozliwe problemy, ale jak na razie dalo sie dojsc co jest ich przycyzna. Najsmieszniejsyz byl timer ktorego wlasciwie nie da sie uzyc poza paroma konkretnymi przypadkami:P). Faktycznie wszystkie rozmiary...
Potrzebuję wygenerować trzy sygnały do sterowania rejestrem: 1MHz, impulsy co 64. okres z 1MHz i podobnie 128. Mniej więcej wyglada to tak: __ __ __ __ __ __ __ __ __ | |__| |__| |__| |__| |__| |__| |__| |__| |__ 1MHz __ __ | |__<-- przez 64 okresy poziom niski -->| |__ __ __ | |__<-- przez 128 okresy poziom niski -->| |__ Wykorzystałem...
Witam mam taki oto problem: zmontowalem sobie uklad ktory ma wstepnie zagadac przez RS'a do tego celu uzylem MAX232 ktorego podlaczylem do nog TxD i RxD uC. Jako taktu uzywam Timer 2 IE = 0xAA; //Przerwania TMOD = 0x15; //0 licznik,1Timer T2CON = 0x30; //timer 2 dla serial SCON = 0x50; //inicjacja T2 RCAP2H=0xFF; //moze TH2 ? RCAP2L=0xDC; //moze TL2?...
Zamierzam użyć pilota do dekodera philips PVR 7201/91 jako nadajnika podczerwieni. Odbiornik TSOP 1136 (lub 38, czy to coś zmienia??). Aby wiedzieć co dokładnie jest odbierane przez odbiornik przy naciśnięciu poszczególnych przycisków, napisałem program, którego efektem ma być wyświetlenie elementów tablicy, której elementy są czasami trwania kolejnych...
Witam, Zacząłem niedawno zabawę z STM32 i mam problem z przerwaniami oraz timerami. Chciałem uruchomić przerwanie zewnętrzne, a dalej przerwanie od timera co np 1sek. Jednak nie działa ani jedno ani drugie, czy ktoś mógłby nakierować mnie na dobrą drogę i powiedzieć co robię źle? Przeglądałem przykładowe aplikacje jednak dalej nie potrafię tego uruchomić....
Sprawdzałem jakie warowności przyjmuje flaga uip_flags PT_THREAD(handle_dhcp(void)&... { PT_BEGIN(&s.pt); /* try_again:*/ s.state = STATE_SENDING; s.ticks = CLOCK_SECOND; do { printf("Flafga przed discover - %d\n\r",uip_flags); send_discover(); printf("Flafga po discover- %d\n\r",uip_flags);...
(at)grko Ten kod na nic nie jest optymalizowany, bo służy do demonstracji przechwytywania zdarzeń timera. sprintf na procesorze na który był tworzony (ATMega8) zajmuje na dzień dobry tyle pamięci, że trochę traci to sens. utoa jest standardowym elementem biblioteki AVR-libc a o takiej rodzinie mowa i zajmuje kilkadziesiąt bajtów (może 200, nie pamiętam)....
tzn że kod który podałem wyżej jest zły? do puki nie używam transmisji rs232 wszystko śmiga jak ta lala. Włączam timer gdy przepełni się on 1600 razy mam 1 sekundę, w przerwaniach zewnętrznych zliczam ilość przerwań oraz czas między nimi. Mam problem jedynie podczas transmisji. Jest jeszcze jedne problem mianowicie Jeżeli w main wpisze coś takiego while(1)...
Hmm, właśnie nie rozwiązało to problemu. Racja, używa tych sprintfów do dodawania danych do tablicy, którą mu podaję. Żeby rozwiązać problem dużej biblioteki użyłem printf-stdarg.c z demo użycia FreeRTOS'a. Teraz jest tylko jeden problem, po pierwszym wykonaniu funkcji TaskGetRunTimeStats() dane wydają się być ok, ale po późniejszych procenty przekraczają...
Przykład dla OS Linux (main.c). button.h button.c main.c [syntax=c]/* * main.c * * Created on: Oct 3, 2012 * Author: tymon_x */ #include "button.h" #include "signal.h" #include "string.h" #include "stdlib.h" #include "sys/time.h" #include "stdio.h" void timer_handler(int signum) { Button_sampling(); } /* Time := 1 ms */ #define USECREQ 100 static int...
Dzięki wszystkim za pomoc. Oto mój program: [syntax=cpp] while(1) { dana = USART_Transmit_back(); // odczyt temperatury if (dana == 49) // 49 to tak naprawdę 1 wysyłana z kompa, zignorowałem dlaczego:) { PORTA = 0x01; // zapalenie diody, żebym wiedział która dana aktualnie jest czytana if(ds18b20_ConvertT()) /* Funkcja 'ds18b20_ConvertT' wysyła do układu...
Próbuje mierzyć częstotliwość sygnału wykorzystując przerwanie i Timer2 Napisałem taki oto kod przy pomocy CubeMX: 249992 Hz i niby ok. Jednak znalazłem kurs STM32 na FORBOT ( 249986 Hz. I teraz nie wiem czy prawidłowo należy skonfigurować timer do tego zadania tak jak zrobiłem czy tak jak w kursie?
Ok, dziękuję wszystkim za chęć pomocy, właśnie rozwiązałem problem i chcąc oszczędzić czas przyszłym potencjalnym osobom błądzącym w tym samym rejonie postaram się trochę przybliżyć temat: 1. Pierwszą rzeczą, jaką zrobiłem było napisanie programiku działającego na zasadzie obliczania, a następnie sprawdzania sum kontrolnych. W internecie były dostępne...
W pętli repeat na końcu dopisz wyrzucenie danych z tablicy na ekran typu printf / writeln czy jak to się robi w języku w którym piszesz. czyli: repeat ...(jeden krok sortowania babelkowego) writeln(wypisz tutaj dane z tablicy) until ... Jeżeli ma to być robione wolno krok po kroku, to dodatkowo w repeat dodaj jeszcze jakąś przerwę funkcja sleep/delay...
if (ADC_old = ADC) { Kompilator nie ostrzega, że to prawdopodobnie działa nieprawidłowo? Mam wrażenie, że GCC ostrzega, jakiego używasz? Poza tym, czy to ma się wykonywać tylko wtedy, gdy nie ma żadnej zmiany? Zwykle szum produkuje jakieś niewielkie zmiany... Ja bym raczej myślał o konstrukcji typu: if (abs(ADC_old-ADC) < eps) {... a może raczej...
https://obrazki.elektroda.pl/8335986900_... Witajcie moi drodzy Przedstawię tutaj przykład użycia 32-bitowego mikrokontrolera PIC32MX250F128B w roli hosta USB obsługującego pendrive (zapisującego i odczytującego z niego dane). W temacie opiszę najpierw płytkę którą pod tego PICa zaprojektowałem, a potem przykładowe kody obsługi pendrive...
Proszę o zerknięcie w mój kod obsługi RC5, ponieważ wyświetla zupełnie inne kody przycisków niż powinien. Gdzie i co ewentualnie zmienić ? [syntax=c] #include "LPC11xx.h" #include "uart.h" #include <stdio.h> #define RC5_PIN (1<<0) #define ROZMIAR_RAMKI 14 // zmienne globalne volatile uint16_t rc5_ramka; volatile uint8_t ramka_gotowa; //...
Pozmieniałem troche program i teraz jest tak: void TIMER0_init() { TCCR0 = 5; TIMSK = 1<<TOIE0; sei(); } //*****************************MAIN*****... int main () { RS_init(UART_CONST); // inicjalizacja portu szeregowego TIMER0_init(); for(;;){} return 0; } //*****************************PRZERWANI... SIGNAL(SIG_OVERFLOW0)...
Witam Zrobiłem dwu kanałową płytkę do ściamniacza żarówek na 230V z wykorzystaniem triaka (oczywiśie dwóch, po jednym na kanał). Schemat znalazem na formu, wykorzystywany jest układ detekcji przejścia przez zero, triak jest sterowany przez MOC3021, itd. Układ detekcji przejścia przez zero jest podłączony do przerwania INT0, wyzwalanie triaktów do wyjść...
Witam, nie mogę sobie poradzić z problemem: środowisko:Keil uv4, procek arm: lpc2138, a także stm32f100 (ale nawet nawet 8051!) 1. ustawiam zmienną globalną: unsigned integer ms 2. Inkrementuję ją w przerwaniu timera co jedną milisekundę. 3. gdzieś, np w 'main' piszę: ms=0; // czekam, póki na linii P1_1 nie pojawi się 1 lub nie minie jedna sekunda while(...
Witam! Na wstępie chciałem zaznaczyć, że od niedawna dopiero poznaję procesory z serii ARM. Bardzo dawno temu miałem styczność z 51- jedynką i keilem. Moje doświadczenie w programowaniu C też nie jest oszałamiające, natomiast asembler na ARM jak na razie jest przeze mnie mało zrozumiany. Proszę o wyrozumiałość przy pisaniu ewentualnych odpowiedzi, za...
Witam! Mam taki dość nietypowy problem. Kontroler ma reagować na jedno z trzech przerwań: TIMERa 0 i dwóch zewnętrznych (czujki ruchu). Te przerwania zewnętrzne zliczają liczbę reakcji czujek, natomiast TIMER 0 ma odmierzać czas i dzięki niemu co kilka sekund mają być wyświetlane statystyki. Bez TIMERa 0 wszystko działa ok, ale statystyki lecą cały...
Tak powinien wyglądać plik Makefile: # Hey Emacs, this is a -*- makefile -*- #---------------------------------------... # WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. # # Released to the Public Domain # # Additional material for this makefile was written by: # Peter Fleury # Tim Henigan...
(at)Badmaneq Nowy projekt już zrobiłem, w tym samym workspace. Skopiowałem do niego pliki *.h i *.c z src. Nic nie ustawiałem w properties. string.h nie includowałem. Nie używam żadnej funkcji ze string.h to po co mam go odkomentować? W katalogu po build i debug pojawiły się te 3 ścieżki i problem pozostał. Kod który dałem w 1 poście to ten który rano...
Witam. Napisałem programik na procesor z tytułu, który mierzy długości impulsów na pinie, i wysyła wynik pomiaru na UART. Postanowiłem wykorzystać to do przechwycenia sygnału z pilota do tunera TV SAT (TechniSat, bo taki miałem pod ręką :) ), taktowanie: kwarc 4MHz, odbiornik typu TSOP, sygnał zanegowany przez 74LS00 i dostarczony na PD6, schemat pominę,...
Witam, mam prośbę, czy mógłby ktoś sprawdzić mojego Makefil'a, ponieważ podczas kompilacji wrzuca mi błąd o kodzie: avr-objcopy: 'main.elf': No such file make: *** [syntax=c]//sterownik wyswietlacza #include "HD44780.h" //usawiasz tam porty sterujące, nie musisz ogarniać kodu #include <util/delay.h> #include <avr/io.h>...
Zakres max do 1023 więc unsigned int czyli uint16_t Mam nadzieję że pomogł em Spróbowałem na początek wyświetlić tę zmienną "a" bez dzielenia przez 100 i nawet to nie wychodzi, coś mam chyba zle w tych instrukcjach wyświetlania na LCD spritf.. itd. Oto końcówka kodu: [syntax=c]void main(void) { a=read_adc(0); //wynik=145; //wynik=wynik/10;// Declare...
http://obrazki.elektroda.pl/4039432800_1... Główną motywacją do stworzenia tego projektu była, jak mówi autor, chęć nauki programowania interfejsu USB w mikrokontrolerach z rodziny PIC. Dodatkowo autor ciekaw był, jak mocno uprościć można funkcjonalne urządzenie z interfejsem USB. Okazało się, że bardzo! zaprezentowany poniżej termometr...
Witam, Od niedawna planuję przejść na mikrokontroler stm32f407vgt6 z stm32f103vct6, ze względu na szybszą pracę. Niestety napotkałem na bardzo poważny problem. Aby przedstawić jak najlepiej dany problem, zamieszczę printscreen z analizatora stanów. http://obrazki.elektroda.pl/6745447700_1... Na wykresie widzimy przerwanie pracy timera,...
Działa prawidłowo na tych opóźnieniach :) Napisałem także delay na timerze. Problem leżał w źle napisane funkcji Write_Bit, prawidłowa to; float DS18b20_Read_Temperature(uint8_t* code); wywołuje ją z main w ten sposób printf ("Zmierzono %3.2f\r\n", DS18b20_Read_Temperature( &ds18b20 wyświetla dziwne liczby, kiedy wrzucę ciało funkcji DS18b20_Read_Temperature...
https://obrazki.elektroda.pl/4024708700_... Witajcie moi drodzy. Przedstawię tu pierwszy na świecie tutorial programowania modułu WiFi WB2S, czyli BK7231. Moduł ten występuje w wielu urządzeniach smart home, a w internecie panuje opinia, że nie można stworzyć dla niego własnego firmware. Nic bardziej mylnego - pokażę tu krok po kroku...
Faktycznie działa tak samo, ale problem pozostał. Nadal 1. kolumna jest przesunięta na koniec. Dodano po 34 Problem rozwiązany, wystarczyło dodać delay po zmianie stanu na porcie B. Niby 1 us ale wpływa na działanie programu. Najwidoczniej bez opóźnienia nim stan się ustabilizował to pętla przeszła już do następnej iteracji. Niby drobnostka, a zabrała...
Witam. Jak zaczynalem pracowac nad hexapodem ciezko bylo mi znalezc jakis krotki i w miare przejrzysty kontroler serwomechanizmow. Napisalem taki, plus mozliwosc sterwania serwami przez RS232. Wklejam je tutaj i mam nadzieje ze sie komus keidys przyda:) Algorytmy sa dosyc proste, jak by ktos chcial to moge wytlumaczyc jak co dziala zeby mozna bylo przystosowac...
Witam, próbuje znaleźć dobry sposób na pomiar amplitudy impulsu PWM. Zakres zmian wypełnienia 5 % do 95 %. Czestotliwosc sygnalu sie nie zmienia i wynosi 1 KHz. Mój pomysł polega na tym, że po wychwyceniu zbocza narastajacego odpalam ( w przerwaniu od input capture) timer ktory co 10 us ( 5 % z 1 ms to 50 us) trigeruje pomiar ADC poprzez DMA (czyli...
Ok. Istotne fragmenty kodu wyglądają następująco: my_adc.h [syntax=c] #ifndef _MY_ADC_H #define _MY_ADC_H #include <dev/adc.h> extern u_short readADCChannelLN(adc_channel_t adc_channel); extern u_short readADCChannel(adc_channel_t adc_channel); #endif [/syntax] my_adc.c [syntax=c] #include <sys/thread.h> #include <sys/timer.h> #include...
Witam wszystkich Przychodzę do was z problemem, iż nie potrafię połączyć arduino+kodu+modułu sieciowego w jedno aby wszystko działało. Korzystam z: Moduł sieciowy 2.4GHz nRF24L01: //abc-rc.pl/product-pol-6407-Modul-sieci... Oryginalne Arduino nano oraz klon DFRduino Uno V3.0 Biblioteką programu(arduino)...
Programowanie systemów wbudowanych nieco się różni od programowania PC, niby ten sam język C, ale trzeba nauczyć się nowych rzeczy, na PC masz wszystkie niskopoziomowe rzeczy poukrywane i nie musisz wiedzieć np. jakie są rejestry RTC, żeby odczytać czas, albo co powoduje że printf wyświetla tekst na ekranie, na mikrokontrolerze zazwyczaj musisz musisz...
Udało mi się dokonać iniekcji kodu na dysk. Na razie była to taka testowa pierdółka: Hello World! CPSR=0x0000001F SP=0x060C6594 MainID=0x41259661 CoreFeatID=0x41259661 lub Hello World! CPSR=0x00000092 SP=0x04001188 MainID=0x41259661 CoreFeatID=0x41259661 W każdym razie nawet ten kod jest przydatny. MainID=0x41259661 mówi nam że rdzeń ARM w dysku to...
poniżej kawałek kodu w C odczytujący dane z rs232 (niestety nie pamiętam skąd go wziąłem), do zapisu niestety nie mam przykładu ale to powinno cie naprowadzić na trop w google #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> #include <stdlib.h> #include <strings.h>...
Witam. Na wstępie zaznaczam, że przeczytałem podobny temat umieszczony w FAQ, lecz mam trochę inną koncepcję, z którą mam problem. Poniżej zamieszczam fragment kodu źródłowego w C pisanego pod kontroler rodziny 8052. Cel programu: zwiększenie wartości zmiennej "wartość" o 1 po naciśnięciu przycisku podłączonego do portu P3.2 (INT0), oraz wysłanie tej...
https://obrazki.elektroda.pl/2718988000_... Witajcie moi drodzy W tym temacie pokażę jak każdy początkujący może najprościej uruchomić w warunkach amatorskich mikrokontroler PIC32MX795F512H bez potrzeby trawienia/kupowania pod niego konkretnego PCB. Oprócz minimalnego niezbędnego układu pracy tego mikrokontrolera umieszczę tutaj kilka...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
Hej, dzięki za odpowiedź - nie działało, bo wywaliłem pliki z USARTem, a w jednym miejscu użyte było printf, co co ciekawe nie wywalało się w czasie kompilacji, ale po wywaleniu tego fragmentu jestem w stanie uruchomić debug. (Faktycznie nie popisałem się z tym .elf, noob ze mnie) Teraz jednak mam problem - SPI1->SR po kilku (około 20 - 40) odczytach...
Co do Pana propozycji z poprzedniego postu: sugeruje Pan ze jesli wlaczam obsluge przerwan portu i ustawiam flage TI_0 zeby wyslac znaki przez putchara to program odrazu sie zapetli przez to i bedzie wykonywal ciagle przerwanie ? tak wyglada moj set_RS() void set_RS() { SCON1 = 0x50; /* SCON1: mode 1, 8-bit UART, enable rcvr */ TMOD...
Witam, Korzystam z tego kodu: [syntax=c]#include "main.h" #include "stm32f3_discovery.h" /** * (at)brief Initializes the putput pins for the Timer one channels. Currently * hard coded to drive the LED3 (channel 1), LED7 (channel 2), and * LED10 (channel 3) on the STM32F3 Discovery board. * (at)param pwm_freq: Frequency of the PWM in Hz * (at)retval...
Witam! Mam problem z popranym odbiorem danych. Kod wygenerowany przez kreatora jest przedstawiony na listingu. I teraz pytanie. Mam odebrać z odbiornika widomość o długości 154 bajtów. Wiadomość ta przychodzi co 1 sekundę i zaczyna się zawsze czterama takimi samymi znakami : (at)(at)Ha Próbowałem już robić to z pętlą, by odbierać 154 znaki, i potem...
Ja zacząłem programować pice w Proton +. Wogóle na niego nie narzekam, można szybko napisać niezły prog. Może zżera zasoby, ale na przykład nie zauważyłem różnicy w szybkości wykonywania operacji. Próbowałem nauczyć się w C ziomalować, ale on ma wszędzie to Include, co w końcu staje się męczące, a prosty prog długo się pisze :/. Nie można powiedzieć,...
Witam. Na platformie mbed aktualnie piszę program na Nucleo STM32F103RBT6, który ma za zadanie obsługę czujnika + wyświetlać wyniki na wyświetlaczu OLED. Wszystko odbywa się w pętli nieskończonej. Cały kod waży ok. 60kB. Dodatkowo za pomocą timera i przerwania co sekundę inkrementuję czas włączenia całego układu. Poniżej przedstawiam szablon mojego...
#include <16f877.h> #fuses XT,NOWDT,NOPROTECT #use delay(clock=4000000) #use rs232(baud=2400,parity=N,xmit=PIN_C6... #use fast_io(a) #zero_ram #define one_min 1450 //no of counts to safely detect bit1 #define one_max 2200 //optimal (at)4 MHz is 1800 #define zero_min 600 //no of counts to safely detect bit0...
Zazwyczaj najwygodniej uczyć się języka C na desktopie, czyli swoim PC-cie. Programując STM32 lub AVR-ki używa się języka w ten sam sposób, ale zwykle nie mamy dostępu do pewnych bibliotek standardowych, które na desktopie są od razu, bo komputer ma monitor, klawiaturę, dysk twardy itp.. W mikrokontrolerach tego nie mamy, więc użycie printf(), getch()...
Witam! Mam problem przy generowaniu sygnału komplementarnego na timerze 1 w mikrokontrolerze STM32F427ZIT6 (płytka STM32F429I-DISCO) przy pomocy bibliotek HAL. Udało mi się wygenerować sygnał komplementarny ale nie udaje mi się skonfigurować deadtime-ów. [syntax=c] /** ****************************************... *...
Oczywiście że nie oznacza, ale oznacza że wielu to używa, a moim zdaniem gdyby było tak skopane, to używałoby raczej niewielu. Jest to bardzo śmiała teza (; Jakoś to musi działać mimo wszystko. Nie no - "jakoś" działa. A mogłoby dużo lepiej (; Potem przy problemie szukam pomocy na elektrodzie i czytam - wywal te dwa tygonie wysiłku do kosza, nie ciesz...
Witam, Nie mogę spowodować , aby działała funkcja printf w programie napisamym w Coocoxie. Program się kompiluje, nie ma błedów, widać w terminalu napisy pochodzące od funkcji send_char, natomiast od printfa nie ma. Czy robię jakiś bład: [syntax=c]#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_usart.h" #include "stm32f10x_rcc.h"...
Procesor się nie resetuje (sprawdziłem przez podanie zwłoki na początku). Wymieniłem też stabilizator 5V. Położyłem na procesor mały wentylatorek z karty graficznej. Śmieci na terminalu zmieniły się po chwili na prawidłowe ciągi znaków. Zabrałem wentylator - znów mam śmieci na ekranie. Od początku zainteresowało mnie to, że grzeje się troszeczkę bardziej...
Witam, piszę ostatnio program na Atmega16, odtwarzający melodie midi, przy wolniejszych utworach wszystko działa wspaniale, przesyłałem nawet informację na terminal i bajty wspaniale się zgadzają. Generalnie przychodzą 3 bajty, z których pierwszy jeśli jest równy 90, gram nutkę występującą po nim, jak 80 to ją wyłączam, jak 0xC0 i wyżej do 0xC9 to znaczy...
Witam, czy kolega fazolek mógłby wkleić pełny kod, którego użył do komunikacji? Męczę się z modułem MMnet już kilka dni i mimo wielu prób nie udało mi się uruchomić dwustronnej komunikacji przez RS232. Poprawnie działa odczyt danych przez moduł MMnet, transmisja danych do komputera nie działa. Wykorzystuję następujący kod: #include <sys/types.h>...
Dla ułatwienia walczę z wave 8 bitowym mono 44100 Hz. W głośniczku słychać burczenie. Kod wygląda tak: [syntax=c] #define BUF_SIZE 512 uint16_t buf[2][512]; volatile uint8_t nr_buf = 0;// indeks aktywnego buforu volatile uint8_t can_read = 1; UINT play(char fn) { FIL fil; char *wsk_buf = &buf[0][0]; UINT rb = 0 ; if ( f_open(&fil, "44mono8.wav",...
https://obrazki.elektroda.pl/4509007500_... Zapraszam na prezentację https://obrazki.elektroda.pl/1519670000_... Przygodę z APM32F003F6 pozwoli nam szybko rozpocząć płytka Mini Board. Oprócz głównego MCU z przydatnymi do uruchomienia elementami takimi jak rezonator kwarcowy, przycisk RESET oraz testowy, diody LED,...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
Zielona miga, Pomarańczowa świeci. Czyli jest link, i pakiety dochodzą do PHY. Teraz idź tym tropem, czy STM32 odczytuje i wysyła ramki. Odczyt zobaczysz wstawiając sobie w kod coś, co pokaże Ci przez RS232 te ramki, albo choć fakt ich odebrania. Zapis - Wiresharkiem. Znasz adres MAC swojej płytki ? Pewnie zawarty w kodzie jest. Poszukaj, sprawdź!...
TIM3->SR &=~TIM_SR_UIF; Aleś się uczepił tej operacji logicznej... Tak przy okazji to aby printf flory musisz ustawić odpowiednie flagi linkera Nie musi.
Witam. Postanowiłem zgłębić tajniki mikrokontrolerów STM32. Wybór padł na procesor STM32F3 Discovery. Mam problem z poniższym kodem. Jest to przykład działania przetwornika ADC. Problem polega na tym, że nie wiem dlaczego to nie działa. Uruchamiam debugger, biorę krokową pracę, a program w zasadzie zatrzymuje się na linii ADC1ConvertedVoltage jest równa...
Witam, Chce pomierzyc okres sygnału prostokatnego za pomocą 90S2313. Dla testów podaje z generatora na wejsice INT0 prostokąt o f=1kHz, czyli okres = 1ms. Idea pomiaru to taka ze w momencie wykrycia narastajacego zbocza procek zgłasza przerwanie na INT0, wtedy zeruje i właczam Timer1. Przy nastepnym narastajacym zboczu zatrzymuje Timer1 a zawartosc...
(at)Freddie Chopin Tak jak wcześniej pisałem miałem uruchomiony projekt - obsługę ethernet na STM32f407 gdzie main wyglądał tak: [syntax=c] /** ****************************************... * (at)file main.c * (at)author MCD Application Team, EvertDekker * (at)version V1.1.0 * (at)date 14-September-2014 * (at)brief...
Wrzucam moją wersję programu do obsługi 4 serw. W ostatnim tygodniu zakupiłem swoje pierwsze dwa serwa, więc mogłem się pobawić problemem ich sterowania. Z powodu, że mam tylko dwa, jedynie dwa kanały są sterowane z przetworników ADC. Pozostałe są obsługiwane przez przerwania, ale nie ustawiane. Wartości dla serw wpisuje się w tablicy serwa_val[]. Doświadczalnie...
Tak, sprawdzałem co jest w Val i są to sensowne wartości (od 0 do 4096, potem mnożę je *10). Chwilę działa dobrze a potem klops, zacina się. Próbowałem bitu ARPE ale nie działa niestety. Robię to w ten sposób. Dodano po 20 Tak, sprawdzałem co jest w Val i są to sensowne wartości (od 0 do 4096, potem mnożę je *10). Chwilę działa dobrze a potem klops,...
Witam, Jakiś czas temu na forum pytałem o koncepcję prostownika mikroprocesorowego. Od tamtego czasu zacząłem działać i stworzyłem płytkę, wlutowałem komponenty i zacząłem pisać program i testować układy. Wszystko szło dobrze dopóki nie rozbudowałem programu i zacząłem testy pod obciążeniem. W aplikacji wykorzystuję 3 wejścia ADC do pracy z DMA: pomiar...
https://obrazki.elektroda.pl/3803750000_... Witajcie moi drodzy Przedstawię tutaj mój sieciowy sterownik przekaźników kompatybilny z Home Assistant poprzez Tasmota HTTP. Sterownik oparty jest o PIC18F67J60 i dodatkowo oferuje m. in. odczyt temperatury, budzik, przyciski, niezależny panel WWW oraz szerokie możliwości konfiguracji. Wstęp...
czemu po prostu nie zrobisz coś na kształt copy plik.txt lpt1 albo type plik.txt > lpt1? Bo wydruk ma się odbywać na drukarce GDI... co prawda akurat ta konkretna drukarka laserowa z którą to ma działać nie jest drukarką GDI i obsługuje zarówno emulację Epsona jak i PCL ale nie potrafi zmieniać szerokości znaków, przez co wydruk nie mieści się na...
Czy ja dobrze czytam, że w przerwaniu od timera robisz set/reset pinów i to Twój PWM? Nie, to jest lewitacja elektromagnetyczna i odwracam w ten sposób polaryzację cewki, kiedy PID wyliczy ujemną wartość (lewitujący obiekt przekroczy setpoint). Dodano po 6 Wrzucam jeszcze całego main'a. [syntax=c] /* USER CODE BEGIN Header */ /** ****************************************...
printf double stm32f printf printf stm32
triaki zamienniki rezystor objętościowy syrena alarmu własnym zasilaniem
webasto actros falownik elektronix
Waga elektroniczna pokazuje 0 - możliwe przyczyny i rozwiązania Zablokowany licznik w hulajnodze Motus Scooty 10 2020 - co robić?