Tablice wartosc1,wartosc2,wartosc3 są zbyt małe muszą mieć po 3 elementy. W funkcji hextoul tratujesz przekazaną zmienną jako string kończący się 0, a w tablicach nie masz już miejsca na koniec stringu. Dalej nie przeglądałem.
To jest program pod ATmega32 ale powinien dzialac #include <avr/io.h> #include <stdlib.h> #define F_CPU 8000000 // 8MHz zegar procesora #define CYCLES_PER_US ((F_CPU+500000)/1000000) // cpu cycles per microsecond // #define UART_BAUD 19200ul //prędkość transmisji w bodach (tu 19200 bodów) #define UART_CONST (F_CPU/(16ul*UART_BAUD)-1...
OK. Ja też jestem w pracy i nie zawsze mogę o tej porze coś robić. Ale dalej: Do testowego używania UARTA przyda się "podmienienie" standardowej obsługi funkcji printf na taką, która wysyła dane przez UARTA do naszej Windowsowej konsoli. Możesz to wpisac standardowo przed obsługą assert_failed() /** * (at)brief Retargets the C library printf function...
USART sprzętowo nadaje cały bajt, wraz z bitem startu, stopu i parzystości. PRzerwanie w czasie takiej transmisji nic nie zakłóci. Co najwyżej do nadania kolejnego bajtu minie jakiś czas, ale to nie problem, gdyż każdy bajt ma swój bit startu, w efekcie odbiornik to poprawnie odbierze.
W książce Tomasza Francuza "AVR Praktyczne projekty" znalazłem bardzo przyjemny sposób na użycie USART w XMEGA posługując się fprintf lub fscanf. Niestety po przejściu na DMA okazało się, że nie da się tak łatwo zastąpić fprintf przy użyciu funkcji wysyłającej dane do bufora i dalej przez DMA do komputera. Znalazłem inny przykład w sieci z wykorzystanie...
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,...
no dobra a jak zastopic printf gdy nie mam bibloteki stdio.h dla CC5X ?? bo przy tym wymiekam :( bo obecnej podpowiedzi nie jestem wstanie skompilowac a gdy zastepuje printf TXreg to tez wywala kompilacje ;(
Witam, mam problem z odbieraniem danych po usarcie. Jest on skonfigurowany tak: USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /* Configure the USART1 synchronous paramters...
Pewnie jest. Przerwanie -> skasowanie flagi -> prinf po uarcie W trakcie tego kolejne przerwanie -> skasowanie flagi -> prinf po uarcie ..... Przerwanie nie może wywłaszczyć samego siebie. Niemniej jednak idea użycia printf w przerwaniu i to jeszcze z liczbami zmiennoprzecinkowymi... Niezbyt dobry pomysł, zwłaszcza że w tym przypadku printf() alokuje...
Witam, Ostatnio mam przyjemność zabawy z płytką STM32F746NG Discovery. Mam problem z usartem... Nie jestem w stanie odebrać znaku w konsoli mojego komputera. Chciałem zrobić tak samo jak to się robi np.: w Nucleo, czyli korzystam z USARTA2, piszę odpowiednią funkcję do wysyłania znaków i w whilu daje printf... ale tutaj to nie działa. Wszystkie parametry...
Szanowni Forumowicze, uruchomiłem sobie sprzętowego UARTa wykorzystując bibliotekę ze strony atmela. Wszystko działa, łączę się z terminalem na komputerze, wyświetla się to co powinno. Dodałem też funkcję do wysyłania całego łańcucha znaków wykorzystując wskaźnik, gdyż w atmelowskiej bibliotece znalazłem jedynie do wysyłania konkretnych pojedynczych...
Witam Znalazłem na naszym szanownym forum kod w C do obsługi portu RS232 (na PC): #include <windows.h> #include <stdio.h> int main() { HANDLE hCom; //uchwyt portu DCB dcb; //konfiguracja portu BOOL fSuccess; //flaga pomocnicza BYTE RS_buf; //bufor danej DWORD RS_ile; //ilosc bitow wyslanych //otwarcie portu COM1 z prawami RW...
Chcę w jakiś sposób okiełznąć USART, na razie bez DMA. Korzystam z gotowego przykładu, jednak pustki w terminalu. Fizycznie : GND przejściówki USB RS232 podłączony z GND disco, RX, TX kros. stm32f10x_usart.c [syntax=c] #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include <stdio.h>...
Witam. Niedawno zacząłem się bawić programowaniem mikrokontrolera atmega32 zawartego w zestawie evb 4.3. Pojawił się problem w momencie, kiedy chciałem połączyć zestaw ze swoim laptopem. Kod dla mikrokontrolera: #include <avr/io.h> #include <util/delay.h> #include "lcd.h" void usart_init(unsigned int baud); void usart_transmit(...
Czujnik to HTU21D. Wysyłam do niego komendy, które są w Datasheet (w załączniku). Chcę odczytać temperaturę w trybie Hold Master. Oto kompletny kod main.c: http://obrazki.elektroda.pl/4783952000_1...
Witam, Od jakiegoś czasu stawiam pierwsze kroki w programowaniu PICów. Pisałem sobie jakieś pierwsze programiki na PIC18F66J65, uruchomiłem komunikację z komputerem po USART aż tu pewnego pięknego popołudnia coś się wykrzaczyło i procek pracuje tylko na wewnętrznym oscylatorze. Mikrokontroler mam przylutowany na płytce-przejściówce QFP - DIP. Dołączony...
Kiedy pozbędziesz się wszystkich float i operacji na nich zajętość pamięci spadnie o połowę. Po wyrzuceniu printf zapewne zyskasz jakieś następne 1.5 KiB. ;) Co powiesz na odpowiedź z AVR np. taką: B 1234 2345 6789 gdzie te trzy liczby to np. napięcia w mV.
Dziekuje za odpowiedz. Uzywam windowsowskiego Hyper Terminala :P. Ale dalej mi nie dziala :/. Teraz kod wyglada tak: #include <stdio.h> #include <avr/io.h> #define FOSC 16000000 #define BAUD9600 #define MYUBRR (FOSC/(16*BAUD)-1) #define sbi(var, mask) ((var) |= (uint8_t)(1 << mask))...
Szukałem na internecie poradników do terminala UART i udało mi się zrobić coś takiego z kawałków znalezionych w sieci. Problem polega na tym, że mój kompilator wyrzuca błędy a nie pokazuje mi gdzie one są (i tym samym nie mogę ich skompilować) i jeśli ktoś może sprawdzić poprawność kodu w 1. i 2. main.c(są to dwa odzielne programy w dwóch projektach...
Witam! Próbuję zaprogramować mikrokontroler STM32F107, aby współpracował z siecią. Najpierw chciałbym skompilować kod z przykładowym projektem dostarczonym do STM32 jako EthernetDriver, czyli stm32_eth_lib. Przykład napisany jest z użyciem stosu TCP/IP uIP. Całość kompiluje się bez żadnych błędów (ew. warningi) z użyciem kompilatora CodeSourcery G++...
Rozwiązałem już swoje problemy następnego dnia po napisaniu posta, ale nie zdążyłem tu napisać, przepraszam. Dziękuję za porady, mimo że po czasie. Problem z delayem rzeczywiście leżał w priorytetach RTC_Handler i SysTick_Handler. Nie rozumiem tylko, dlaczego SysTick_Handler miał niższy priorytet od RTC, skoro w pliku z wektorem SysTick ma priorytet...
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ć,...
Ok. Przeprowadziłem eksperyment. Jeżeli chodzi o Cortex M3 to dodałem plik z rozszerzeniem cpp i kompilacja przebiegła bez błędów. Tylko nie działa standard C++11 tylko jakiś starszy. Sprawdziłem to dodając słowo kluczowe auto, które podobno jest elementem języka od chwili pojawienia pojawienia się standardu C++11. Poniżej zdjęcie ilustrujące pewne...
http://obrazki.elektroda.net/65_12471396... Witam Szanownych Forumowiczów Niedawno zakończyłem prace nad urządzeniem, które nazwałem GPS Tracker. Urządzenie to służy do raportowania pozycji samochodów ciężarowych lub osobowych, z wykorzystaniem pozycji z GPS, przesyłanej przez sieć GSM. Wykonanie zostało zlecone przez indywidualnego klienta....
Jak to działa na AVR ? Ano np. tak: #include <avr/io.h> #include <stdio.h> #define USART_USED int lcd_putchar(char c , FILE *stream) { //LCD_wyswietl_znak(); return 0; } FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar,NULL, _FDEV_SETUP_WRITE); int main() { #ifdef USART_USED stderr=&lcd_str;...
Ten program wysyła bajty odczytane z pamięci jako znaki, a nie jako sekwencje cyfr ASCII. Zacznij od programu, który będzie w pętli co jakiś czas wysyłał np. kolejne cyfry lub litery. Jeśli to zadziała, będziesz wiedział, że masz poprawną transmisję - wtedy włącz obsługę pamięci i ew spróbuj wysyłać jej zawartość zamieniając ją na wartości np. szesnastkowe...
Albo się nie zastanawiać i użyć funkcji sformatowanyego wyjścia z rodziny printf.
char znak; while(1) { znak=USART_Recieve(); if(znak=='1') printf("OK\n"); } lub char znak; while(1) { znak=USART_Recieve(); if(znak=='1') { printf("OK\n"); } } Dodano po 42 Chociaż to opóźnienie po tym if'ie i tak bym wstawił.
Poniżej przedstawiam korespondencję oraz dalsze kroki mające na celu wykorzystanie implementacji funkcji printf pochodzącej z strony freddiego chopina. Ja: Witaj, Chcialem wykorzystac twoja funkcje printf, jednak w paczce z nia zabraklo pliku usart.h . Brakowolo jedynie referencji do funkcji usart_put_char więc ją dopisalem. Niestety nie ma również...
Może konflikt pinów z LCD i SPI. Musisz pokombinować. Zresztą, zrób sobie pusty projekt dodaj fatfs i ten plik, napisz obsługę SPI i powinno działać. A i uzupełnij sobie funkcje int _write(); np. tak żeby korzystała z USART, będzie ci działać printf();.
witam mam problem z kompilacją kodu na atmege16, Program służy do wysyłania znaków z atmegi16 przez UART na komputer z użyciem standardowych funkcji typu puts, printf itd. Wkleje ci dzialajacy kod na printf'ie porownaj ze swoim: #include <avr/io.h> #define baud ((F_CPU/(predkosc*16UL)&... #define predkosc 2400 #define...
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; }...
1. Cele projektu Opracować moduł umożliwiający komunikację z wyświetlaczem 16x1 przez USART. By wysłać dane na wyświetlacz należy wydać instrukcję informującą o rozpoczęciu transmisji " 2. Diagram wdrożenia 2.1 Komunikacja mikrokontrolera z komputerem PC Mikrokontroler PIC16F84A komunikuje się z komputerem PC wykorzystując w tym celu port COM. Konieczne...
Ja na szybko złożyłem układ z AVR32DB28 bo taki akurat mam pod rękom. I wykorzystałem SPI1 (od PC0 od PC3, MOSI, MISO, SCK, SS) do komunikacji z MAX31865 i UART0 do wyświetlania wyników. I oto kod który użyłem: https://obrazki.elektroda.pl/9666089600_... https://obrazki.elektroda.pl/8604180000_... A i akurat miałem...
Po pierwsze - potrzebujesz itoa(), nie atoi(). Po drugie - co znaczy, że sprintf() nie działa? Ściągnij okrojoną wersję ze strony Freddiego (razem z itoa). Jak się odrobinę postarasz, to przekierujesz zawartego tam printf'a na UART - będziesz mógł wysyłać przez UART bez "pośrednictwa" sprintf().
Chyba raczej USART_send(&USARTC0, "Content-length: 11\r\n\r\n"); USART_send(&USARTC0, "s=Temp:10*C"); (% to były elementy stringu formatującego dla printf).
Dzień dobry! mam pytanie do osób znających uC STM32, czy jest tutaj jakiś buffor danych USART? Mam taki kawałek kodu: [syntax=c] while (1) { if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)){ int i = 0; while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)){ buffor[i] = USART_ReceiveData(USART2); i++; for(int j=0 ; j < 10000 ; j++){}; } printf("odebrano...
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"...
Oj ja w rzeczywistości w ogóle kanału nie wybrałem :D Teraz już działa ;) Ale pozostaje jedna sprawa związana z tym co napisałeś, aby zaczęło to dobrze działać to muszę ustawić w sumię 3 razy ADON :d SWSTART nie trzeba chyba przy ciągłej, ale czemu jest tak z tym ADON? teraz już trochę inaczej: włączam ADON, ustawiam ADC, znów włączam ADON i potem przed...
Tak jak psałem, printf sam w sobie wysyła dane tylko do strumienia standardowego stdout. To co się z nimi stanie zależy od samego strumienia. Otwierając go musisz podać funkcje zapisu i odczytu znaku ze strumienia, dopiero te funkcje są odpowiedzialne za wysyłkę danych przez konkretny interfejs. Stąd też najlepiej stworzyć dwa nowe strumienie, podając...
Obstawiam kłopot z wykonaniem funkcji uart_printf. Na czas jej wykonania masz blokowane wszystkie przerwania. Sprawdź flagę stanu USART - pewnie masz błąd buffer overrun. Jeśli potrzebujesz szybkości dużo wyższych niż 9600bps, to pomyśl też o XMEGA, w której odbiór danych z USART możesz zrealizować przez DMA, dzięki temu i kilka Mbps nie jest problemem.
Czy dobrze odczytuję, że RX i TX mogę podłączyć do pinów PB0 i PB1? Tak dobrze odczytujesz na PB0 i PB1 jest USART3. I wtedy możesz używać PWM na pinach portu A. I tu masz przykładowy program z TB3216 który przerobiłem aby wykorzystywał UART na pinach PB0 i PB1. [syntax=c] #define F_CPU 3333333 #define USART3_BAUD_RATE(BAUD_RATE) ((float)(F_CPU * 64...
Dzięki za podpowiedzi. Na razie kompiluję z opcją -O1. Wygląda że problemem był za mały rozmiar stosu (STACK) lub sterty (HEAP). Po powiększeniu rozmiaru obydwu program wystartował i nie mam żadnego HardFault (na razie sprawdziłem tylko podstawowe funkcje interfejsu). Pod debug czasami wygląda jakby w ICTM pojawiały się tymczasowe kopie zmiennych ale...
aster11: w zupełności się z Tobą zgadzam dlatego pęka mi już głowa. Do wyświetlania wyniku używam funkcji: usart_putf (rxData); z biblioteki AVRLIB. Oto kod tej procedury: void usart_putc(char data) { while (!(UCSRA & 0x20)); // Wait untill USART data register is empty // Transmit data UDR = data; } void usart_puts(char...
Dzien dobry, Bardzo proszę o pomoc w wysyłaniu komend do modemu z Pic'a. Używam Pickit3 z Ready for PIC. Wylutowałem J2,J3. Zbudowałem układ na MAX232. Na oscyloskpie widzę ze Tx coś przesyła. Ale modem już nie odsyła. [syntax=c] #include <stdio.h> #include <htc.h> #include "usart.h" /* A simple demonstration of serial communications which...
Witam, Zmieniona wersja USART_Transmit_Word: void USART_Transmit_Word( char *slowo) { char n=0; while (slowo[n]) { while ( !( UCSRA & (1<<UDRE)) ); UDR = slowo[n]; n++; } } Tak to jest użyte: USART_Transmit_Word(LOSCA); USART_Transmit_Word(TOSCA); USART_Transmit_Word(SCA);...
Witam Od jakiegoś czasu próbuję przeprowadzić odbiór danych z UART z wykorzystaniem DMA. Jeśli chodzi o konfigurację UART to jest ona przeprowadzona prawidłowo, ponieważ mogę dane wysyłać jak i odbierać ręcznie. Problem pojawia się przy próbie zaprzęgnięcia do odbioru DMA. Dane w buforze odbiorczym nie są aktualizowane (po zainicjalizowaniu bufora wartościami...
Tak z ciekawości... Jaki masz kompilator??;D Bo jak się kiedyś bawiłem PIC16, to ciężko było dorwać coś sensownego:D A co do pytania... Czytanie masz opanowane... Spoko... Zapis... Hmmm... Skoro Ci ten printf nie działa, to może czas zajrzeć do dokumentacji?? Generalnie wysłanie czegoś, to po prostu przypisanie wartości zmiennej do rejestru TXREG, co...
Tym razem ma problem z RS232. Spróbowałem na początek skorzystać z gotowego przykładu HiTech, a nie udało mi się podczas kompilacji main.c #include <stdio.h> #include <htc.h> #include "usart.h" void main(void){ unsigned char input; INTCON=0;// purpose of disabling the interrupts. init_comms();// set up the...
Poczytaj o FDEV_SETUP_STREAM np. (jeszcze) tutaj: http://www.appelsiini.net/2011/simple-us... W definicji twojego strumienia (w przykładzie - który ci podałem) brak jest funkcji pobierającej znak ze strumienia. Funkcję zdeklaruj wg podanych przykładów i przypisz jako drugi parametr tego makra (obecnie NULL). Natomiast trzeci parametr przestaw...
printf usart stm32f printf printf stm32
wymiana grzałki sterowanie stacji lutowniczej wymian hamulcowy
schematy polskie ciągnik massey ferguson
Mercedes E212 - Zwarcie przewodu sterującego klapami obejścia turbiny Schemat budowy klawiatury keyboardu - szczegóły