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...
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...
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...
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))...
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...
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...
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.
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...
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ł.
Racja, przeciez to logiczne. Po dodaniu najzwyklejszego opoznienia printf wreszcie dziala :) Chcialem jeszcze dopisac obsluge operatora \n wiec zmodyfikowalem funkcje __vfprintf w taki sposob jednak nie dziala: static int __vfprintf_(printf_file_t *stream, const char *format, va_list arg) { char character; stream->length=0; // clear...
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...
Zaczynam powoli pisać taką najprostszą obsługę ADC. Chciałbym dokonywać konwersji w pętli while w main. Generalnie jest może jakiś algorytm postępowania w trakcie inicjalizacji przetwornika? Widzę że są pewne różnice odnośnie AVR i nie jestem tego w stanie zrobić przez całkowitą analogię... Przedstawię to co zrobiłem: main: [syntax=c] #include <stdint.h>...
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...
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...
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).
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().
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...
Witam, Mam problem z uruchomieniem UARTU na ATmega128. Jako kompilatora używam CodeVisionAVR. Program się kompiluje lecz nic nie mogę wysłać z procka do kompa, co może być źle w kodzie: #include <mega128.h> #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE)...
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...
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...
Witam. Próbuję przeprowadzić komunikację między ATMEGA16 a PC. Kod znalazłem na jednej ze stron i powinien być ok. Zmieniłem go tak aby wysyłał słowo test. Niestety w konsoli otrzymuję inne znaki niż te, które wysyłam. Znaki nie są losowe zawsze te same tak jakby był problem z kodowaniem. Przejściówka sprawdzona, sprzętowo też racze ok, program testowy...
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...
Hej, osobiście stosuję następujące rozwiązanie: - kwarc zewn. 3.6864 MHz - timer2 zliczający z prescalerem 1024, do 36 (po tym się resetuje i liczy na nowo od 0) W efekcie mam "rtc", który przepełnia sie 100 razy na sekundę (3686400/1024/36), a zatem mogę odliczać z dokładnością do setnych sekundy. Chyba wystarczająco. Poniżej kod w C, kompilator avr-gcc...
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...
printf usart stm32f printf printf stm32
linia długa migająca dioda schemat przełącznik landi
Jak wyjąć silnik z aeratora ogrodowego na prąd LG 37LD450 TV Bluetooth Support: Connectivity Options and Wireless Audio Solutions