Pliki źródłowe możesz śmiało skompilować pod Atmel Studio/AVR Studio. Tylko musisz stworzyć nowy projekt i dodać pliki ze źródełkami do niego. Działa bezproblemowo.
Atmega2560 posiada 256kB pamięci. Załóżmy, że program zajmie 25k, zostaje jeszcze 225kB. Zatem, Twoich "plików" wejdzie 225 / 0,72 = 312 plików po 720 bajtów. Dostęp do danych przez funkcję lookup https://avrhelp.mcselec.com/index.html?l...
Jak najbardziej write_block zapisze poprawnie - kluszem jest parametr size. Jeśli pobierzesz &id_czujnika i sizeof(id_czujnika) to będzie ok.
int to 2 bajty więc 450 x 4 x 2 = 3600 bajtów ,atmega32 ma sram 2kb :!:
Odpowiednie typedefy są w nagłówku stdint.h Co do podziału pomiędzy przerwanie a program główny to pewnie zapomniałeś modyfikatora volatile przy deklaracji zmiennych, które są dzielone pomiędzy przerwaniem a main(). Co do "tablicy czujników": struct czujnik { uint8_t adres; /* do wyboru czujnika na szynie */ uint8_t ileProbek; uint16_t probki[ROZMIAR];...
A pod linkiem jego opis http://infobus.pl/blog.php?id=224 Właśnie na tej stronie napisano: "W systemie R&G sterownik wysyła numer linii oraz nazwę przystanku końcowego w formie tekstu .Polskie znaki są w standardzie MAZOVIA lub LATIN . Tablica odbierając sygnał sama tworzy sobie bitmapę." Tymi na których masz 8051 i EPROM z naklejką ETL120 myślę ze...
to powinno pomóc - zwraca adres początku tablicy https://avrhelp.mcselec.com/index.html?l...
Jeżeli to ma być coś bardziej profesjonalnego, jak tytułowa tablica informacyjna, to może warto by pomyśleć o zastosowaniu układów specjalnie przeznaczonych do tego celu, czyli TLC5940 lub A6276. Sam powoli przymierzam się do zbudowania takie tablicy na TLC5940, bo zabawa z tranzystorami i rejestrami trochę mija się z celem przy budowie jakiegoś poważniejszego...
Witam. Ja robię to tak #define EEPROM __attribute__ ((section (".eeprom"))) unsigned int tab[5] EEPROM ={18,2984,3188,3400,36200}; pozdr.
Tomqu z podanych przeze mnie linków ściągnij przykład 04 i podmień w nim main.c na: [syntax=c]#include"main.h" //**************************************... #define BUF_SIZE 8 // definiujemy bufor o rozmiarze 8 bajtów (musi byc potega dwójki dla tego sposobu!!!) // definiujemy maskę dla naszego bufora #define BUF_MASK...
Toż Ci piszę, że tablice wielowymiarowe to abstrakcja - i tak są mapowane do tablic 1W (wektorów). Wektor o długości 16 elementów, możesz równie dobrze traktować jako tablicę 2W o wymiarach 4 x 4 - wzór na przeliczenie indeksów 2W na 1W podałem w poprzednim poście. Dim Tablica(16) As Byte Dim X As Byte Dim Y As Byte Dim N As Byte Dim I As Integer...
Trochę dziwna ta deklaracja: Ja __attribute__((progmem)) używam raczej po nazwie zmiennej: sizeof tablicy dosyć rozbudowanych struktur (menu) umieszczonej w pamięci FLASH działa prawidłowo. Czyli konkretnie jakie wartości zwracają?
odbieraj znak po znaku z UARTu i umieszczaj go np. w tablicy
Kolejna rzecz - nie używaj prog_char i kolejna - użyj __flash i wywal te pgm_read_xx. Niestety nie wiem jak użyć tego "__flash" , potrzebna mi jakaś konkretna biblioteka poza pgmspace? Posiłkuje się user-manual dostępnym m.in [url=file:///C:/WinAVR-20100110/doc/avr-... Przy funkcji takiej, czyli gdy odczytuje...
A co przeszkadza że ta tablica jest w RAMie? Widac kompilator uznaje że tak jest optymalniej, jak zabraknie pamięci to powinien ją przenieść do flasha.
Myśle ze to nie problem na atmedze8 bo to szybkie bydle. Jezeli na Z80 (1.5 Mips) chodzi tablica 240x64 przy 60 Hz to atmega poradzi sobie bez mrugniecia.
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=.
Acha, może ktoś wytknąć, że sterowanie rejestrami jest z oddzielnych portów, ale wymyśliłem sobie, że szybciej będzie obsłużyć 5 rejestrów, niż szeregowo wysyłać przez jedno wyjście - może się myle. moim zdaniem mylisz się - wg mnie o wiele wiele szybciej byłoby się połączenie kaskadowe tych rejestrów i z jednego portu wsunięcie do nich odpowiedniej...
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.
Tak, rozwiązałem problem za pomocą tablicy.
Petit Fat w żaden sposób nie powiększa rozmiaru pliku, po prostu nie modyfikuje tablicy FAT.
W rzeczywistości jest dużo czytelniejsza niż na filmie (słaba jakość), ale mówiąc o filtrach co masz na myśli? Filtry w postaci kolorowych naklejek? Jeśli chodzi o czas to zajęło mi to bardzo dużo czasu ze względu na to że głównie powstawała w weekendy, ale mając gotowy soft, wzory pcb itd sądzę że wykonanie nie zajęło by więcej czasu niż Tydzień, a...
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...
To znaczy, że nie ustawia mi odpowiednich wyjść (nie zapala diod), co powinno stać się już na początku wykonywania programu, no i oczywiście dalej też nie przechodzi :) Dając mu 20 lub mniej elementów w tych tablicach, program działa bez zarzutu.
Tablica jest multipleksowana, schematu niestety nie udostępnię, bo został skomercjalizowany. Wygląda to (mniej więcej od strony logicznej) tak: http://obrazki.elektroda.pl/6646143200_1...
Jak czytać tablice, to ja wiem, zrobiłem przecież na AVR (Atmega i Xmega) z tablicą fonty 8x8, na ARM też zrobiłem, ale jak juz chce się użyć w programie kilka krojów/rodzajów czcionki i łatwo tym zarządzać - to jest mój problem.
...niestety nie znam asemblera. Nie musisz znać. Jak przeczytasz uważnie i zrozumiesz zasadę, to sam napiszesz procedurę obsługi przerwania w C. Dla częstotliwości PWM rzędu kilkunastu kiloherców i zegara CPU 8MHz przerwanie występuje co ponad 500 taktów, więc nawet procedura napisana w C nie będzie za długa (myślę, że nie powinna przekroczyć 100 taktów)....
Skoro te funkcje nie są używane, to błąd masz gdzieś indziej. Weź pod uwagę to, że rozmiar tej tablicy wpływa na lokalizację innych zmiennych i pewnie to generuje jakiś problem. 4\/3!!
Chyba źle zadałem pytanie, ponieważ rejestr ADC jest chyba 16bit-owy (składa się z dwóch 8bit-owych: ADCH i ADCL), bardziej chodziło mi o to, czy masz poprawnie skonfigurowany przetwornik ADC - jednocześnie poprawną kolejność bitów znaczących w rejestrze ADC. Możesz spróbować z tymi dwiema implementacjami tej funkcji: uint16 to zmienne całkowite od...
Jak masz w tablicy to porównuj w pętli zaczynając od roku. Większe, mniejsze, a jak równe to leć dalej z pętlą.
http://obrazki.elektroda.pl/9824916400_1... Witam, Korzystając z ostatnich wolnych dni przed studiami chciałbym zaprezentować moją ostatnią konstrukcję. Jest to mały przenośny barometr. Konstrukcja powstała na potrzeby osoby wrażliwej na zmiany ciśnienia oraz spełnia jej wymagania tzn. mały rozmiar( 20x40x9mm) oraz co się z tym wiąże...
Dobra, kolejny pomysł :-) W linijce lcd_putc(buffer[i]); tablica powinna być indeksowana zmienną j
Tak to skonsumujesz całą pamięć procesora na program dla większej ilości przycisków. Musisz zrobić ten układ w pętlach. Zadeklaruj sobie tablicę 2 wymiarową i zrób 2 pętle. Pierwsza pętla będzie przemiatać wiersze, druga kolumny. Wystarczy w środku dać jeden warunek i wpisywać wartości do tablicy.
Pomyśl, ile naprawdę masz możliwych wersji tego odcinka na wyświetlaczu o tej rozdzielczości, policz w arkuszu kalkulacyjnym współrzędne lub parametry przyrostowe dla każdej wersji, wrzuć je do tablicy indeksowanej czymś, co odpowiada kątowi i niech Twój AVR rysuje odcinek na podstawie parametrów odczytanych z tablicy.
Chwilowo użyłem Atmegi 16 bo nie mam pod ręką całej płytki z 32u4 Nadal nie zmienia to faktu, że musisz dodać zabezpieczenie przed przepełnieniem bufora odczytu danych ... To na 100% będzie powodowało Ci "zwiechy" uC. "Dobry stary" odkurzacz w okolicy urządzenia i zakłócenia przepełniają tablicę.
[syntax=c]TWI_write(pgm_read_byte( &cyferki[cy4] ));[/syntax] Mam tablicę znaków wyświetlacza "cyferki" a zmienną "cy1" - "cy4" wskazuje odpowiedni znak z tablicy. W buforze z RFM12 mam stringi a potrzebuje int aby wyświetlić znaki z tablicy.
Coś może w takim stylu. Kod wyrwany z większej całości i trochę zagmatwany. Jest to fragment kodu do tablicowania wyjść w zespole wyświetlaczy 7-segmentowych LED. Fragment dotyczy wspólnych anod/katod ale jest również w podobnym stylu do obsługi poszczególnych segmentów podpiętych do różnych/dowolnych portów i pinów. Większość rozwiązań wykorzystuje...
Witam a nie lepiej do tej pracy zastosować kalendarz :) z zegarkiem RTC przecież wiadomo gdzie będzie słońce i kiedy wystarczy wpisać odpowiednie tablice :)
A skąd my mamy wiedzieć, jak ten wyświetlacz jest połączony z mikrokontrolerem? - to po pierwsze. Po drugie - jeśli wyliczyłeś, że jedynce odpowiada wzorzec F9, to dlaczego w tablicy jest F8?
Witam czy o to chodzi z tą zajętością? [syntax=c]if (DMA_CH0BUSY_bm) przelicz tablice 2 ; if (DMA_CH1BUSY_bm) przelicz tablice 1 ;[/syntax] ma to tak wyglądać czy jest gdzieś błąd? Zamiar jest taki jak kanał 0 zajęty to przeliczaj 2 tablice jak zajęty 1 to przeliczaj 1 tablice Pozdrawiam
Wrzucam kod dla Attiny13A: ilość próbek częstotliwość wyjściowa 356 49.3 355 49.4 354 49.65 353 49.8 352 50 Wygenerowane przebiegi na oscyloskopie: https://obrazki.elektroda.pl/4382277800_... na skraju cykli https://obrazki.elektroda.pl/4450814000_... Zbliżenie sygnałów 50Hz (brak kolizji, czyli obu sygnałów w stanie...
Mam jeszcze pytanko czy rejestry też zabierają pamięć z tego 1kB RAMu czy mają przydzieloną osobną? Bo z tego co wiem można też tworzyć zmienne typu 'register' Tym się nie martw - rzeczywiście takie zmiene będą w rejestrach jeśli kompilator uzna to za możliwe. Ale zmienne typu register nie służą, jak już, do oszczędzania pamięci RAM ;)
Proszę o informacje, gdzie w nocie katalogowej można znaleźć informacje na temat priorytetów wykonywania przerwań, jeżeli wystąpią w tym samym czasie. Nie można, ale ten co ma niższy adres w tablicy wektorów wykona się pierwszy jak przyjdą w tym samym czasie. Co najwyżej możesz właczyć przerwania na początku obsługi aby umożliwić obsługę kolejnych...
melthalion - Nie publikowałem tego projektu. Robiłem to na szybko. Nka chcąc utrudnić życie swoim użytkownikom zastosowała pilota z "szyfrowaniem" sygnału. Nie miałem czasu ani chęci rozgryzania tego tematu, więc po prostu wrzuciłem kody wszystkich używanych klawiszy do tablicy mikrokontrolera ATMega i tyle. U autora tłumacz jest wbudowany w dekoder,...
Witam Pisze własną implementację stosu TCP IP na ATmega2560 i dotarłem do pierwszej ściany... Napisałem prostą implementację UDP. Wysyłam pakiet na serwer udp napisany w Javie na PC. WireSkark pokazuje, że pakiet dociera do komputera. Numery portów i adresy się zgadzają, WireShark nie pokazuje żadnego błędu w ramce, więc kod jest chyba poprawny a mimo...
ten dekoder wysyła cyfry po kolei ? tak ? zakładam iż tak właśnie jest więc odczyt trzeba nadać w pętli lub określoną ilość razy zmienna "i" będzie numerem cyfry PINB - standardowy alias do stanu portu w rodzinie ATMEGA ton - tablica ja bym to widział w ten sposób //deklaracja zmiennych ... //Odczyt for(i:=0;i==10;i++) ton[i]=(PINB&0x0F); //Sprawdzenie...
Procedura getkbd zwraca 0 gdy nie naciśniesz zadnego klawisza (albo jakas inna wartosc). Musisz zrobić tak, aby po naciśnieciu dowolnego klawisza program czekal na wartosc 0 a dopiero pozniej jezeli odbierze jakas wartosc to niech zapisuje to do tablicy. Np: dim x as byte dim i as bit do x=getkbd if x= 0 then i=0 end if if x<>0 and i =0 then tablica=x...
Używaj AND żeby wygaszać i OR żeby załączać wybrane bity na porcie bez naruszania innych. Czyli mając np 2 porty, na obu robisz AND "stała maska" żeby wygasić rząd ledów, i potem na obu OR "maska z tablicy" żeby zapalić te wybrane. Odpadają ci wtedy wszystkie IFy. Bity w tablicy muszą już być posortowane ręcznie.
Jeszcze jeden błąd - voltage_result ma miejsce tylko na 4 znaki, ale jeden z nich to musi być NUL, więc tablica powinna być co najmniej 5 elementowa.
Zadeklaruj [syntax=c]char t_dzien[][4]= {"pon","wto","sro","czw","pia","sob","ni... Powodzenia
Chciałbym zwrócić uwagę na tablicę 82 na stronie 213 PDF ATmegi.
Witam, mam dosc dziwny problem z indeksowaniem tablicy pod atmega128 . przykladowy kod: uint8_t tablica[3]; tablica[0] = 0B11100000; tablica[1] = 0B00001000; tablica[2] = 0B01100000; int i = 0; while(1) { for(i = 0; i < 3; i++) { PORTE = tablica[i]; _delay_ms(100); } }...
Zdecydowanie tablica może być mniejsza. Nakładając dodatkowe założenia zdroworosądkowe, np. a) prawdopodobniestwa wartości nie zależą od konkretnego wsadu, lecz od 'średniego wsadu'. Wprawdzie zysk mniejszy ale prostsze. Konkretne prawdopodobniestwa w dekompresorze chyba nie są już potrzebne. b) jakieś sortowanie c)drzewo jako tablica, w jakiś częsciach...
Analizator widma na tym wyświetlaczu to by było coś, chociaż i tak z samych zdjęć już wygląda imponująco. Sam kiedyś zbudowałem "podobny" wyświetlacz (tzn. trzy matryce czyli 8 * 15 punktów i do tego tylko na kościach TTL + RAM 6116) ale niestety nie zadziałało :) Zastanawia mnie twój kwarc, pracowałem przy prędkości transmisji 115kbit/s z mniejszym...
Witam. Chciałbym podjąć temat mający za zadanie poprawne uruchomienie wyświetlacza graficznego, gdyż mam z nim nie mały kłopot. > ATmega8 > LCD 132x65 LT13264 - kontroler SPLC501C http://www.densitron.com/uploadedFiles/D... Proszę jeżeli ktoś posiada program, który działa o podesłanie lub wytknięcie błędów w poniższym...
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ć...
Wykorzystanie timera do odliczanie czasu impulsów. Tablica z z wszystkimi krokami silnika, zmieniany indeks tablicy po przepełnieniu licznika.
Ponieważ nie włączyłeś wewnętrznego rezystora pull-up to rozumiem, że dodałeś zewnętrzny? Gdy przycisk zwiera do masy to znaczy, że gdy jest wciśnięty na pinie jest 0 logiczne, w związku z czym stan ten wykrywa się tak: [syntax=c]!(PINC & 0x80)[/syntax] Poza tym jeśli PC6 to: [syntax=c]!(PINC & 0x40)[/syntax] ale najlepiej używaj przesunięć...
Jak zrobić taką tablice i jak z niej wyznaczać omawianego y?
eee... bufor robi sie tablica, wiec nie do konca kumam co ty chcesz zrobic. 4\/3!!
bo ta tablica jet 16 bitowa i calosc zajmuje 64kb pamieci flash procesora
Tablica zadeklarowana bez słowa const zawiera zmienne. Tobie prawdopodobnie chodzi o to, że chcesz mieć w tablicy adresy zmiennych, czyli wskaźniki na zmienne. Proste - przeczytaj odpowiedni fragment odpowiedniej książki o programowaniu w C, zrozum wskaźniki, a potem pisz. Z drugiej strony - na atmega niekoniecznie to będzie sensowne. Równie dobrze...
http://obrazki.elektroda.pl/4553573800_1... Przy tworzeniu projektów z mikrokontrolerami, oprócz uniwersalnych płytek stykowych, często przydają się gotowe moduły testowe, które można szybko podłączyć. Można kupić takie w wielu sklepach, ale ich ceny są na ogół absurdalne, np. w Kamami sprzedają płytkę z ATmega128 za 109 zł! Poniżej...
Witam Doszedłem już do tego... faktycznie jest to bezwładność oka, musiałem tylko zmienić procesor na 16bitowy bo atmega się nie wyrabiała Pozdrawiam
Chodziło mi właśnie o coś takiego, co można by nazwać wirtualnym portem z metodami obsługi (widziany jako uporządkowany, 8 bitowy a "na zewnątrz" przypisany dowolnym pinom), tak by nie trzeba było zaglądać do dokumentacji. 1. Chodzi Ci o remapowanie peryfreriów - ale to tylko u Microchipa, 2. 256 bajtów ROM na tablicę mapującą 3. Zarzynanie siebie...
int Nie no, kolega pomylił wielowymiarowe tablice z niezwymiarowanymi tablicami, które istotnie są wskaźnikami (ale tylko na jednym poziomie, tzn. int x Najprościej zamiast tego użyć tablicy jednowymiarowej i "na piechotę" obliczać adres elementu, np. zamiast int tablica2d Takie obliczenia właśnie wykonuje kompilator dla tablic wielowymiarowych.
W analizatorze (nawet tak prostym) to trzeba jednak obejrzeć każdą ramkę (przynajmniej jej początek) i tu raczej RS232 się nie wyrobi (nawet na 115Kb). To co widziałeś to najprawdopodobniej bardziej rozbudowany układ który po RS232 wysyła jedynie transmisje z wybranego portu (TCP/UDP)/IP. Ty musisz widzieć ramki ethernetu. Potem tylko analizować odpowiednie...
Czas odczytu 7 sztuk DS18B20 z pobraniem numeru czujnika z tablicy ze sprawdzeniem CRC wyniku ATmega kwarc 18,432 MHz 12,5 milisekundy. Dodano po 16 Koryguję czas podany poprzednio. Nie zauważyłem przeniesienia. Ten czas wynosi 26,8 milisekundy.
Zlece napisanie programu ( lub pomoc przy napisaniu programu) do µP ATmega 32 - Uklad w ktorym pracuje mikroprocessor to Tablica swietlna na martycach diodowych LED.Urzadzenie musi komunikowac sie z komputerem PC poprzez modul USB Urzadzenie mam gotowe,program dla PC napisany jest w jezyku C# ( jest rowniez gotowy) pozostaje napisanie programu...
Nie rozumiem:(. Czyli co muszę wstawić konkretnie w tablicy żeby grało i losowało liczby?
Najpierw wylosuj jedną z tych sześciu zmiennych i przypisz jej 1. Następnie w losowaniu bierze udział pięć pozostałych, wylosuj z nich jedną i przypisz jej 2, i tak dalej. Ostatniej liczby nie ma co losować, bo zostanie tylko jedna, jej przypisz 6. Można też inaczej. W tablicy 6-cio elementowej wpisz wartości od 1 do 6. Wylosuj indeks tablicy, przepisz...
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...
Zabrakło ci RAM - same dwie tablice v i u deklarujesz jako 256-bajtowe - łącznie mają 512 bajtów, tyle ile całej pamięci ma użyta ATMega. A gdzie miejsce na pozostałe zmienne lokalne (a masz nawet 100-bajtowe tablice) i stos? Dochodzi do nadpisania stosu i to co się dzieje to chaos.
Tzn ile pamięci? Tak na oko to to 256 bajtów. Myślałem, że ATmega mają więcej... ;)
Jeżeli ten czas ma się zmieniać liniowo, codziennie o tą samą wartość, to przecież możesz wyprowadzić sobie wzór na obliczanie tego czasu. Po co mielić tyle razy to samo. Możesz też użyć tablicy, albo zrobić to w pętli.
Wystarczy po stronie nadajnika rozbić 16bit na dwie liczby 8bit: [syntax=c]tablica[0]=zmienna16bit & 0xFF; tablica[1]=zmienna16bit >> 8;[/syntax] A w odbiorniku złożyć ponownie do 16bit: [syntax=c]zmienna16bit= tablica[0]+tablica[1]<<8;[/syntax]
Ja zaprojektuję schemat i płytki PCB. Mogę też napisać oprogramowanie na moduły, więc już będzie można coś na nich zobaczyć. Potrzebny jest ktoś od CC1000, ja nie robiłem tego jeszcze a tu chodzi też o czas. Czyli potrzebny jest programista PC do napisania programu obsługującego tablicę i programista do sterownika na ATMega + CC1000 do komunikacji radiowej.
_pieczas zauważ iż modyfikujesz tylko 1 element tablicy, liczenie za każdym razem sumy z całej tablicy nie jest potrzebne. Pseudokod: [syntax=text]previous = tab[idx]; suma -= previous * previous; current = 256*b+c; tab[idx] = current; suma += current * current; idx++;[/syntax] Przy czym suma musi być zmienną statyczną i dobrze gdyby to nie był float...
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...
Mnóstwo? Przy 32bitach to będzie w okolicach 1GB. Jak to obliczyłeś? tablica 500 elementów 32bitowych to tylko 2000B
No Timer jest "buforowany" ale nie o to mi chodziło. Chodziło mi o buforowanie większej ilości danych. Ale to masz skoro masz dwie tablice. Czy mi się zdaje czy w przerwaniu odczytujesz sektory?
W obu przypadkach to tablica ale czy przypadkiem kompilator nie dokłada sobie automatycznie znaku '\' w pierwszy sposób? W obu przypadkach kompilator automagicznie dopisuje '\0' na końcu. co się stanie jeśli np moja funkcja: void odczyt_IMEI(char * IMEI) otrzyma jako argument wskaźnik na element char* o mniejszej wielkości niż odczytany/ skopiowany...
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....
Jeśli chcesz uśredniać wiele pomiarów to po co ci tablica z tymi pomiarami? No chyba, że indywidualne pomiary, oprócz wartości średniej też są ci potrzebne...
To świetnie, że się udało. Przy okazji - skoro w tej tablicy dane masz posortowane, to po zmianie jakiejś wartości nie trzeba wykonywać całej, kosztownej funkcji sortującej - wystarczy proste przelecenie tablicy i porównanie wartości. Algorytmem opartym o bisekcję będziesz miał złożoność obliczeniową na poziomie log n, gdzie n jest wymiarem tablicy.
Początek odczytu ma zaczynać się wraz z podaniem zasilania na urządzenia, czyli na urządzenie które wysyła ta liczbę ( w postaci binarnej) i Atmega. Kiedy dokładnie ma zakończyć się odczyt i rozpocząć wysyłanie na PORTB.1 jeszcze nie wiem, ale wydaje mi się że jak podłącze analizator stanów to sprawa się wyjaśni... Proszę o podpowiedź i wyjaśnienie...
Po prostu raz odczytujesz id termometrów i potem na stałe zapisujesz je w odpowiednich tablicach, zamiast stosować instrukcji wyszukujących układy na magistrali. --- Choć z tego co wiem o magistrali 1wire czujniki powinny być zawsze wyszukiwane w tej samej kolejności, stąd może masz jakieś błędy w komunikacji (np. poprzez za długi kabel złej jakości...
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...
A nie lepiej generator RC? Dla mikrokontrolera generowanie sygnałów sinusoidalnych jest bardzo obciążające. Znajomy miał taki problem że mu ATmega nie nadążała więc zrobił coś takiego że wpisał wartości do tablicy a potem zamiast wyliczać to z niej ustawiał kolejne wartości.
LcdTxt(pgm_read_byte(&tablica1),19,1,0) LcdTxt przyjmuje adres do ciągu znaków, a Ty jeden bajt próbujesz podać. Po prostu musisz stworzyć odmianę funkcji LcdTxt która jako argument przyjmie adres do Flasha. Takie uroki AVRów. Pozatym zapis &tablica1 nie ma sensu, albo tablica1 albo &tablica1[0].
Nie traktuję mikrokontrolera jak PC. Obawiam się tylko o kompilator z Bascoma. Bo niby dlaczego pomaga ręczne zadeklarowanie miejsca w pamięci dla tablicy? Moim zdaniem kompilator w tym wypadku popełnia jakiś błąd.
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...
wynik = (srednia*512)/1024; To z grubsza to samo to samo, co wynik = srednia / 2; Tyko w pierwszej postaci łatwiej o błąd w obliczeniach. Funkcja pomiar() raczej nie działa, bo przełącza multiplekser i natychmiast odczytuje wynik pomiaru - jakiego pomiaru? Nie ma sensu ładować wyników do tablicy, jeśli potrzebujesz tylko ich sumy.
Z tym wyświetlaniem 60 razy na sekundę to chyba przesadzone.. Wątpię, czy z M32 i np na tym LCD od S65 zdołasz wyświetlić 60 razy na sekundę pixele o współrzędnych na stałe zapisanych w tablicy przez całą szerokość ekranu i połączyć je liniami przy okazji kasując to co poprzednio było wyświetlone.
Tablica komunikuję się kablem crosowanym. Zamieniony RX-TX .Ale to mały sukces. Próba wgrania innego napisu skutkuje blokadą.
Ja bym pominał pierwsze 2-3 pomiary z kanału. Pewnie producent radzi odrzucić pierwszy a ty xdziesiąt xdziesiat? Zmyśliles cos? To napisz nam wg Ciebie jaki bedzie 2 odczyt jezeli impedancja zrodła bedzie np 100k Już Ci pisałem że Ty, Twój, Ci, Tobie ludzie o odrobinie kultury piszą z dużej litery. Dodano po 1 Obiecany kod [syntax=c]#define ADC_CHANNELS...
Standard 5V, czytnik wysyła kod ciągle po zbliżeniu transpondera i przestaje wysyłać po oddaleniu go, "wpisać na sztywno" miałem na myśli spisać w program jeden transponder (zmienna, może jakaś tablica) i porównywać to z odczytem, o do zamieszczenia kodu lub schematu to wolał bym napisać na nowo cały program, atmega działa na 100%, Kwarc mi nie robi...
Kombinowałem na różne sposoby i nadal nie rozumiem na jakiej zasadzie odbywa się sterowanie tymi układami z poziomu programu. Samą tabelę z datasheet zrozumiałem ale nie widzę co trzeba zmieniać w programie, by móc dostosowywać go do swoich potrzeb. Mógłbym Cię prosić abyś dorzucił kilka komentarzy? Zdecydowanie pomogłoby mi to w zrozumieniu. Musisz...
Witam, czytając książkę A. Pawluczuka natknąłem się na inicjację wektorów przerwań. Jak wiadomo w książce jest wykorzystywany µC ATmega8515 (niestety ja korzystam z ATmegi32). Przykładowa tablica tutaj: .orgINT0addr ;External Interrupt0 Vector Address reti ; ;---------------------------------------... .orgINT1addr...
...do tej tablicy odwołuję się poprzez ldi r31,high(0x200) ldi r30,low(0x200) lpm wpisanie w nawiasach sinus nic nie daje, wpisanie 0x100 także nic. Ldi wtedy nie bierze elementów tablicy. Dziwne... Pzdr.
chara tablica atmega atmega tablica kodzie programu tablica tablica stringi
gaznik zalewa silnik satel czujka pożarowa instrukcja chińskiego radia
zarejestrować słuchawkę panasonic zarejestrować słuchawkę panasonic
Ciemny panel sterowania w lodówce LG - przyczyny i rozwiązania Jak ustawić datę i godzinę na różnych urządzeniach