Coś mi się wydaje że zmienne które wprowadzasz są w tym wypadku traktowane jako ascii.
Dalej to samo. ATmega czasami odbiera kody ASCII > 127, gdzie moduł gps wysyła jedynie "standardowe" znaki ascii.
Ależ w funkcji lcd_int() nie masz nic wspólnego z rzutowaniem zmiennych a szczególnie float. Jest tylko zamiana liczby binarnej na ASCII za pomocą wbudowanej funkcji ITOA (Integer To ASCII) zastanów się jakie zakresy liczb może pomieścić typ int (czytałeś o typach ? - spróbuj zajrzeć do tabelki bo masz taką w książce na 1000%) to po pierwsze wyjaśni...
Odpowiedź jest niby prosta, wyslij po prostu "zmienna" nie używając sprintf. Pytanie jaki rozmiar ma owa "zmienna"?
{ 0x50 , 0x04 ,0x68 , 0x32, 0x11 , 0x1F } 0x50[hex]=80[dec]=P[ascii] 0x68[hex]=104[dec]=h[ascii] Wszystko się zgadza. http://pl.wikipedia.org/wiki/ASCII
No właśnie - jak wysłać zmienną typu float lub double przez port USART w mikrokontrolerze ATmega - program w AVR Studio - C ( nie zamieniając na ASCII ani inny typ zmiennej )
No tak, komputer odbiera je jako "suche" bajty, ale Labview, niejako z miejsca interpretuję je jako dane string. Na wyjściu bloczku "VISA Read" Mylisz stringi. To, czego spodziewa się klocek to string w postaci "3.1415". A string który dostajesz z atmegi to cztery bajty o jakiś tam wartościach które zostają zamienione na string w ten sposób, że każdy...
Z mojego doświadczenia z biednym SIM900 wynika, że powinno działać ;] Jaką masz rozbiegówkę? Z mojego działającego kodu: AT\r ATE0\r AT+CPIN?\r Dodano po 2 Swoją drogą, tam naprawde nic nie jest zakodowane... SMSa wyslales z numeru: +48664555585 ;] i faktycznie z treścią "Test"... Przyjrzyj się, po 2 oktety na znak, gdzie ten bardziej znaczący to 00,...
Witam, mam zaimplementowaną w projekcie obsługę protokołu modbus (biblioteka freemodbus v1.5). Ten sam program uruchamiam na płytce testowej Xplained z ATmega 328P i komunikacją po RS232 przez wbudowany port eDBG - tu wszystko działa jak należy, zarówno tryb RTU jak i ASCII. Zegar 16MHz. Po przeniesieniu projektu na ATmega 32 z zegarem 7,3728MHz Modbus...
W Saleae masz analizatory tych przebiegów. Patrzysz na Analyzers i sobie dodajesz I2C no i ustawiasz na ktorych to masz kanałach. Potem Ci będzie pokazywał Start, Stop, Ack, Nack albo Frame Error :D no i oczywiście dane które mozesz sobie włączyć w Hex, Ascii itd.. https://obrazki.elektroda.pl/5602260200_...
Ale jaka sieczka? Dostajesz dane w HEX, a w terminalu wyświetlają się ASCII... Wszystko jest w porządku.
Witam ponownie mam pytanie do kolegów a mianowicie nie działa mi funkcja dekodująca liczbę na kod BCD Mam funkcje A nie do ASCII ? Marek
Zainstaluj sobie jakiś normalny program do komunikacji, w którym widać czy to co wysyłasz to hex, czy ASCII. Polecam Docklight Scripting
W funkcji sprintf zamiast "d" wpisz "x".
Sprawdź ustawienia stosów. Dla uproszczenia zmień znaki a = 61 ASCII b = 62 itd. Wysyłaj np. echo a > /dev/ttyS0 Edit A jakim napięciem zasilasz uC ? Widzę chyba problem natury poziomu TTL Gdzieś widziałem tu na forum ten sam problem - teraz sobie przypomniałem. To był banał, ale teraz niestety nie pamiętam dokładnie co to było.
I znów piszesz nieprawdę. Standard C nie mówi nic o interpretacji przez kompilator znaków spoza zestawu ASCII - w obu przypadkach zachowanie jest nieokreślone.
Nic więcej nie potrzebujesz, wszystko możesz robić programowo. Oczywiście protokół i sumy kontrolne tez musisz zrobić sam. Kodowanie mancherster/NRZ robiłem używając tylko kilku znaków z całej tabeli ascii.
Wykonaj program dla mniejszych predkosci: 110,150,300,1200,2400,4800, 9600 itd Pamietaj zeby taka sama ustawic w terminalu i w programie. Wlacz w zakladce display: Hex+ Ascii Druga sprawa to przeanalizuj polaczenie max<->atmega: Pin14 (T1out) <--> Rxd w atmedze Pin13 (R1in) <--> Txd w atmedze
Mam pytanie odnośnie wyświetlania wyniku na wyświetlaczach led temperatury z czujnika DS18b20 odebranej z RMF12. Ramkę ładuję do bufora i wyświetlam na lcd; [syntax=c]lcd_locate(0,0); lcd_char(test[0]); lcd_str("-"); lcd_char(test[1]); lcd_str("-"); lcd_char(test[2]); lcd_str("-"); lcd_char(test[3]);[/syntax] Następnie chcę wysłać te dane do wyświtalacza...
Możesz dać przykład jak ma wyglądać np strzałka do góry w ascii?? W dokumentacji wyświetlacza znajdziesz tabele ze znakami i ich kodami.
zależy jak tą ramkę sobie zorganizujesz ale jeden z prostszych sposobów, gdy przesyłamy znaki ASCII to koniec ramki łatwo np odróżnić po tym, że nadleciał znak ENTER (0x0d). Gdy wykryjesz go w przerwaniu to już możesz powiadomić pętlę główną czy jakieś zdarzenie w tej pętli, że już jakaś cała i gotowa ramka czeka na odczytanie. Jeśli pętla główna będzie...
dzień dobroci. #include "konfig.h" // sugerowalbym nazwy typu "config.h" volatile char Temp; // skoro odbierasz znak, to po co komu 16-bitow? ISR(USART_RXC_vect) { //Temp=0; // zbedne Temp=UDR; if (Temp=='1') // przynajmniej wiadomo o co chodzi { UDR=Temp; //echo tego co wysyla } } int main(void)...
Na końcu artykułu o USART napisałem: Problem liczb i znaku zapytania w terminalu Jeżeli wysyłasz do terminala liczby w postaci kodów ASCII, możesz się natknąć na problem pojawiającego się w zamian jedynie znaku zapytania. Rozwiązanie problemu znajdziesz tutaj: Problem znaku zapytania podczas konwersji float do znaków ASCII
Poprawcie mnie jeśli się mylę, ale przecież char to po prostu typ zmiennej 8-bitowej. Nie ma różnicy co prześlę w ramach tych 8 bitów. Lecą sobie zera i jedynki i chodzi tylko o to, żeby programista wiedział jak je później zinterpretować. Innymi słowy czy paczka 8-bitów (typu znakowego 'char') to część jakiejś liczby, którą później programista złoży...
Pamiętaj również o tym, że transmisja odbywa się w kodzie ASCII. Możliwe, że to co otrzymujesz to prawidłowe wartości tylko Ty spodziewasz się otrzymać coś zupełnie innego.
Może wyślij bezpośrednio kod: 13 0x0D lub \r, ale nie jako STRING, a jako bajt (CHAR) . A Ty chyba interpretujesz, że '\r' ma być ciągiem znaków. Nie wiem, czy twoja implementacja "SendString" zamienia kod '"\r" na bajt 13? Kod ten jest znakiem "not printable", nie da się go zapisać pojedynczym znakiem i jako taki nie ma jednoznakowej repezentacji "wizualnej"...
Lutowanie BGA (a stosowne ARMy chyba tylko w takich są obudowach) Dementuję takie pogłoski. Przykładowa płytka STM32F429-DISCO. Ma prawdopodobnie wszystko co potrzebuje autor tego tematu, kosztuje śmieszne pieniądze. Na pokładzie 64Mbit SDRAM, więc wystarczy na wiele ekranów. Alpha blending + overlay (obraz statyczny + dynamiczny) robi sprzętowo. Sercem...
Tak uzywam AVRstudio. Ma kolega flapo213 moze jakies dobre algorytmy do przesowania tekstu albo jakies przykladowe animacje na lcd? btw. udalo mi sie dostac do tej tabeli, znalazlem na google stronke a konwerterem bin->ASCII i zalatwilo sprawem :)
Jeżeli przerwa między ramkami (która jest stanem wysokim na linii) wynosi minimum 3.5T to jak ja odróżnić od 4 (i więcej) jedynek?? 3.5T to czas gdzie T to czas przesłania jednego bajtu więc nie trzeba nic odróżniać :wink:. Dobrym rozwiązaniem jest sprawdzanie za każdym odebranym bajtem CRC wstecz tzn. czy odebrane dwa bajty są sumą kontrolną wcześniejszych....
Na sourceforge widziałem gotowe biblioteki modbus dla atmegi. [url=http://sourceforge.net/projects/avr... Sterowniki plc zazwyczaj mają rs485.RS485 mają zazwyczaj urządzenia mające komunikację modbus rtu lub ascii.Implementacja jest prostsza niż rs232 używasz sn75176(lub zamiennika) zamiast...
nie rozumiem zupełnie co zrobiłeś... --- rxd i txd to linie magistrali rs232, ft232rl to konwerter rs232<>usb, czyli poglądowo ma z jednej strony rxd i txd, a z drugiej usb --- ISP zaś to zupełnie inny standard, a raczej typ programowania (In System Programming - ISP) posiada on linie MOSI,MISO,SCK i RST, które nijak się mają do standardu RS232...
witam ponownie to znowu ja widzę po minach ze sie juz boicie :) a ja mam prośbę jak ktoś widzi na pierwszy rzut oka jakieś błędy to niech da znać a jak ktoś ma ATmega32 i chciał by to przetestować będę wdzięczny ponieważ ja jeszcze nie posiadam #include <avr/io.h> #define F_CPU 1000000 /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000)...
Fajna miniatura, jeszcze szczelna obudowa by się przydała :) Czasami można przełączyć wyjście danych GPS na binarne aby uniknąć parsowania sekwencji ASCII. Co ile następuje zapisywanie pozycji, może warto usypiać odbiornik GPS? Zapisywanie punktu super sprawa, można jeszcze wyświetlać numer zapisanego punktu.
Witam, Udało mi się uruchomić wyświetlacz 240x320 ze sterownikiem ili9341 na uC Atmega 1280. Obecnie chcialbym uzyc czcionkę znalezioną w internecie ze strony: [url=http://www.rinkydinkelectronics.com... a dokladniej takiej, która ma wymiary 64x100 pixels (nazwa SevenSeg_XXXL_Num) Jak mogę taką czcionkę użyc u siebie? Problemem jest dla...
Może tam jest zwykła transmisja szeregowa jak w RS232? Przecież nie wymyślali by chyba jakiegoś nowego kodu, czy szyfrowali :), myślę, że do drukarki są przesyłane zwykłe znaki ascii, lecz czekam na wypowiedź kogoś, kto miał do czynienia z takim sprzętem.
Dziękuję za wszystkie dotychczasowe rady. Właśnie wróciłem ze sklepu i zaraz zrobię konwerter na 74HCT14 z postu mirka. Jeśli to nie zadziała zmniejszę napięcie. Tak jak pisałem docelowo to nie wchodzi w grę, ale żeby przetestować transmisję rada jak najbardziej pomocna. Kwarc mam 8 Mhz więc jest OK. Według karty katalogowej moja atmega jest na 4,5...
1. No ale tu blokujesz działanie całego procesora na niepotrzebnie długi czas. Przy 9600 nadanie 1 bajtu to wieczność. Procesor może wtedy zatańczyć kankana. I to 2 razy ;) 2. Bo można to szybciej zapisać jako: "\r\n" w ciągu formatującym wyświetlanie liczby (printf) 3. Oj wygląd się liczy. I to bardzo. Jak napiszesz program liczący tysiące linijek...
no i tym czytałem ze to zamiana chyba char na ascii... int i=0; char buffer [33]; itoa(i,buffer,2);' Mam coś takiego, ale nie wiem jak tego użyć...
Oczywiście, że jest wysyłany. Procesory jeszcze nie wyewoluowały w kierunku pobierania danych przez osmozę czy telepatię ;) Jeszcze nie wyewoluwały? Dammit... Dałbym głowe,że mój jest inny ;) Dodano po 2 A jeśli chodzi o X-CTU to ma możliwość podzielenia okna na dwie części - w jednej pokazuje wartości w Hexie a w drugim odpowiadające im znaki w kodzie...
Nadajesz ciąg znaków (cyfr), a wyświetlasz kolejno kody ASCII tych cyfr w postaci dziesiętnej. Problem leży w wyświetlaniu, a nie w transmisji danych. Wypisuj po prostu odbierane znaki, nie konwertując ich na liczby funkcją itoa().
:) To już dużo.... ale biblioteka złącz też by się przydała, które piny są do czego... i to nie tylko jeśli chodzi o RS. Co do komend Hayes'a - to nie ma standardu i każda z komórek ma też swoje funkcje... za to brak dostępu do dokumentacji z komendami i trzeba szukać prawie do każdego telefonu osobno. Chociażby podawanie pinu: at+cpin="tu_nr_pin" -...
Jest tak: działa na 300 bodów - terminal 300 i atmega 300 działa tylko wtedy gdy niema <CR> pojawiene sie <CR> powoduje zatrzymanie transmisji do czasu otrzymania 2 innych bajtów powyzej zanku 32 tablicy ASCII Wiec wyglada na to ze port sie nie wyrabia
Wyświetla Ci się wszystko prawidłowo :). Zobacz zapisujesz do wyświetlacza wartość 0x3A(58 decymalnie) w obszarze tekstowym. Potem zerknij do funkcji GLCD_WriteChar. Ona przed zapisaniem danej odejmuje od wartości podanej jako parametr 32, czyli jako różnice otrzymujemy 0x1A i to leci do wyświetlacza. Zerkamy do dokumentu, który zamieściłeś i co widzimy?...
Ekran podpięty do ATmegi, na sterowniku HD44780, bo w terminalu można zmienić co ma wyświetlać :) Mimo to, i tak wysyłane są jedynie znaki ASCII (lub kolokwialnie mówić wartości 8bitowe) A czego się spodziewasz? Znaki o kodach <32 są znakami specjalnymi, niedrukowalnymi. Jeśli wysyłasz na LCD liczbę to najpierw musisz dokonaćjej konwersji do ASCII,...
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Albo łopatologicznie... void print (unsigned int data) { unsigned int temp, t, s, d; temp = data; t = temp / 1000; temp = temp - (t*1000); s = temp / 100; temp = temp - (s*100); d = temp / 10; temp = temp - (d*10); ... } Albo z większą finezją jak zaproponował kiedyś kolega przemek20... void print (unsigned...
Przechodzą do sedna, jak zaprogramować transmisję żeby układ pierwszy nadawał wtedy gdy układ drugi czeka na sygnał Nie za bardzo rozumiem... Jaki masz tutaj problem? Najzwyczajniej w świecie jedna Atmega odpytuje drugą. Najprościej i najszybciej zrobić to z użyciem znaków ASCII: - wysyłasz np"1" - odbierasz odpowiedź - wysyłasz np"2" - odbierasz odpowiedź...
Jeśli chcesz gotowy kod to masz go w przykładach do książki do ściągnięcia za darmo z ftp helionu. Możesz sobie tam zrobić dowolną liczbę wyświetlaczy, o ile pamiętam kod jest okomentowany, więc nie powinno być problemów. W powyższym kodzie żeby zwiększyć liczbę cyfr trzeba dodać kolejne case w ISR, co jest pomysłem takim sobie. Warto też wyświetlaną...
No jak 6 bajtów to tak jak pisałeś :) ldi r16, 'C' subi r16, 'a' ; masz numerek literki w macierzy teraz mul *nie pamiętam składni* r16, LICZBA_WIERSZY (mul sux:P) No i jesteś na początku tej literki w flashu teraz adres do Z i lpm;)
Użyłeś funkcji itoa - czyli integer na ascii - natomiast ICR jest typu unsigned, w efekcie każda wartość większa niż 32767 będzie wyświetlana jako ujemna. Użyj funkcji konwersji liczb bez znaku.
Sprawdź jeszcze jeden "myk" Wszędzie zamiast Chr( ) wpisz ten sam numer tylko w nawiasach klamrowych (bez Chr - tylko sam nawias i trzy cyfry) Przykład: Zamiast Chr(1) wpisz Lcd {001} Zamiast Chr(7) wpisz Lcd {007} Zamiast Chr(32) wpisz Lcd {032} Kod się znacząco zmniejszy co może się czasem przydać przy małych mikrokontrolerach. Chr( ) to funkcja zamieniająca...
Witam, Chciałbym się komunikować z uK za pomocą portu COM (RS232). Komunikacja miałaby przebiegać w stronę PC->ATmega16. Do komunikacji ma służyć Terminal. ATmega na podstawie odebranego znaku ASCII, czyli kodu klawisza klawiatury, ma wykonać jakieś zadanie. Podłączyłem Atmega16 do PC według schematu: http://obrazki.elektroda.net/48_12149859...
Witam Próbuję połączyć dwa uC za pomocą komunikacji UART. Attiny ma za zadanie nadanie jednego znaku ASCII natomiast Atmega powinna go odebrać i wyświetlić na wyświetlaczu lcd. Niestety kontrolery nie mogą się dogadać, programy realizujące to zadanie są praktycznie wklejone z not katalogowych Atmela, ale zamieszczam je niżej bo może coś pokręciłem....
Witam, No ale to właśnie robi instrukcja MID...... pozdrawiam
Chłopaki dajcie na luz. Odbiegamy od tematu. Właśnie wyszła nowa wersja Bascoma 2.0.2 w której dodano : mcs bootloader new reset option. you can send a string for reset. To send special ascii use {}. {027} will send ascii 27. To send { you have to use the ascii value as well since { is used to send special characters. - mcs bootloader can use DTR or...
Masz źle napisaną funkcję odbioru na PC. Musisz to napisać tak, aby dane ASCII opakować jakimś znacznikiem końca, lub przesyłać informację ile znaków wysyłasz i w funkcji odbierającej czekać na odebranie wszystkich lub zgłosić time out. Potem te odebrane dane parsujesz i przypisujesz stosownym zmiennym.
Potrzebuję wysłać do urządzenia rozkaz w postaci np 0xFF,0xFE,0x02. Bascom wysyła ale w kodzie ASCII a Ja potrzebuję w czystym hex. Jest to możliwe w Bascom czy trzeba pisać wstawkę assemblerową? Marek
Tak wygląda cała moja biblioteka: [syntax=c] #include "stm32f10x.h" #include "clock.h" #include "t6963c.h" //--------------------------------------... // Graphic LCD with Toshiba T6963 controller // Copyright (c) Radoslaw Kwiecien, 2007r // http://en.radzio.dxp.pl/t6963/ // Compiler : avr-gcc //--------------------------------------...
No ciekawe. A czy da się coś powiedzieć o moim ATtiny13A za niecałego dolara? https://obrazki.elektroda.pl/7095142100_... https://obrazki.elektroda.pl/7187523800_... Napis od góry: ATTINY13A 2309SKY Napis od dołu: C 87 Sygnatura zgadza się z notą katalogową (1E,90,07). Jeszcze taka sprawa: Dla komendy Read Signature...
Funkcja (w takiej ostatecznej formie jak przedstawiona przez Ciebie), wygląda na poprawną, tzn. powinna działać tak jak tego oczekujesz, chociaż sprawdzałem pobieżnie i głowy nie dam :D "Poprawność" rozumiem tu w sensie użytej sekwencji instrukcji. Przypuszczam, że kłopot może wynikać z zależności czasowych. Robisz dużo operacji na LCD. Być może użyte...
http://obrazki.elektroda.net/24_12730512... Co można zrobić z plastikowej doniczki i diod LED? Autor projektu, który obejrzycie na załączonym video, wykorzystał te materiały do produkcji globusa. I to nie byle jakiego. Globus przedstawia, a w zasadzie to wyświetla, mapę świata za pomocą diod LED. Bardzo ciekawy projekt. W podstawce globusa, która...
Witam! Nie umiem sobie poradzić z uruchomieniem kodu. Myślę, że temat książkowy. Mam błędy w programie który próbuję uruchomić w celu dalszej edukacji w C. Nie znam jeszcze dokładnie w tym języku wszystkiego, więc zwracam się o pomoc, jeżeli to możliwe, aby uruchomić ten projekt. Dodaję kod i plik z builda. Poprawiłem tytuł, formatowanie postu i pisownię....
JSON jest dość skomplikowany - lepiej zwykły ASCII. Ale to pod warunkiem, że można dodać coś swojego do serwera (i to by omijało logowanie się). Alternatywą (jeśli nie można dodać własnej wtyczki do serwera) jest napisanie klienta HTTP/HTTPS w języku, który ma odpowiednią bibliotekę - o ile dobrze pamiętam, taką mają np. Tcl, Python, PHP - klient by...
Tak, w jednym i drugim jest kwarc 4 MHz, Fussbity ustawione na zewnętrzny kwarc. Jakby oscylator nie pracował to nie byłoby komunikacji z prockiem. Prędkość transmisji w obu 9600. A współpracować nie chce. Zastanawia mnie fakt b. dobrej współpracy jednego i drugiego procka z programami testującymi i popranych realizacji zadań przy wysyłanych poleceniach...
Ok masz rację 46 hex to litera ascii f. Spodziewałem się ff . Wszystko jasne dzięki za pomoc.
Witam, od kilku dni walcze z modulem nrf24 do ktorego chce sam napisac biblioteke (uzywam atmega328P) Jestem na etapie odczytywania wartosci wpisanej do danego rejestru. Ustawianie bitow w rejestrach dziala dobrze, sprawdzam to za pomoca amperomierza (przy ustawieniu odpowiednich wartosci w rejestrze CONFIG zmienia sie odpowiednio prad zgodnie wartosciami...
No i wszystko niby działa (znaczy mogę dowolnie programować itd) ale apetyt rośnie w miare jedzenia. Dokleiłem sobie procedurkę bootloadera bo chciałbym mieć możliwość programowania Atmegi w układzie. No i tu się schody zaczynaja. Bo po pierwsze to nic przez uarta nie mogę się skomunikować, po drugie nie działa bootloader.(co pewnie wynika z problemu...
Witam w Nowym Roku Chciałem zapytać, czy ma znaczenie, do którego pinu kontrolera jest podpięte wejście sterujące wyborem karty SD ? Korzystam z kodu podanego w helpie - zamieniłem tylko PortB.4 na PortD.6 i cały czas mam aktywną kartę SD, co oczywiście skutkuje zablokowanie kontrolera. Jako, że nie działa mi to razem z innymi funkcjami, więc próbuję...
Metoda ciekawa i właśnie myślę jak ją zaimplementować. Tylko powstaje tutaj problem. W C# zdarzenie od odebrania danych wywoływane jest gdy RS232 cokolwiek odbierze, więc jeśli będę w przerwnaniu wysyłał znak po znaku to w C# będę otrzymywać pojedyncze znaki... potem ciężko będzie to skleić do kupy odbierając znak po znaku. Poza tym będę wysyłał różne...
Mam prosty program, których chcę wysłać znak char do atmegi na początek : http://obrazki.elektroda.pl/4357451800_1... Wyświetlanie znaków mam jako Ascii, jednak co nie wybiorę nie dostaję znaku 'n'.
Czekam 100ms po instrukcji print dla 115K nic to nie pomoglo zmniejszylem predkosc do 9600 nadal nic ;/ kod nadajnika $regfile = "m32def.dat" $crystal = 14745600 $baud = 9600 Config Serialin = Buffered , Size = 10 , Bytematch = 13 '##### Definicja wyswietlacza ##################### Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6...
...ok jak na dziś to mam już dosyć....wybaczcie ale naprawdę już nie myślę... //--------------------------------------... // >>>>>>>>>>... moje alpejskie kombinacje z C <<<<<<<<<<... //--------------------------------------...
hehe ;) <cr> to pojedynczy znak ascii "carriage return" o kodzie 0x0D; podobnie <lf> to znak "line feed" o kodzie 0x0A. BTM kończy chyba każdą odpowiedź znakami <cr><lf>, a ty musisz każdą komendę kończyć znakiem <cr>. Trzy +++ wysyła się tylko jak moduł jest w trybie danych.
Witam. Zabrałem się za projektowanie sterownika rolet opartego na atmedze z komunikacją rs485 modbus ascii . Jako ze od czegoś trzeba zacząć załatwiłem sobie zestaw uruchomieniowy atmega 32 ARE0034 . Do zestawu zostały dołączone przykładowe programy miedzy innymi program obsługujący rs232. Kod przedstawiam poniżej: /**************************************/...
OK... No więc sprawa jest dość prosta (przynajmniej jak jest już gotowa :) ) * Przede wszystkim potrzebne są tablice z konwersją ASCII 7 bit na ASCII 8 bit i z powrotem (chyba, że robimy monolog w jedną stronę). ODBIÓR * Odbieramy ciąg znaków -> pojawia się problem, bo Siemens C35i, tak jak większość modemów, wysyła i odbiera dane w trybie ASCII...
Może nie w temacie i się usunie, ale kolega Dasej pytał o GPS. Tam jest prosto. To nadaje w ASCII odbiornik po RS232 $GPGGA,183730,3907.356,N,12102.482,W,1,0... System NMEA 0183. 183730 oznacza godzinę 18:37:30. Wystarczy wiec uchwycić początek ramki. Pomagałem w budowie takiego zegarka i działa.
Takiego terminala jak na screenie to nie znajdziesz bo pisałem go sam na podstawie przykładu w B4J. Chodziło o to że wszystkie mają przyciski po prawej stronie i jak przesuniesz terminal na prawy skraj ekranu laptopa to potem ani go skasować ani wyłączyć bez przesuwania :D Jest jednak wiele innych. Realterm - wymaga trochę obeznania z nim, PUTTY - taki...
https://obrazki.elektroda.pl/2807245700_... Witam, Temat odgrzany, i nie mojego autorstwa, ale warty przypomnienia. Potrzebowałem aby pewne urządzenie wystawiało mi do PCta kilka klawiszy klawiatury. Słyszałem już kiedyś o projekcie SWUSB pisanym w jedynym języku który choć trochę znam - Bascom. Zaprojektowałem jednostronną niewielką...
Chyba, że ja się też mylę. Mój program działa poprawnie. Za to Ty na pewno się mylisz. Zapraszam do zapoznania z tabelą kodów ASCII. Po przeszukaniu całego internetu i wielu nieudanych próbach rozwiązania problemu udało mi się częściowo naprawić sytuację. Mianowicie po zmniejszeniu prędkości transmisji wyłącznie na mojej ATmedze32A większość znaków...
Hyper Terminal przerabia to co dostanie na znaki zgodnie z tablicą ASCII Wywołanie wyslij(5+'0'); przerabia poprawnie cyfry od 0-9 na kody ASCII tak by poprawnie zostały wyświetlone na terminalu jako odpowiednie cyfry. Aby wyświetlić unsigned char na terminalu możesz skorzystać z takiej funkcji: void wyslij_Value_as_Digits( unsigned char value )...
Chyba nie zrozumiałem pytania... Jak "napisać tablicę"? Normalnie: bierzesz długopis, kartkę i...piszesz :] Nie rob obslugi tekstów w C na sztywno zdefiniowanych tablicach. Znacznie lepiej robi się to wskaznikiem... Nie wiem jak ci pomóc, bo skad mam wiedziec co to jest 0x26 lub 0xB? Co to są za liczby? Nie są na pewno w ASCII (obok masz w komentarzu...
To: 1. Rozbij sekwencję na kody ASCII i umieść je w tablicy 2. Wyślij tablicę za pomocą Printbin Tablica(1) ; ilość_elementów_tablicy
Witam. [syntax=c]int uart0Init(void){ UBRRH = (uint8_t)(UART_BAUD_SELECT>>8); /* sets lower byte of baud rate register */ UBRRL = (uint8_t)UART_BAUD_SELECT; /* sets upper byte of baud rate register */ UCSRB = _BV(TXEN); UCSRC = _BV(URSEL) | _BV(UCSZ0) | _BV(UCSZ1);/* 8 data bits */ return 0; } int uart0_putchar(unsigned char c, FILE *stream) { while(!(UCSRA...
Parametry Com1, Synchrone, Parity, Stopbits, Databits, Clockpol Muszą mieć takie jakie ustawisz w PC (prędkość transmisji, liczba bitów stopu, parzystość/lub nie). 8,n,1, baudrate, to wiadomo. Com1 - jeśli to wybór portu sprzętowego kom, dostępnego w mikrokontrolerze to też jest zrozumiałe. Zastanawiałem się raczej nad sensem stosowania transmisji...
Mam problem z przesyłanymi danymi z PC do atmegi. Nigdzie nie znalazłem podobnego, może ktoś już spotkał się z czymś takim. Do atmegi podłączony jest max232 przez który odbywa się transmisja. USART skonfigurowany na 8 bitów danych, 1 stop bit, bez kontroli, 9600. Wysyłam z PC po jednym bajcie następnie od razu odsyłam je do PC. Z bajtem który otrzymuje...
hmm panowie fajnie poczytać wasze opinie na takie tematy jednak chyba nie idą one w temat mojego problemu. Użyłem case i juz wiem ze to jest nie właściwa instrukcja warunkowa. Doprzygotowania swojego menu wykorzystałem if-y jednak przy kilku poziomowym menu troche sie w tym zamieszałem i gdybyście szanowni koledzy pomogli mi troszke zoptymalizować kod...
A mnie się wydaje że tylko jeden najstarszy bit jest błędny. Tak! rzeczywiście, nie wziąłem pod uwagę, że Terminal wysyła kody ASCII czyli "0" tak naprawdę przesyłane jest jako "48" a więc reprezentacja binarna to "0011 0000" a nie "0000 0000". Mimo wszystko problemem była ta "1" na najstarszym bicie. Okazało się, że ustawiłem złą długość ramki. /*...
Witam Uaktualniam sterownik (na bazie ATMEGA AVR) tak aby można go było programować poprzez RS485 protokół MODBUS ASCII. Mam problem jak powinna wyglądać obsługa rozkazów które wymagają długiego czasu wykonania (max 8 sekund. Jeden z rozkazów powoduje przepisanie parametrów z RAMu do EEPROMU 1kB.) tak aby uniknąć timeout ze strony serwera (zdalne programowanie...
Tu jest błąd: Dobra to poprawię. Na co to wpływa ? Dodano po 1 ~1<<enable; rozumiem że chodzi o wyzerowanie wszystkich bitów oprócz 7 i 6 (dla enable == 5)? Czy o ~(1 << enable)? Dodano po 8 while(*string_of_characters > 0) Znaków o kodach > 127 rozumiem że świadomie nie chcesz drukować. 1. zerowanie wszystkich :) 2. drukuje się napis...
Coś dziwne rzeczy wypisujesz.... )0x0C00 to jak na mój gust trochę ponad 3000, czyli nawet zakładając, że podajesz słowa, a nie bajty nadal masz 1/4 pamięci wolną, a 0x0B00 to nieco ponad 2800 więc w czym problem? Po drugie nie piszesz nic o optymalizacji - próbowałeś coś z tym robić? Z jakim efektem? Po trzecie ze zmiennymi lokalnymi to jest tak, że...
(at)ElektrodaBot Czy możesz przedstawić to z wykorzystaniem symboli bramek i przerzutników- z tej wersji ciężko się połapać- np.wyjścia bramek AND wg. schematu wiszą w powietrzu - nie są nigdzie podłączone. Do generowania BUS_ACK powinien nadać się 74LS123 - ma możliwość wprowadzania opuźnienia elementami RC. Bezpośrednia odpowiedź Poniżej znajduje...
Witam Postanowiłem pobawić się trochę układem DS1305. Ogólnie układ wydaje się działać, jednak kiedy bliżej przyjrzeć się temu w jaki sposób zliczany jest czas pojawia się pewne dziwne zjawisko. Mianowicie co jakiś (co 10 sekund/minut) czas zamiast inkrementacji sekund/minut o 1 inkrementują się one o 7 np. z 25 na 32. Poza tym wszystko wydaje się być...
1. Użyłeś kod, który Ci zmieniłem ale zrobiłeś to niedokładnie - przez co może nie działać poprawnie (z jakiegoś powodu dałem int a nie char - zastanów się dlaczego). Co prawda przy ASCII7 nie będzie to problem. 2. Szkoda te 20 linijek rozbijać na tyle plików - ciężej się czyta, a sensu za dużo to nie ma. 3. atoi - nie sprawdzasz czy masz poprawny string...
Driver czyli cała płytka sterująca drukarką (z megą i driverem silnika). Nie mylić z samym układem/driverem silnika krokowego. Dane do głowicy idą bezpośrednio z procka ATmega 32 będącym na płytce drivera. Wiem że trochę tym nazewnictwem namieszałem więc teraz płytkę będę nazywał sterownikiem drukarki :-) Co do sekwencji grzania to do tego są wejścia...
Brak kompatybilności z hd44780, który znalazłem to symbol stopnia (°), znajdziemy go jako (char)128 w kontrolującym wyświetlacz układzie SSD1803. O jakiej kompatybilności piszesz? Znaku stopnia niema w podstawowej tablicy kodów ASCII i może on być ale nie musi umieszczony w ROM sterownika. To jakie znajdą się tam znaki zależy od zamawiającego/producenta....
Chodzi o to, że standardoiwy print wysyłał liczbę jako ciąg kodów ASCII. Kumpel się nad tym sporo namęczył. Ale generalnie, jeśli deklarujesz $crystal jako 8 MHz to powinno działać. A tak kombinuj jak to deklarować, żeby było dobrze :/ A przecież BASCOM jest taki intuicyjny :P Wiem, że fabrycznie ATmega ma swoj wewn. oscylator. Jak dla mnie, BASCOM...
co to za cudo?? Kolega po prostu czyta tekst i trzy znaki ASCII przekształca na liczbę 000-255. Oczywiście mógłby to robić korzystając z funkcji atio(), ale może ma powód by to robić "na piechotę". Taki zapis jest także jawnym marnotrawstwem pamięci karty i raczej niczego nie upraszcza, ale weź przekonaj... Co do takiego zapisu, nic jednak nie wiemy...
Dlaczego tablica ascii ma tylko 6 pozycji? Potrzebujesz 7. Jawnie wychodzisz poza tablicę (w kodzie wystepuje ascii[6]). I taka uwaga na przyszłość. W funkcji set_values wysyłasz dane serialem. Procedura USART_Transmit czeka aktywnie na wysłanie - trwa dość długo. Wywołanie jej w procedurze obsługi przerwania z odbiornika powoduje za długie wykonanie...
Problem mój jest taki, chciałbym zrobić robota mobilnego sterowanego poprzez USART kablem RS232, w wyniku odebranego znaku ASCII robot ma za zadanie poruszać swoimi silnikami. Moim problem jest, iż chciałbym aby wysyłając sygnał jazdy np. do przodu znakiem np 'w', mikrokontroler zliczył mi czas trwania jazdy i wysłał z powrotem do PC. Probowałem różnymi...
ja pisałem takie coś pod win avr dosłem do tefgo że obsługa jest podobna do comportu niwiem czy błądze jest to uart http://web.archive.org/web/2003060516281... w moich kodach w najlepszym przypadku wykonywał ciągłom pętle i nic nie pisał a z pewniej mądrej książki przeczytałem że kody które klawiatura...
ascii atmega modbus ascii atmega konwersja ascii
czujnik temperatury chłodziarki hyper transport piksele martwe
pompa ciepła samsung pompa ciepła samsung
Kenwood KDC-W3037 – strojenie radia, ustawienia tuner FM/AM, zapamiętywanie stacji Sayona SHT1148-BT Low Sound Issue: Diagnosis Tips