Pomyliło Ci się z itoa(). Ta którą podałem działa właśnie tak jak potrzebujesz, czyli string->int. Podałem nawet link na wikipedii, wystarczyło kliknąć. ;)
Symulator w Atmel Studio 6.0. Twoje funkcje u mnie działają poprawnie, tzn dane z jednej są kopiowane do drugiej. To kopiowanie jest "bezmyślne" w sensie że, kopiuje obszar pamieci bajt po bajcie, bez znaczenia jest typ zmiennej. Może problem tkwi w dobieraniu się do pól struktury?
Z procka, z tego co wiem, to nie. Mozesz kupic sobie EEPROM z identyfikatorem unikalnym np. [url=http://ww1.microchip.com/downloads/... Mozesz sobie tez podlaczyc scalak o podobnej funkcjonalnosci na 1wire (sa takie). Dla pocieszenia powiem, że większość nowych ARMów ma unikalne serial numbery w krzemie ;]
Nie dziwne że twoja funkja nie działa, skoro odbierasz w niej JEDEN (słownie: 1) znak... stringi kończą się zwykle znakiem \n, czaem nawet kombinacją \r\n 4\/3!!
rzeczywiście nie rozumiesz. Chodzi o to żebys wiedział, czy masz coś w buforze. np - malutka modyfikacja [syntax=c]int uart_getc(void) { // sprawdzamy czy indeksy są równe if ( UART_RxHead == UART_RxTail ) return -1; // obliczamy i zapamiętujemy nowy indeks „ogona węża” (może się zrównać z głową) UART_RxTail = (UART_RxTail + 1) & UART_RX_BUF_MASK;...
Dlaczego niezależnie od tego czy string wejściowy zaczyna się od "-" bądź nie, efekt jest ten sam: Jest to zgodne z opisem działania tej funkcji: " To determine the beginning and the end of a token, the function first scans from the starting location for the first character not contained in delimiters (which becomes the beginning of the token). " Ciekawe...
Nie dokładnie opisałem. U mnie A01 jest uzyskiwane ze zmiennej Sring - i tu jest problem jak to wyświetlić. Może tak - w wyniku operacji na zmiennej string otrzymuję wynik A01(też string). I teraz potrzebuję wyświetlić to co jest zapisane pod zienną A01 (czyli w przykładzie tekst1. c jest string = 5 , d jest string = 0, A50 ="Test1" B = C + D E = Val(b)...
Zamień na stringa to co otrzymujesz z ADC, albo przerób inaczej procedure wysyłania. W tej chwili w funkcję która wysyła stringa wrzucasz int'a
1. Włącz BOD i WD 2. Utwórz zmienną na początku pamięci EEPROM i jej nie używaj: [syntax=vbnet]Dim Reserved As Eram String * 8 Dim Dane As Eram Byte ... [/syntax]
Jak zadziała polecenie Len() ? obliczy długość dołączonych zmiennych T1 i T2 ? Tak, choć samodzielne sprawdzenie tego choćby w symulatorze zajęło by Ci 60 sekund ;-) Oczywiście mowa tutaj o zmiennej Command, która, zakładam, jest stringiem.
To co robisz jest absolutnie błędne. Nie wolno zwracać wskaźnika do zmiennych lokalnych - po wyjściu z twojej funkcji wskaźnik ten nie wskazuje na żaden poprawnie zaalokowany obszar pamięci. To co wcześniej zajmował twoj string będzie od razu nadpisane przez kolejne funkcje - wszystko przecież znajduje się na stosie. Jeśli chcesz zwracać wskaźnik na...
W przykładach operujemy ciągle na stałych - daj fragment kodu, który Ci coś nadpisuje. Jeśli chcesz wygodnie korzystać z c-stringów to dołącz string.h i korzystaj z właściwych do tego celu metod... no i właśnie dlatego "nie schodzę poniżej" C++, bo uważam, że programista ma na głowie ważniejsze rzeczy (jak np. funkcjonalność i niezawodność końcowej...
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...
Bo Const to stała a Ty potrzebujesz czegoś jak DB albo PROGMEM. Czyli danych umieszczonych w pamięci. A stała niekoniecznie będzie tam umieszczona. Stała może być np. wbudowana w rozkaz assemblera (akurat nie tutaj ale inaczej to może być). Zrób raczej tak: Dim Atmega As String Dim Attiny As String Atmega = "Atmega" Attiny = "Attiny"...
Musisz o jeden większe robić jeśli przechowują stringi (tylko wtedy) i to na dodatek o jeden większe od długości stringu jaki chcesz w nich przechować. Chodzi o to, że dla stringów mamy zawsze ostatni znak końca stringu, którego w zasadzie nie widać ale musi on tam być.
http://allegro.pl/listing/listing.php?or...
To jeszcze dodaj zabezpieczenie przed przekroczeniem długości stringa. Bo teraz jeśli PC wyśle długi string to możesz zapisać aż 256 bajtów, po czy string będzie nadpisywany.
Zamiast klocka do konwersji na double daj 'string indicator' i pokaż jaki dokładnie string odbiera labview. Poza tym, powinieneś mieć coś jak "COMileśtam" w okienku do wyboru źródła VISA.
nie, funkcja nie ma możliwości wykryć jakiego typu dostała argumenty, i dlatego na przykład w funkcji printf typy są podane w pierwszym argumencie (który z góry wiadomo że jest stringiem) i dopiero kolejne argumenty są typów dowolnych.
Czyli obecnie masz zepsutą i błędną funkcję pobierającą rzekomo łańcuch, a w rzeczywistości jeden znak na ATmega oraz program na PC niedopasowany do poprzedniej, nieco kulawej ale jakoś działającej funkcji odbioru łańcucha. Program na PC nie może wysyłać nowych znaków dopóki nie odbierze całego łańcucha z ATmega, bo inaczej nadawane znaki nie będą odbierane...
Obydwa sposoby działają, dzięki wielkie :) Na jakiej zasadzie działa pierwszy sposób jest jasne, ale skąd się bierze "\x1a"? Jak myślisz jaki znak by wyszedł gdybyś wpisał coś takiego? "\x41" podpowiem - duża literka A jak widzisz jest to hexadecymalna reprezentacja znaku. Dzięki takiemu zapisowi można przesyłać w stringu znaki niedrukowalne - jak...
Pierwsza rzecz która rzuca sie w oczy to to że podajesz długość sms jako argument funkcji dekodującej a potem zmieniasz ten argument wyciagając tą długość z zakodowanego stringu. I jeśli w stringu jest ta wartość to potem nie zwiększasz wskaźnika i te same dane wykorzystujesz do dekodowania smsa. Albo zapomniałeś zakomentować pdulen=hexstr2bin(ppdu);...
A dlaczego nie możesz użyć pgm_read_byte/word? Przy pomocy tych makr odczytujesz string aż do napotkania znaku NUL, który go kończy. Alternatywnie wymień strcpy na strcpy_P, tylko, ze wtedy funkcja będzie działać wyłącznie na stringach z FLASH.
http://allegro.pl/listing/listing.php?ca... 59 - 69zł za dwa piloty i odbiornik. Te piloty z metalowym, szczotkowanym frontem są naprawdę pancerne.
Dodaj log debugowy w setupie aby sprawdzic czy nie resetuje Ci się mikrokontroler. Używałbym char[] zamiast String i porównanie stringów strcmp(). Zamiast tej ściany if-else wrzuciłbym komendy do jakiejś tablicy structów. Gdzie struct zawierałby dwa pola on i off które wskazują na komendy. Indeks tablicy wskazywałby który elektromagnes właczasz/wyłączasz....
Za długie pętle lub za krótkie tablice zmiennych.
Po stronie kompa i VBA tak: Do DoEvents Loop Until MSComm5.Input <> CR TextBox1.Value = MSComm5.Input I do pola tekstowego wpisuje mi tylko pierwszą cyfrę 9 zamiast 999 :/ Gdybyś wysłał ciąg 123 to otrzymał byś w polu tekstowym nie pierwszą, a ostatnią liczbę, gdyż tylko ona jest tam wpisywana. Dlaczego? Bo nie dopisujesz do TextBoxa odebranych...
(at)rewolt90 Ten procesor ma tylko 1KB pamięci RAM. Tworzenie tak wielkich zmiennych automatycznych nie jest dobrym pomysłem.
Dla 3 i więcej elementów lepszy jest regex, coś jak poniżej ("coś", bo kod pisany z pamięci, nie testowany) [syntax=vbscript]If msg.StartsWith("T") Then 'T,123,4567" Dim dane() As String dane = Regex.Split(",", str) EditText2.Text = dane(2) EditText4.Text = dane(3) End If[/syntax]
Spróbuj tak: [syntax=c] #include <avr/io.h> #include <util/delay.h> #include "HD44780.h" #include <stdlib.h> #include <string.h> #include <avr/pgmspace.h> int main(void) { char *LINE = PSTR("Jakiś tam sobie tekst"); char i=0; LCD_Initalize(); LCD_Clear(); LCD_GoTo(0,0); for(i=0;i<10;i++) { LCD_WriteData(pgm_read_byte(LINE+i));...
W takim razie potrzebujesz konwersję string na int. http://4programmers.net/C/Konwersje_int_...
Sorki nie zauwazylem ze to progmem. Pointery w progmem nie istnieja w sposób tak rozumiany jak w normalnej pamieci - tak ze tak łatwo nie bedzie. [syntax=c]#define BUFFLEN 18 char __buff[BUFFLEN]; strncpy_P(__buff, (const char *)pgm_read_word(&(ptr_to_text[0])), BUFFLEN - 1); __buff[BUFFLEN -1 ] = 0;[/syntax] i dopiero mozesz wolac swoja funkcje cos...
Aby float działał w printf/sprintf , należy dodać w opcjach linkera dodatkową bibliotekę. Jak to zrobić, opisane jest pod koniec pierwszego posta w temacie http://www.elektroda.pl/rtvforum/topic10...
dim Wart_adc as word dim V as single dim Wart_nap as string * 4 Wart_adc = Getadc(0) V = Wart_adc * 0.0048 '( 5/1024 * wart_adc) Wart_nap = Fusing(v , "#.&&") 4 bajty mniej :) P.S. Można nawet zrezygnować ze zmiennej Wart_nap :)
Może, ktoś z kolegów podpowie, bo nie mam pojęcia dlaczego nie mogę skomunikować Atmegi 8 z Atmegą 16. Atmega16 wysyła przez RS jednoznakowy string i druga Atmega go odbiera i realizuje sekwencję programu związaną z tym poleceniem. po wykonaniu ma odpowiedzieć tym samym znakiem, że polecenie zostało zrealizowane i tu jest problem. Pierwsza Atmega informacji...
zumek jesli masz na mysli mnie to uzywam atmega32 i mam jeszcze 12kb wolnego miejsca wiec jest ok ale jak braknie to przejde na atmega 128 . dziekuje wszystkim za pomoc
String to znaki ASCII, więc ustawiasz sobie 2 znaki (2 wartości bajtu) spoza używanego obszaru ASCII i traktujesz je jako stop i start. Algorytm wygląda tak: 1. Czekam na bajt start (lub wykrywam jego nadejście w odpowiednim przerwaniu) 2. Otrzymałem bajt start - zaczynam odbiór 3. powtarzam w pętli (dopóki nie otrzymam bajta) stop: a) odbierz znak...
jeżeli już uzyjesz procka a dwoma uart'ami to budujesz procedure która odbiera od twojego urządzenia string'i jeżeli wykryjesz odbior pierwszego string'u (czyli nagłówka) np if odebrany="wzór nagłówka jeden" then ustaw flagę że nastepny string to będą pierwsze dane wtedy : if flaga1=1 then pierwsze_dane=odebrana:reset flaga1 z drugim nagłówkiem i drugimi...
podany microboard pobiera zasilanie z programatora, więc przydałoby się coś ze stabilizatorem. Generalnie, zlutowanie układu na płytce prototypowej to jakaś godzina zabawy (max), więc jeśli chcesz w późniejszym czasie projektować układy z peryferiami to dobrze byłoby przejść ten etap chociaż raz. Schemat masz tu: http://kursc.forbot.pl/str001.html "atmega...
Przkonwertować się nie da :) Możesz: 1. używać adresu tej zmiennej volatile i robić derefencję [syntax=c] volatile uint8_t x; char *ptr = &x;[/syntax] 2. Przypisac wartosc tego do takiej tablicy [syntax=c]volatile uint8_t x; char c[ILOSC_ELEMENTOW]; /* ....*/ c[element] = x;[/syntax] 3. Jezeli chcesz mieć to w postaci stringa [syntax=c]utoa(x, c, 10);...
Witam, Na dwóch ATmegach chciałem zrobić komunikację za pomocą UARTu. Miałoby to działać na zasadzie: jeśli ATmega odbierze string (hasło) np.: "1234" to wykona jakieś zadanie Kod nadajnika działa prawidłowo, potrafię wysłać string (kod w załączniku) Mam problem z kodem odbiornika, kod działa tak że reaguje tylko na znak, nie potrafi odebrać stringa....
Jak zwykle czasu nie ma, ale nie mogłem się powstrzymać. Nakręciłem pierwszy klip - ahahahaha :D No musiałem się pobawić edytorem. Efekt to półtora minuty magii :D Ahahaha miałem kupę zabawy z tym :D Przy okazji możesz zobaczyć jak się używa wbudowanego symulatora by zadawać wartości ADC ;) Twój pomniejszony kodzik też poniżej, tylko używając poza symulatorem...
Coś takiego znalazłem. Co prawda na Atiny ale można przerobić. [syntax=c]// // Talking to ultrasonic sensor HC-SR04 with an ATtiny84, and // sending distance data using serial communications. // // electronut.in // #include <avr/io.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU 8000000...
Hmm bardzo możliwe.Szczerze mówiąc nie zwróciłem na to uwagi. Wieczorkiem uproszczę tą procedurę. A pytanie: czy czasem te instrukcje : Instr(rs1_odebrane , "SYGNAL:") nie spowalniają wykonywania procedury? Można jakoś inaczej wyciągać interesujące nas dane z "odebranych stringów"?
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...
Hmm, czy to nie jest problem z adresacją? Taki prosty przykład znalazłem i makro pgm_read_byte używane gdy pobieramy string z "program space" [syntax=c]uint8_t string[12] PROGMEM = {"hello world!"}; int main(void) { UDR0 = pgm_read_byte(&string[10]); }[/syntax]
Wybieg przesuwający przecinek. Wynikiem będzie, na przykład, dla temperatury 22,4 st C 224 i przecinek należy sobie w stringu dorysować :D
najprościej : atmega1 atmega2 Rx----- ----Tx >< Tx----- ----Rx najprosciej program ? chyba bascom :P atmega1 : print "1" atmega 2 Dim Bufor As String * 24 Input Bufor Noecho If Ischarwaiting() = 1 Then '1 - odebrano znak,0 - pusty bufor ' tu odbierasz dane i robisz z nimi co chcesz End If
(at)dasej Jest jakiś techniczny argument za tym aby uprawiać tego typu archeologię?
Spróbuj zadeklarować tablicę 7x3, czyli 7 elementów trzy znakowych (do stringów potrzebny jest jeszcze znak null). [syntax=c]const char text_w_rom11[7][3] PROGMEM = {{"Pn"},{"Wt"},{"Sr"},{"Cz"},{"Pt"},{"So...
Klawiature musisz potraktować jak jeden zwykły przycisk. Tyle że zwykły przycisk ma stan wysoki jeśli nienaciśnięty a ten przycisk zwraca 16 jeśli nienaciśnięty. Napisałem na szybko dwa przykłady. Jeden działa bezposrednio na wartosciach a drugi na stringu [syntax=vbnet] Dim Key As Byte Key_val As Byte , Lock As Byte , Licznik As Byte Dim Val_str As...
Poszukuję funkcję zamieniającą liczbę 32bitową lub większą na string w asemblerze ATMEGI.
Dodaje kod do zapisu daty i czasu w PCF8563 [syntax=basic4gl] '********************* Funkcja ustawiająca zegar PCF8563 Sub Settime_pcf Ssek = Makebcd(s) 'sekundy Mm = Makebcd(m) 'minuty Hh = Makebcd(h) 'godziny Dday = Makebcd(day) 'dni Wwk = Makebcd(wk) 'dni tygodnia Mmonth = Makebcd(month) 'miesiace Yyear = Makebcd(year) 'lata I2cstart 'warunek startu...
Nie to sprawdzałem. Wygląda to jakby procedury odczytu DS-a działały bo ta temperatura wyświetlana -0.1 o tym świadczy. DS jest zasilany z 3,3V i wyczytałem że przy takim zasilaniu rezystor podciągający linie DQ ma mieć około 2k i taki mam. Ale z rezystorem 4,7k też nie działało. Gdzie to wyczytałeś? Datasheet nic na ten temat nie mówi, poza "Can be...
Można to tak zrobić: [syntax=basic4gl]Dim Command As String * 4 , Bajty_command(5) As Byte At Command Overlay Printbin Bajty_command(1) ; Bajty_command(2) ; Bajty_command(3) ; Bajty_command(4) ; Bajty_command(5)[/syntax]
W środowisku Arduino to avr-g++ wywoływany jest z następującymi paramterami (dla atmega 328p): Teraz zrobiłem wszystko jak należy (tak mi się wydaje) ale niestety błąd występuje nadal w takiej samej formie: A oto problematyczna funkcja (Arduino.h): [syntax=c]int atexit(void (*func)()) __attribute__((weak));[/syntax] Nie mam pojęcia co może być nie...
witam, napisałem dwa kody na obsługę i2c master(atmega644p): /* * main.c * * Created on: 16 lut 2018 * Author: Mirosław Kardaś * web: www.atnel.pl */ #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #include <util/delay.h> #include <avr/wdt.h> #include <avr/pgmspace.h> #include <avr/eeprom.h>...
Przerobiłem tak, żeby wysyłał testowo tylko jedną wartość ( losową ) co 8 sekund Dodano po 18 Dołożyłem Clear Serialin0 Com1_str = "" czyli [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0...
Jeszcze nie zrozumiałes ze s[5] = "start" nie jest prawidłowe? A dlaczego? Kolega powyzej napisał. if((buffer[i] = receiveByte()) == '\n') powoduje ze buffer nigdy nie bedzie zawierac "start" tylko start\n" czyli warunek w strcmp niegdy nie bedzie spełniony. Nie bedzie on spełniony tez z innego powodu - bo nie ma zera na koncu. Proponuje Ci nie uzywać...
Witam, poniżej zamieszczam kod z Bascoma mojego sterownika BMS, w tej chwili kontroluje temperaturę, czas, Rs232, LCD 2x16. Obsługa z klawiatury lub pilota RC5, w obecnej chwili rozwiajm go o dostęp przez internet. zajmuje ok 8kb pamięci więc w A162 będziesz miał jeszcze drugie tyle pamięci. Ja kożystam z A32 Pozdrawiam. PS. daj znać jak zakończysz...
sprawa banalnie prosta a o to przepis : Atmega8+LCD+MAX485 ,protokół sam możesz zrobić w bascom ,tą cześć raczej trudno nazwać protokołem ,raczej atmega zajmowała by sie odbiorem stringów które by latały po RS leprzy protokół wyglądał by tak : PC->AVR string+CRC PC<-AVR OK opisy znajdziesz na elce
próbuje ściągnąć locka z c118 za pomocą UBL-a posiadam kabelek do c115 pod hwk . W ultimie wyrałem by łączył sie przez ufsa po kliknieciu unlock wyskakuje Phone should be powered OFF Open serial interface UFS UFS description: UFS3 SarasSoft UFS EE SN: 88891 Atmega SN: 23891 Activation string response: 3E Please press and HOLD power ON button Error:...
Funkcja czekająca na odpowiedz powinna być odporna na brak jakiekolwiek odpowiedzi. W przypadku braku odpowiedzi z modemu Twój kod się "zapetli". Jak wygląda kod usr0_getc()? Nie widzę związku między ISR a tą funkcją. Zakładam również, ze flagi (flagGotLine i pozostałe) zadeklarowales jako volatile. Postaraj się zaimplementować pkt. 4 z mojej poprzedniej...
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...
A może elektrody z grafitowych pręcików z ołówka? Powinny wytrzymać długotrwały kontakt z glebą lepiej, niż stal kwasoodporna. Nawet są w sprzedaży same pręciki, do ołówków automatycznych - [url=https://allegro.pl/listing?string=g... Allegro 12 sztuk 2mm 12cm za 4zł, 24 0.5mm 6cm za 1zł (+wysyłka);...
Próbujesz przepchać ramki CAN 125Kbps poprzez Serial 115.2k, jako stringi generowane z sprintf'a. E: Rzeczywisty transfer jest znacznie mniejszy, ale wciąż każdy bajt jest przesyłany jako 5 + wcześniejsze stringi. Nie wiem czy biblioteka do MCP będzie się wyrabiać, ale podbijanie prędkości uarta w Arduino kończy się gdzieś przy 300-500kbps. Z sprintf'em...
Znaki \r, \n, \" itd. są określone w specyfikacji języka c i jeśli taki znak występuje w stringu ujęty w cudzysłów to kompilator automatycznie zamienia go na daną wartość w kodzie szesnastkowym. Pokaż funkcję usartSendString razem z przerwaniem od Tx (jeśli wysyłasz używając przerwań). Może tam masz błąd. Może nie wysyłasz ostatniego znaku ze stringu...
Jest tak jak chcesz wyświetlić znak to albo podajesz kod ascii czyli np 0x65 to literka 'A' lub podajesz spod którego adresu wyświetlić mozaikę. Teraz tak jakbyś chciał wyświetlić powiedzmy 32stC to powienieneś zrobić tak wywoływać pokolei z autoinkrementacją 3 poźniej 2 później np twój stworzony znak stopnia np spod adresu 0x00 i na końcu C. Gdybyś...
Nie jestem pewny o co tak naprawdę koledze chodzi. Czy to jakoś pomoże? Dim tekst as eram string*30 Najprostszy sposób na zapis stringa w pamieci eeprom. pozdrawiam Tomek
Może ja się nie znam... ale podajesz stringa a udr jest 8bit... jak to ma nadać tego stringa w/g Ciebie?
Najprosciej zmien typ a i b na typ string a obliczenia zrob tak: [syntax=c]c = stoi(a)+stoi(b)[/syntax]
Witam. Przedstawię dzisiaj kompletne rozwiązane jak szybko uruchomić za parę złotych własny terminal rs-owy w oparciu o konwerter USB RS232 na układzie scalonym PL-2303HX który można kupić bez problemu na Allegro. http://obrazki.elektroda.pl/9582806900_1... Przykład oparłem na programie putty z domyślnymi ustawieniami dla RS-a. Biblioteka...
Witam. Coś tam sobie tworzę. I chcę by działało na Atmega328 i Atmega644. Doczytałem się w książkach że mam zrobić coś takiego by była możliwa kompilacja warunkowa. [syntax=csharp]#define TOSTRING( a ) STRINGX ( a ) #define STRINGX( a ) #a // AVR Studio // konfiuracja opcji // - Custom Option // dodać linię // -DMCU=$(MCU)[/syntax] I jak robię coś takiego...
Dim napiecie As String * 5 Nie marnuj pamięci wystarczy 4 :)
Czytaj w helpie na temat: left, mid, right
kamyczek fajnie ale to nie było to... :) po kilkunastu chyba juz dniach doszedłem co to było wreszcie działa. Otóż brakowało w tym kodzie jak widzisz magicznej komendy Enable Interrupts z racji uzycia Config Serialin nastpną rzeczą jest to iż z racji użycia funkcji Input nasza Atmega czeka na sygnał CR a ja pisząc w Pythonie... import serial ser = serial.Serial(8,...
Przy odebraniu pierwszej z linii zaraz po otwarciu COM zdarza się ( nie zawsze ) że ATMEGA wyślę kilka "krzaków"...,np. *&$% i wtedy debugger wurzuca błąd konwersji... Przy tych ustawieniach ATMega-i (1MHz i 1200bps) masz jakie 0.2% błędów w wysyłanych informacjach. Może to nie jest dużo, ale z upływem czasu liczba błędów będzie rosła. Zmień ustawienia...
Mi się nie śpieszy ,próbuje w symulatorze to zrozumieć te przebiegi napięcia [syntax=c]#include <avr/io.h> //Przypisuję pin 0x02 jako wejście wyświetlacza LCD //i pin 0x01 jako RS z pinem LCD //Najwyższe piny danych modułu do pinów lcd P4-D4,P5-D5,P6-D6,P7-D7 //R/W idzie na ziemię //-----Proto-Type-------// void lcd_init(); //----Funkcja inicjalizacji...
Z tym zerem jest tak, że jak tworzysz zmienna typu string (null-terminated) to ma ona automatycznie zakończenie w postaci 0 na końcu. Lecz jeśli zrobisz tablicę znaków i chcesz uzywać jako stringa to musisz dodać 0 na końcu (żeby było kompatybilne ze stringiem). Czyli każdy string = text+0 a tablica bedzie u ciebie tylko text, dlatego aby swobodnie...
A te dwa Stringi wysyła?
Może spróbuj wydłużyć stringa U_wy. Chyba że nie oczekujesz wartości powyżej 9.9.
A pytanie brzmi ? Pytasz w dziale uK, wiec pewnie z myślą o C C++ w zakresie "C z klasami" (tzn bez intensywnej alokacji np std::string) daje kod nie gorszy, a nawet oszczędność Na Atmega 8 zyskałem zmieniając charakter projektu 2B danych statycznych (czyli 5-10%) i ok 20B kodu z automatu - sądzę, że gdy w C++ można bardziej agresywnie określić prywatność...
Musisz najpierw przekonwertować zmienną na string/char. Wyświetla nie głupoty, tylko dane które jej przekazałeś (czyli jakąś liczbę w postaci "surowej", a nie znak tekstowy). Robi się to jakoś tak: #include <string.h> (...) char buffer[4]; // bufor na tekst, akurat mój ma długość 4 zn. unsigned long wartosc_typu_long = 1234; unsigned...
Jest tylko jedno ale ten program powyżej 512B programu jest płatny, a ja myślałem o czymś za free, poza tym ten bootloader można upchnąć w 238B (odczyt + zapis Flash), albo w 366B (odczyt i zapis FLASH, EEPROM + zapis LockBit'ów) lub wiele innych kombinacji (wybierane #define ... 0 (wyłączone) lub #define ... 0x.. (włączone). Chcący dopasować się do...
"z tym serwem są problemy" - może uszkodzone, ja mam sześć sztuk TowerPro (może nie ten model) i wszystkie działają, tylko trzeba im sygnał podać. Co do sterowania: http://mil.ufl.edu/~achamber/servoPWMfaq... Jeszcze sugestia żeby serwo i układ zasilać osobno ze wspólną masą. Kod, zaznaczam że pisany dawno i NIE PAMIĘTAM CZY DZIAŁA!! (chyba lepsze...
Czy ktoś posiada może bibliotekę do sterowania wyświetlacza graficznego http://www.elektroda.pl/rtvforum/topic43... świetny wyświetlacz, autor zamieścił swój kod, są tam jak dobrze pamiętam także funkcje do wyświetlania stringów na wyświetlaczu
Puściłem takie coś, tylko Atmega -> PC: [syntax=c]int main (void) { USART_Init(__UBRR); sei(); while(1) { uart_puts("Przykladowy string.\n\r"); _delay_ms(250); } }[/syntax] UART, 250kbps. Nie krzaczy. Wychodzi na to, że błąd w sofcie dot. nRFa? Bo jak to się objawia - jak już się zawiesza to on wysyła "kilka krzaków" i staje dęba, nie wysyła krzaków...
heh... a wystarczyło żebyś napisał: "co sie męczysz chłopi, zamień funkcją time() zmienne typu byte na string z godziną i porównaj" .... tablicę prawdy rozrysowałem juz wcześniej :P
A dlaczego nie skorzystasz z ftoa? Nawet jeśli chcesz ją zmienić to warto zajrzeć do źródeł i je zmodyfikować do swoich potrzeb. A ogólnie to naprawdę potrzebujesz float? Jestem skłonny się założyć, że nie :)
bez gwiazdek char *napis[10] = {"HELLO"}; -> to jakies ufo - wskaznik na tablice ewentualnie tablica wskaznikow [; powinno byc: char napis[]="HELLO"; LCD_WyslijLitery(*napis); -> kolejne ufo (podstawy c), do funkcji powinienes przekazac adres pierwszego elementu, a tak sie sklada, ze nazwa tablicy jest wskaznikiem na pierwszy element, czyli: LCD_WyslijLitery(napis);...
Zmienna Var musi być zdefiniowana jako łańcuch. [syntax=basic4gl]Dim Str_ver As String * 100 Str_ver = Version(3) Print Str_ver [/syntax]
skoro umiesz wysłać tekst do drugiej atmegi to jak możesz nie umieć wysłać sobie jakichś zmiennych - oj chyba przegrzało przy ubieraniu choinki więc podpowiem ;) .... można to zrobić na milion sposóbów oczywiście i wszystko zależy od tego jakie to są zmienne, ale np załóżmy że masz zmienną typu Byte. 1. dokonujesz konwersji tej zmiennej na postać String...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
zumek, dzięki za odpowiedź ale nie rozumiem co masz dokładnie na myśli, .dseg .org 0x0060 txt: .db "string", 0xFF ja myślałem że to jest miejsce w którym zapisuje dane do segmentu .dseg Zajrzałem jeszcze raz do książki poświęconej megom (J.Baranowski AVR ATmega w praktyce) i nie widzę tam żeby jakoś inaczej było to deklarowane teraz to...
Witam piszę program do układu AS3935 na płytce od MikroElektroniki na podstawie tego co znalazłem w sieci. I chciałbym żeby ktoś zweryfikował ustawienia SPI . Jak narazie dostaję same zera przy odczycie. W jaki sposób zweryfikować poprawność transmisji ? Atmega644PA - 18432000Hz Połączenia: Mikroe AVR CS - PB4 SCK - PB7 SDO - PB6 SDI - PB5 main.c CPHA=1...
Operacje na stringach mogą być niebezpieczne, szczególnie, jeśli dostajesz stringi z zewnątrz Poczytałem, faktycznie śliski temat. Rozumiem ryzyko. Ciekawe rozwiązanie problemu jest poniżej: 5. Te wywołania strcat() są beztroskie. Czy chodzi Ci o ryzyko jakie z tego płynie? Zauważ, że np "strcat(txframe,IMEI);" tctframe ma 230 bajtów a IMEI ma 15 jednak...
Na razie zmieniłem nieco sposób zapisu - po testuję przez noc, jak będą problemy to będziemy się zastanawiać. Zrobiłem to tak: [syntax=vbnet] '*********************** Obs-uga karty SD Sub Write_to_sd Sd_year = "20" + Str(rok) ' wartosc zmiennej Sd_year typu string ze zmiennej year If Miesiac < 10 Then Sd_month = "0" + Str(miesiac) Else Sd_month =...
Jedna rzecz jeszcze nt strncpy - to dość "niebezpieczna" funkcja. Jezeli dlugośc stringu który kopiujesz bedzie wiekszy lub równy ilosci znakow do kopiowania to nie będzie zera na koncu !!! Przykład: http://obrazki.elektroda.pl/6631623100_1... Po wykonaniu strncpy (jak widac nie ma wartosci zero na koncu: http://obrazki.elektroda.pl/9385412600_1...
string powinien kończyć się znakiem NULL czyli o wartości zero. Nie używałem uarta, czy gdzieś w Twoim kodzie jest funkcja / lub ją dodałeś że po odebraniu tylko 5 znaków zostanie dopisany znak NULL? jeśli nie ma tam takiego czegoś to nic dziwnego. Funkcja UART_putstr będzie wypisywać wszystko co napotka aż znajdzie znak NULL (zero). najprostsze co...
Myślę, że nie jest poza zakresem, lecz na skutek braku formatowania nakładają ci się na LCD dwa stringi. W efekcie odczytujesz dziwną liczbę. Poza tym, zastanów się czy podstawa jaką wrzuciłeś (itoa(icr,bufor,5);) - czyli system piątkowy jest tym czego rzeczywiście oczekujesz.
string atmega atmega bascom string atmega wysyłanie string
zapalać check mercedes philips ustawić godzina przygasa płomień
lampowy wzmacniacz gitarowy identyfikacja elementu
Smarowanie wariatora w skuterze – jaki smar do Malossi, Polini, Dr. Pulley, objawy złego smarowania FreeRTOS STM32: co wywołuje przerwanie xPortPendSVHandler, kontekst, PendSV, scheduler