Funkcja hextoul przyjmuje stringi które powinny być zakończone zerem. A u ciebie wartosc1 ma tylko dwa bajty na wartość. Anomalie też są jeśli chce przesłać czas włączenia urządzenia w formacie hh;mm;ss Może ramu za mało. Na dodatek, jeśli wysyłasz w funkcji main oraz przerwaniu, to jeśli funkcja wysyłająca nie jest atomowa, to będziesz miał sieczke...
Jaki sens ma funkcja, która zawsze zwraca tę samą wartość? Równie "obiektowe", co bezsensowne. Taki pomysł na funkcję miał autor tematu. Nie wnikam w sensowność tego rozwiązania. Naprawdę, masz dziwne rozumienie obiektowości.
strasznie żeś nakombinował ja wysyłam tak stringi void USART_Transmit_string( char *text ) { while(*text) USART_Transmit(*text++); } void USART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ); /* Put data into buffer,...
Czy jakbym zrobił to w ten sposób, miałoby to sens? Nie ma sensu! Czemu służy "delay(3);"? Para ma iść w gwizdek? W ten sposób to nie wiadomo jak szybki będzie uC, delay "zabije" jego prędkość. Zmienna (tablica) "readString " ma jakiś rozmiar, tajemnicą jest jaki, ale większość Arduino ma 2kB (2048) RAM. Stos (ok20 bajtów zależnie od skomplikowania...
Nie wiem co tam namieszałeś ale ja bym trochę zmienił odbieranie ciągów. Coś w ten deseń: SIGNAL (SIG_UART_RECV) { if ( (odebranyZnak!='\r') && (odebranyZnak!='\n') ) { slowo[i++]=odebranyZnak; } else { slowo[i]='\0'; i=0;// zakończenie słowa - dodanie znaku końca stringa **ANALIZA...
Co do pierwszego kodu, prawdopodobnie uart działa zbyt wolno - błąd jest tutaj: UCSRC = _BV(UCSZ0) | _BV(UCSZ1); //--- ustawienie ramki, kolejno: długosc slowa - 8bitów UCSRC |= _BV(USBS); //--- ilosc bitów stop - 2 UCSRC |= _BV(URSEL); //--- zapis/odczyt danych z/do UCSRC Nie ma dowolności kiedy co ustawić, ustawiać...
Witam, Zmontowalem sobie zabawke w postaci atmega162, 2 porty usart i lcd. Chwilowo dziala to w takiej konfiguracji ze z terminala podlaczonego przez ustart0 wydaje komende ktora jest przekazywana na usart1 do telefonu komorkowego a wynik jej wykonania ma sie wystwietlic na lcd. Oczywiscie predkosci wszystkie sa ustawione OK, F_CPU tez, 9600 dla COM...
Chodzi o wyświetlanie Stringów przez USART? To na czas testów tylko. Jakiś pomysł?
ja mam tak, zawsze działało bez problemów: int USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ); UDR = data; return 0; } void USART_PutS (char *text) { while (*text) USART_Transmit(*text++); }
Jest to przejściówka "Konwerter CP2102 Niestety nie mam takiej pod ręką to nie obadam jaki ma pull up. Próbowałem z DATA rezystor 480ohm do 3.3V ale nie działało. To według mnie zdecydowanie zbyt niska oporność, jak na obciążenie fototranzystora w transoptorze. Spróbuj coś koło 4,7 - 15kΩ. Od biedy można by spróbować uruchomić wewnętrzny pull...
Witam wszystkich Chciałbym się poradzić ponieważ mam problem z komunikacją USART. W czasie wysyłania stringów do terminala komputer się resetuje, pojawia się blue screen oraz komunikat problem z multiple_irp_complete_request. Sytuacja powstaje tylko w przypadku gdy komunikuję się poprzez przejściówkę USB-USART, gdy korzystam z modułu bluetooth wszystko...
Zrobiłem to bez przerwań. Program może nie działa idealnie (mam problemy z odbiorem znaków - jutro na tym się skupię), ale udaje mi się wysyłać at komendy do modułu (np. zmienić nazwę modułu, czy pin) oraz przesyłać stringi przez bluetooth na laptopa. Poniżej funkcja wysyłająca i odbierająca pojedynczy znak (w tym wypadku zrezygnowałem z bibliotek ST...
Czołem, Mam problem z przesyłem danych USARTEM. Mam taką o to funkcję: [syntax=c] void usartSend(char* data) { uint32_t timeout = 100000; while (*data != 0x00 && timeout > 0){ if (USART2->SR & USART_SR_TXE){ USART2->SR &= ~USART_SR_TXE; USART2->DR = *(data++); timeout = 100000; } timeout--; } } [/syntax] Jeśli wyślę dwa stringi, z których drugi jest...
Nie widzę sensu w używaniu stringów wstawiając w nie 0. Dużo funkcji, np printf, bazuje na tym, że na końcu stringa napotka na 0. Podobne rzeczy spotkasz chociażby bibliotece radzia do hd44780 czy jakiejkolwiek innej operującej na stringach. Coś a la: [syntax=c]void usart_send(char *data) { while(*data) LCD->DR = *data++; } ... int main() { ... usart_send("ala...
Czy LabView pozwala na wysyłanie 1 bajtowych zmiennych to nie wiem, więc pozostaje odczyt stringów. Najprostszy jest oczywiście [url=https://github.com/jnk0le/Easy-AVR-... Można także zastosować coś takiego [syntax=c]int16_t uart_getint(void) { char buff[32]; uart_gets(buff, 32); return...
tylko 15 znaków dokładnie 14, null dodaję na końcu tablicy (miały być operacje na stringach, ale może się ogarnę bez tego) to LCD od nokii 3310 na pcd8544 chciałem "na szybko" zrobić konsolę do usart, bo nie mam drugiego usart do wyświetlania tego co biega po pierwszym, a przesiadanie się na xmega nie ma sensu...
No teorię to ja mniej więcej znam... tylko jak to zamienić na kod. Coś takiego? #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include <avr/signal.h> ///////////////////// USART////////////////////////// #define FOSC 16000000// Clock Speed #define BAUD 4800 #define MYUBRR FOSC/16/BAUD-1 ////////////////////////////////////////...
A czy wiesz ile czasu ten Twój program może siedzieć w przerwaniu? Wygląda mocno nieoptymalnie to przeszukiwanie całego bufora. A to, że kod działa bez przerwań nie oznacza, że musi działać bez większych modyfikacji z przerwaniami. Możesz spróbować składać stringi w taki sposób jak podałem wcześniej, czyli zacząć od początku z innym podejściem, bo jak...
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);...
Cześć, Naskrobałem programik, który powinien mi wysyłać przez UART co sekundę 1 z 3 stringów(czy tam tablic charów bo to w C) ale coś się buntuje. Problem polega na tym, że nie przesyła mi wszystkich wartości tylko jakieś ochłapy i to niepełne. Pytanie brzmi czy to ja mam błąd w kodzie? Gdzieś w USART_SendString ? Czy może jest jakiś maksymalny rozmiar...
Przy załączeniu napięcia atmedze na wyświetlaczu zamiast oczekiwanego napisu pojawiają się randomowe śmieci. Przy zwyczajnym resecie wszystko jest ok. Z resztą najlepie to widać na filmiku: //MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MA... portSHORT main(void) { //Inicjalizacja...
Witam, Męczę się z kawałkiem kodu, który wbrew (mojej) logice, działa nie tak jak powinien. Chcę wyświetlić element tablicy stringów z pamięci PGMEM, a w niektórych wypadkach otrzymuję śmieci. 05, Piątek 05, ŔGŔFŔEŔDŔCŔBŔAŔ(at)Ŕ?Ŕ>Ŕ=Ŕ<Ŕ;Ŕ:... 05, ŔGŔFŔEŔDŔCŔBŔAŔ(at)Ŕ?Ŕ>Ŕ=Ŕ<Ŕ;Ŕ:... Zmienne idx i d.WeekDay zawierają tą samą wartość,...
Z przetwonika ADC otrzymuję wartość 16 bitową (ADC1->DR), którą chce następnie wyświetlić na wyświetlaczu. Funkcja wypisująca stringi na LCD pobiera wskaźnik do tablicy, ciagu znaków void Text (uint8_t *str) Wywołanie: Text ("dowolny tekst"); Potrzebuje w jakiś sposób przekonwertować typ 16-sto bitowy do tablicy znaków które...
USART2 śmiga na 256kb. StringIndex jest zerowany w pętli głównej po skopiowaniu zawartości Stringnew do innej tablicy. Nigdzie indziej nie ma odwołania do StringIndex... A dlaczego USART2 nie może nadawać i innym momencie? Co prawna nie nadaje, jest tylko to, co widać na terminalu.
To może okazać się trudne, bo kodu jest sporo i w wielu plikach. Wciąż to wygląda na to, że przestaje działać gdy ma za dużo kodu do przetrawienia. Generalnie problemy pojawiły się jak dołożyłem dzisiaj kilka więcej funkcji atof do zrzucenia danych ze stringów z gps we floaty. I tak jak mówię, wywalenie praktycznie każdej dłuższej funkcji z main, powoduje,...
Flaga w przerwaniu dubluje istniejącą flagę w rejestrze statusu USART, stąd też jest zupełnie niepotrzebna. Pytałem nie o sposób zadeklarowania tablicy, bo to widzę, tylko o sposób zadeklarowania typu byte - czy gwarantuje, że element tablicy będzie 8-bitowy? Bo szczególnie w językach typu C# bym się spodziewał, że kompilator to przerobi tak jak wygodniej...
Przyjrzałem się funkcji "strtok2()" i wniosek mam taki, Bardzo Ci dziękuję za zaangażowanie w moim temacie. Oczywiście jetem wdzięczny każdemu za każdą odpowiedź. Wczoraj do późnej godziny pracowałem nad tym programem, napisałem bardzo dużo kodu od początku, nie patrząc wcale wstecz na to co i jak pierwotnie wykonałem. Oto część kodu, który tworzę....
Witam, Postanowiłem zrobić tak: normalna transmisja wyglądała tak: $0030000 //komenda ustawienia karetki na pozycji temp NAW //bez znaku $ więc zwykły tekst $0000001 ////komenda ustawienia karetki na pozycji 23 ////bez znaku $ więc zwykły tekst Baza musi poczekać z wysłaniem kolejnego stringa aż panel odpowie że już wyświetlił poprzedniego. Już to zrobiłem...
Szczególnie nadawanie jest problematyczne, ponieważ nie można mieć non-stop włączonego przerwania, chyba że naprawdę chcesz NON-STOP wysyłać znaki. a no właśnie, o tym nie wiedziałem ;) a chyba mniej więcej tak rozwiązałem to w przed ostatnim poście, po prostu wyłączając to przerwanie jak bufor jest pusty No niestety jest trudniejsze ;) ale tak jest...
Spróbuj wyświetlić tekst polecenia przed porównaniem go z tablicą nazw poleceń. Niestety, ale właśnie to robię i to nawet w kodzie który zamieściłem fprintf wysyła tekst na jeden z dwóch portów USART z których korzystam. Tekst wyświetla się właściwie, a tablica nie zwraca indeksu czyli strcmp_P nigdy nie jest 0. W samej pętli z porównaniem też wyświetlałem...
proszę o pomoc w takiej sprawie wysyłam liczby , lub stringi z jednego procka do drugiego drugi jest podłączony do terminala w komputerze , chcę spowodować żeby to co wysłał pierwszy procek odebrał ten drugi i to samo wysłał do terminala. Problem jest w tym, że jak odbieram znak w przerwaniu i zaraz wysyłam go jako echo to jest dobrze, ale jak zrobię...
Udało mi się odpalić program na prędkości 312500 bodów (koleje dane z RSA przychodzą co 32us) , ale nie jest to granica możliwości: Mam taki kod: [syntax=c]#include <avr/io.h> #include "stdlib.h" #define LCD_RS PB4 #define SD_CSET 0x15 // column address setting #define SD_PSET 0x75 // page address setting #define LCD_CS PB0 #define RAMWR 0x5C...
Nie wiem o co Ci chodzi. Piszemy o VT100 lub emulacji VT100 nie o Windows. Jaki windows? Człowieku, rozumiesz co to kodowanie znaków? Jeżeli putty emuluje poprawnie VT100 to powinien wyświetlać znaki tak jak to było w VT100. Jezeli putty robi to inaczej to znaczy, że nie emuluje poprawnie VT100. Rozumiesz pytanie autora? Pyta się dlaczego nie wyświetlają...
Czemu nie działa jakieś błedy kompilatora, jak nie tak to może źle napisany kod i się przy większej optymalizacji wysypuje. Jak coś to wrzuć kod nie działający. Heh, no ok, wrzucam więc kod. Od razu jednak uprzedzam, że to jest mój pierwszy program w C i mogą występować rażące programistów błędy. Poza tym kod jest nieco rozlazły - dla mnie bardziej...
Witam Mam dosyć spory problem z parsowaniem tekstu, mianowicie użytkownik może w terminalu wpisać sobie taką o to składnie. Silnik 3,5;Silnik 5,25;Silnika 7,45; Ma to podzielić na "Silnik 3,5" , "Silnika 5,25" itp; Robię to w następujący sposób: -gdy z USARTa przychodzi ciąg znaków zakończonych znakiem '\0' wychodzi do przerwania gdzie tworzona jest...
Może dlatego, że niewiedzieć czemu po wysłaniu komendy czekasz na odebranie kolejnego znaku i go usuwasz odczytując UDR (dummy=UDR). Kolejna sprawa - te strcmp jest bez sensu, sprawdzać powinieneś dopiero po odebraniu danych. Ew. trzebaby zamazywać cały bufor, bo tak jak to masz zrobione przy odbiorze kolejnych komend bufor jest mixem nowych i starych...
czy umieścić wszystko we flash'u??? Jak mam umieściś wszystko we flash, skoro nie wiem jaka treść będe generował. Są elementy stałe i są elementy, które się zmieniają. Owszem, mogę na przemian wysyłać dane z flash (stałe elementy) i generowane dynamicznie z ram ale ze względu na elementy dynamiczne nie wiem ile danych będę przysłał. Musiałbym więc...
Witam, Próbuję korzystać z biblioteki Peter Fleury do obsługi usart-u, której listing znajduje się poniżej: PLIK uart.c /***************************************... Title: Interrupt UART library with receive/transmit circular buffers Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File:...
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...
Witam, Przeczytałem wiele stron z podobną tematyką, próbowałem wielu różnych algorytmów, jednak nie udało mi się osiągnąć tego co chciałem. Założenie: Komunikacja aplikacji napisanej w visual c++ 2010 express z atmega16/32. 1. Wysyłka 5 liczb z komputera: (parametr1, parametr2, parametr3, parametr4, parametr5) na atmegę. Sprawa wydawałoby się prosta,...
tplewa , czyli param to jest tablica stringów tak? czyli muszę utworzyć tablicę: string param for(int i=20; i<30;i++){ param[0]=bufor_uart1[i]; } ? krru , a jak mam ladowac znaki dopiero po danej sekwencji? przeciez muszę je pierw gdzieś zapisać tak jak to robilem do bufora, aby później na nich operować. Nie wiem...
mamcpy() m e mcpy() albo sprintf() Albert
Mój problem polega na tym, że muszę z kilku czujników wysyłać dane do aplikacji napisanej w C#. Temperatura z czujnika DS18B20, oraz wilgotność i temperatura z czujnika SHT11. Dane te chcę wysłać UARTem, jednak narazie próbuję wysyłać zmienne float na sztywno. Tak więc konwertuję sobie funkcją dtostrf na string i tak chcę wysyłać do aplikacji C#. Najpierw...
Kawałek kodu masz mocno namieszany, nie masz funkcji odczytującej daną z uartu - pokaż większy fragment kodu. ogólnie: [syntax=c] #define BUF_SIZE 100 char c; chat buffer[BUF_SIZE];//koniecznie deklaracja rozmiaru ... while(1){ if((c=uart_getc())){ buffer[i++]=c; if(i==BUF_SIZE-1){//zabezpieczenie przed przepełnieniem bufora buffer[i]='\0'; i--; //sygnalizacja...
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
Funkcja czekająca na odpowiedź z modemu powinna czekać skonczony czas na oczekiwany string, przy czym jest bardzo ważne to, aby oczekiwany string zawierał ostatnie znaki z całego stringu odpowiedzi modemu. W Twoim przykładzie gdy modem odpowiada: CMGS: 59 OK To modem tak naprawde wysyła znaki: CMGS: 59\r\n\r\nOK\r\n Funkcja czekająca na odpowiedź w...
Jak kolega wyżej słusznie zauważył, potrzebna jest funkcja operująca na RAM. Domyślam się że korzystasz z przykładowych kodów z książki "AVR. Praktyczne projekty"? Nie ma tam buforowanej funkcji UART czytającej stringa umieszczonego w RAM, a więc trzeba sobie taką funkcję dopisać (można też zmodyfikować istniejącą korzystając z tzw named address spaces)....
Mimo wszystko głupio tak marnować czas innych :). W każdym razie. Parę tematów chciałem poruszyć. - Po pierwsze odniosę się może do poleconej książki - "AVR. Układy peryferyjne" . Udało mi się dziś ją dostać i niestety nie znajduje w niej zbytniej pomocy. Nie jestem pewny czy szukałem w dobrym miejscu, jednak postanowiłem zagłębić się w dwa tematy -...
Nie działa niestety w ten sposób. Próbowałem przekazywania przez wskaźniki itp. nie mam pojęcia co jest... Poniżej kod całego programu może ktoś dopatrzy się jakiś poważniejszych uchybień gdzie indziej, ale wątpie... Plik main.c #define F_CPU 1000000ul #include <avr/io.h> #include <stdio.h> #include <stdlib.h> #include <util/delay.h>...
Jeśli zależy Ci na najprostrzym wysłania stringa zastosuj funkcję na wzór tej: [syntax=c]void PutChar( uint8_t ch) { while(!(USART2->SR & USART_SR_TXE)); USART2->DR = ch; } void PutString( uint8_t * str) { while(*str != 0) { PutChar( *str); str++; } }[/syntax] W main wywołujesz funkcję : PutString("przykladowy napis 1234..."); Do najprostszych aplikacji...
stringi usart stringi chara arduino stringi
awaria sprzęgła piecu tryby serwisowe telewizorów medion uszkodzić komputer silnik peugeot
interfejs multidiag makita migają diody
Zamiennik pilota do bramy garażowej Globe 9 - OM3T-BX Niedziałający przycisk włączenia pralko-suszarki Haier - diagnostyka i rozwiązania