Problemem jest char *cmd[]; - to oznacza tablicę wskaźników na char, a nie wskaźnik na char. A skoro tablica o nieznanej liczbie elementów to wszystko co masz po przecinku to kolejne elementy tej tablicy. Czyli usuwasz [] lub nazywasz pola, np. .ptrF=.
Napisze tutaj, bo nie wiem co częściej sprawdzasz. Tak patrze i przychodzi mi jedna myśl. Może po drodze coś się rzutuje i sama zmienna pamiec z racji, że jest char ogranicza możliwość większych wartości? To by tłumaczyło dlaczego tekst przechodzi, a inne wartości jak np. 0xFF nie dają rezultatu. Jeśli to jest problem to rozwiąże go zadeklarowanie tablicy...
Pracowałem wówczas na ATmega162. Okazało się, że pewna seria '162 miała ten sam problem. Układ resetował się przy komunikacji UART. Temat zamykam.
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);...
A może "buffor_danych" do którego wrzucasz kolejne bajty to też tylko wskaźnik zamiast tablicy (niezainicjowany lub ustawiony na 0)? To tłumaczyłoby dlaczego przypisanie ramka_danych do stałej tablicy znaków daje dobry wynik a ustawianie zawartosci kolejnymi bajtami się nie udaje. (podobnie do poprzedniego błędu) Przy okazji, sizeof(ramka_danych) to...
Siemano. Jeżeli chcesz umieścić np. tablicę jednowymiarową w sekcji EEPROM to możesz wykonać to w taki sposób const unsigned char Tablica[] EEMEM = { 0x3e,0x51,0x49,0x45,0x3e, 0x00,0x42,0x7f,0x40,0x00, 0x42,0x61,0x51,0x49,0x46, 0x21,0x41,0x45,0x4b,0x31 }; Niestety przy takiej deklaracji pierwszy element tablicy nie będzie znajdować...
Przeciez 180 czy 200 nie wykracza poza unisgned chara :O Generalnie przy buforze 64 program działał co najmniej wiele setek godzin na kilku urządzeniach i wszystko śmigało bez problemu najmniejszego. Spróbuj użyć tablicy w rozmiarze 126 ( granica signed - unsigned ) , jeśli będzie OK. to znaczy że kompilator coś kręci . Czasami zdarzają się błędy w...
#define kod {0,0,9,9,9,14,8,16} #define ilosc_zn 1 void znak(void)//definicja znaku { unsigned char zn[ilosc_zn*8] = kod; unsigned char x = 0; for(;x<ilosc_zn*8;x++) { write_command(0x40+x); write_char(zn[x]); } } #define kod {0,0,9,9,9,14,8,16} - to 8 liczb każda odpowiada...
Witam, Mam następujący problem. Zakupiłem robota z zamontowaną płytką: http://www.mobot.pl/download/MOBOT-MBv2-... GPS to FGPMMOPA4, konfiguracja: 9600 bps/8/N/1 Po drobnych modyfikacjach zamontowany jest tam kwarc 7,3728 Mhz. Procesor to Atmega128L (początkowo był Atmega128A z kwarcem 16Mhz). Podłączyłem do RX0 wyjście TX GPS FGPMMOPA4....
WItam. Możlwości uśredniania czy po prostu cyfrowej filtracji sygnału może być kilka. Najprostrza to taka jak napisałeś - zbierasz kilka próbek pomiaru a następnie je uśredniasz. Może to wyglądać np tak: unsigned int pomiar; unsigned int usredniony_pomiar; unsigned char pomiar_licznik; static unsigned int temp; pomiar = ADC; // pobranie wartosci pomiaru...
nie wiem, jak to w gcc wygląda, ale nie zadziała czasem 'static' w deklaracji, ewentualnie 'const', ale nie za bardzo wiem, jak działa const w C++ (programuję w C), wiem tylko, że inaczej... :D static char tablica[8] = {1,2,3,4,5,6,7,8};
Zgodnie z deklaracją funkcja send_spi_buf przyjmuje dwa argumenty a ty podałeś jej tylko wynik. W to miejsce powinieneś użyć funkcji void Wyslij_string (char *dana) . Program i tak bedzie źle działał ponieważ zadeklarowałeś za małą tablicę na znaki [syntax=c]char wynik[]=" ";[/syntax] Popraw to na [syntax=c]char wynik[8];[/syntax]
Kiedyś umieściłem na obecnie niedostępnej stronie and.elektroda.eu materiał o dekodowaniu sygnału DCF. Urządzenie potrzebne było w urządzeniu, które wymagało synchronizacji czasu w pomieszczeniu gdzie wyprowadzenie anteny zewnętrznej do GPS było utrudnione. Poniżej umieszczam treść oryginalnego materiału, który może być pomocny przy budowaniu urządzeń...
Typy zmiennych: unsigned int prog; unsigned char wynik[15]; unsigned char tablica[100]; unsigned int tetno; Miejsca generujące warninga: prog+=tablica[i]; wynik[i]=wynik[i+1]; tetno+=wynik[i]; wynik[i]=0;
A nie powinno być przypadkiem tak : [syntax=c]unsigned char fonts [] = {0x01, 0x01, 0x01, 0x01, 0x01};[/syntax] No bo skoro funkcja przyjmuje wskaźnik do char to tablica musi być typu char a nie tablica wskaźników do char. No i oczywiście ostatni element tablicy musi mieć wartość zero. A więc tak : [syntax=c]unsigned char fonts [] = {0x01, 0x01, 0x01,...
Witajcie, mam problem z pamiecia programu w uC atmega128, tak sadze. Moj program rozrół sie do dosc duzych rozmiarow bo zajmuje około 70kB pamięci kontrolera. Z kolei licznik programu(PC) ma rozmiar 16, więc wydawało by sie, że maksymalnie może dostawać sie do komórki pamięci o numerze 656535 B pamięci programu, i przy większej ilości zajmowanej przez...
Może tak ? : LCD_DisplayPicture(*Obraz, 0, 0, 25, 7) Tak na pewno nie jest dobrze. *Obraz to liczba (z początku tablicy, czyli 0), a potrzebujemy wskaźnika. Nie wiem, czy dobrze mi się wydaje, ale dogm_core_data(pgm_read_byte(dpt... Nie inkrementuje zmiennej dptr sam z siebie. Spróbuj to zmienić na: dogm_core_data(pgm_read_byte(dpt...
Witam, mam problem przeszukałem wiele forów i próbowałem kilku sposobów. Może ktoś mi doradzi, więc mam problem z zapisaniem ciągu znaków w Atmedze (tzn. odbieranie). Wiem że należy zastosować najlepiej tablice do tego celu. [syntax=c]char odebrana_tab[]; if(odebrana_dana ==! 0) // jezeli dana nie jest zerem char i = 0; odebrana_dana = odebrana_tab[i++]...
Tablica w pamięci kodu (z tym, że przykład jest dla char): http://mirekk36.blogspot.com/2013/11/tab... Mając taką tablicę wyszukujesz pomiędzy którymi punktami tablicy leży wartość i liczysz https://pl.m.wikipedia.org/wiki/Interpol...
A tak? Przecież napisał, że jak poda rozmiar to działa. Poza tym w Twoim programie też się "tekst" nie mieści w tablicy i brakuje mu dzięki temu terminatora. Dodatkowo nie widzę sensu w posługiwaniu się kopią wskaźnika na tablicę, co to zmienia?
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...
Funkcja, nie widzi tablicy deklarowanej w innym pliku. Co może być przyczyna ? Na co zwrócić uwagę. Poniżej wycinki z kodu. [syntax=c] /* ATmega 8 */ glowny.c //==================================== . #define REJESTR 50 int rejestr[REJESTR]; void main(void) . while(1) . wykonaj(&ramka,(ile_bajtow-1)); . .=======================================...
Zrób sobie tak : [syntax=c]char cmd[15]; byte indeks; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { char c = (char)Serial.read(); if(c == '\n') { cmd[indeks] = 0; indeks = 0; analiza(); } else { cmd[indeks] = c; if(indeks < 15) indeks++; } } } void analiza() { if(cmd[0] == 'c') { Serial.println("ok"); } } [/syntax]...
Dzięki :) Teraz mam kolejny problem char* pch; pch = strtok(data,"!(at)#$%")... while (pch != NULL) { myGLCD.print(pch, LEFT, 130); pch = strtok(NULL, "!(at)#$%"); } W przykładzie tej funkcji jest deklaracja char* pch Ogólnie program się kompiluje, niestety używanie w arduino deklaracji z...
Po pierwsze Twoja funkcja: void odbierzstring(void) nie zwraca parametrów (wskazuje na to słowo void przed funkcją) a Ty mimo wszystko dałeś na koniec return... Twoja funkcja musi zawierać pętle, która odbiera znak za znakiem do momentu pojawienia się znaku końca '\n' tak jak napisał Ci kolega Freddie Chopin . Czyli cos takiego: unsigned char bufor[32];...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
Chciałbym skomunikować 2 atmegi przez modbusa i używam do tego modułu USART. Walczę z tym już kilka dni i nie mogę dojść do ładu. Nadawanie skonfigurowane, odbiór również, bo klocki się komunikują, ale nie chcą wysłać (lub odebrać) wszystkiego co jest do przesłania. Próbuję nadać np 8-elementową tablicę liczb (unsigned char) i dochodzi tylko ich część...
Witam, pytanie dotyczy WinAVR (ATmega). Podprowadzenie Kompilator zawsze umieszcza kolejne elementy tablicy ( umieszczenej w RAMie) w kolejnych adresach. Zwiększając wskaźnik tablicy o 1 (dla typu char) mogę indeksować kolejne pola. Pytanie właściwe A jak jest ze strukturami. Np. taka struktura: typedef struct { unsigned char TablicaPol1[8];...
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,...
Chyba trochę mały ten bufor na napis, w dodatku na stosie (pozostałe bufory tak samo). Zajeżdżasz sobie stos, więc nie dziw się, że się "cuda" dzieją.
[syntax=c]char test[5];[/syntax] Bufor do którego odbiornik wpisuje odebranego stringa (przesyłana jest temeperatura bez przecinka) np 234 to tablica znaków mojego wyświetlacza [syntax=c]prog_char cyferki[15] PROGMEM = { 0x3F,//0 0x09,//1 0x6E,//2 0x6D,//3 0x59,//4 0x75,//5 0x77,//6 0x29,//7 0x7F,//8 0x7D,//9 0x00 //nic };[/syntax] Jak bezpośrednio...
Obsługuję led display, mam funkcje która odświeża 6 cyfr wyświetlacza na podstawie kodów w tablicy digits unsigned char txt_read[] = {0x00, 0x28, 0x7C, 0xFA, 0xAE, 0x00}; i funckcję która ustawia napis void set_lcd_text(unsigned char* text, unsigned char blink){ int i; for(i=0;i<6;i++) digits[i] = text[i];...
Nie podoba mi sie ta biblioteka, stan wszystkich pinow siedzi w jednej zmiennej, nie jest obliczana tylko modyfikowana bit po bicie. char napis[20] = "asdasd"; zmniejsz rozmiar tablicy do 8 np, chociaż to nie powinno miec znaczenia... kondensatory przy 74 i LCD 100nF masz? W czym kompilujesz? Może w kompilatorze masz FCPU inne ustawione, sprawdź. Krzaki...
[syntax=cpp] #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include <stdlib.h> #include <util/delay.h> #include "hd44870.h" #include "ds18b20.h" //#include "MyDelay.h" int main(void) { volatile char *tablica="MMM"; LCD_Clear(); LCD_Home(); LCD_Initalize(); LCD_WriteText("Rozpoczynam temp"); _delay_ms(1000);...
tak czy siak musisz zadeklarowac miejsce dla tego bufora - statycznie tablica, lub dynamicznie - malloc(). zalozmy ze statycznie: na poczatku deklaracja: char bufor[5]; char *buf_in,*buf_out; potem setup: buf_in=bufor; buf_out=bufor; teraz sprawe mozna rozwiazac dwojako, zwykle tworzy sie dedykowane funkcje zapisu i odczytu do bufora: void FIFO_write(char...
Wrzucam całość [syntax=c] //=============PROCESOR ATMEGA 8 AU=============================// #include <avr/io.h> #include <avr/eeprom.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #include "mkuart.h" // biblioteka z GB //led testowy-ustawienia// #define LED_OFF PORTD...
to nie blad tylko warning anyway - to co napisales jest bezsensowne i nigdy nie bedzie dzialac, bo pierwsze 'niespelnienie' warunku z nawiasu wyjdzie z calej tej 'pseudo' petli. jesli chcesz odebrac 8 znakow, to logiczne dla mnie jest, ze liczysz do 7 (uwielbiam te zabawy z liczeniem : for(i=0;i<8;i++) { ... } wewnatrz petli czekasz na znak i wstawiasz...
Witam W tablicy RESZTA mam reszte liczby wyciagnieta ze stringu. Np "1234". Ta wartosc chce przeliczyc na inny format. W tym celu musze to podzielic przez 10000 i pomnozyc przez 60. Nastepnie otrzymana wartosc calkowita wyswietlam na LCD. Realizuje to tak: //funkcja przeliczajaca float dm_to_dms(char var[]) { float sec; sec= 60*(atof(var)/10000); return...
Witam, Przejrzałem elektrodę i natrafiłem na temat o złożeniu w C przesyłanego bajt po bajcie floata. No i zastosowałem wskazany fragment kodu: [syntax=c]unsigned char *btr; float DNL; btr = (unsigned char*)&DNL; *btr =USART0_Receive(); btr++; *btr =USART0_Receive(); btr++; *btr =USART0_Receive(); btr++; *btr =USART0_Receive(); btr++;[/syntax] Kod ten,...
Witam. Próbuję opanować USART w ATMega 8. Wewnętrzny oscylator 1MHz. Z komunikacją nie mam większych problemów. Jednak zastanawia mnie ustawianie prędkości transmisji. W moim programie ustawiłem prędkość transmisji na 9600bps. Rozumiem że 9600 bps oznacza wysłanie 9600 bitów w ciągu sekundy (jeżeli źle rozumuję to proszę o poprawienie mnie), a więc...
No z tego co się doczytałem, o ile dobrze zrozumiałem, to sekwencyjny wraca do początku dopiero na końcu pamięci. When the memory address limit is reached, the data work adress will "roll over" I tu się pojawia moje pytanie, bo za bardzo tego nei wiem. Jak jako argument funkcji podać całą tablicę. Z tego ci wiem nie ma zmiennych typu string i muszę...
Chyba udało mi się rozwiązać problem (chyba :P). Informacje wysyłane zaczynają się u mnie od znaku $ i nigdy nie są dłuższe niż 13 znaków. W przerwaniu miałem obsługę czytywania każdego znaku z osobna i zapisywania kolejno do tablicy char[13]. Gdy tablica się zapełniła ustawiane były informujące obsługę żeby wykonała polecenie. Właśnie w tym miejscu...
Witam serdecznie, pisze program na aTmega 128, mam już napisaną zdecydowanie wieksza czesc kodu ale gubie sie przy operacjach na tablicach. Otoz, dostaje pomiary z 5 czujnikow. Kazda paczka danych od jednego czujnika sklada sie z 2 bajtow- starszego oraz mlodszego. Po wyborze odpowiedneigo czujnika, z ktorego chce czytac dane nastepuje ich zczytanie...
Ja w swoim urządzeniu zastosowałem taki algorytm: unsigned char ilpom; // licznik ilości pomiarów. dla każdego kanału wykonuję w pętli ilpom pomiarów. Najpierw zeruję tablicę - np. kanal Dodano po 7 unsigned int pomcal(char kanal, char licznik) // funkcja pomiaru ADC { uint16_t pomiar(uint8_t); // deklaracja typu funkcji dla pomiar...
Mam problem,bo nie potrafię odebrać poprawnie więcej niż 1 bajt danych po UART na ATMEGA 128L .Dokładnie potrzebuję np 100bajtów odebrać od razu i wiem ,że potrzebuję tablicy (której nie mam w poniższym kodzie). Odbiór danych mam na przerwaniu, pomału po 1 bajcie wysyłane dane z komputera dochodzą ,ale przy większej ilości już źle odbiera. Z procesora...
mam problem z odczytem danych z telefonu. wysylanie komend at do telefonu (siemens s45) odbywa sie bez problemu - aparat reaguje prawidlowo. linia Tx kontrolera polaczona z telefonem poprzez opornik i zenera 3,3V. Linia odbiorcza polaczona bezposrednio. komunikacja z telefonem za pomoca terminala rowniez dziala prawidlowo. biblioteka uart: #include...
Czy w takim razie to wystarczy? [syntax=c] char uart_getc(void) { // sprawdzamy czy indeksy są równe if ( UART_RxHead == UART_RxTail ) break; // 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; // zwracamy bajt pobrany z bufora jako rezultat funkcji return UART_RxBuf[UART_RxTail];...
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...
Wiem że temat ten byl wałkowany wielokrotnie ale nie znalazłem rozwiązania. Chodzi mi o to czy ktoś może przetestować kod na jakimś sprawdzonym układzie pod kątem odbierania bajtu. Atmegę łączę bezpośrednio z ukłądem FPGA ale przeważnie odbieram liczbę 130. Jedyne na czym mogę podejrzeć odebrany bajt to wyświetlenie na kolorowym wyświetlaczu pixeli...
Witam Piszę w Codevision w C. Zbieram 128 próbek z przetwornika ADC. Próbki zbieram w pętli: while(x<128){ dane[x]=read_adc(5); x++; } dane[128] to zadeklarowana tablica 128 elementów typu char. Podczas pomiaru procek nic innego nie robi. Chcę go max wykorzystać na szybkość pomiaru tj. liczbę próbek w czasie. Teraz uzyskuję 20k próbek na sekundę....
tablica chara chara tablica tablica chara flash
schemat nawiewu peugeot xsara centralka zamka skrzynka pionu
laney tf200 mikrokomputer cobra1
AC STAG E8 67R-014289 110R-004534 ECU: Software Choice for STAG-300, QMAX, QBOX, QNEXT