Już za kilka dni muszę oddać moją pracę dyplomową. Moim problemem jest zbyt duży rozmiar kodu i jeśli nie zoptymalizuje programu to nie umieszczę w nim wszystkich założonych funkcji. Czy ktoś ma pomysł jak zaoszczędzić trochę pamięci patrząc na mój kod? (na program skłąda się jeszcze biblioteka do obsługi wyświetlacza z Nokii) #define _MAIN_MOD_ 1 #define...
Zamiast wstawiać argument do delaya umieść delaya w pętli for ze stałym argumentem. Zmienna zawsze znajdują się w SRAM. Ale stałe można umieścić w pamięci programu.
Pokaż ten program.
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...
Przykład dla dwóch kanałów Przed wpisaniem tego kodu musisz odpowiednio ustawić Bity w rejestrach ADMUX i ADCSRA Jeśli chcesz mieć próbkowanie co określony czas to musisz odpowiednio ustawić rejestry zegara. Pisałem trochę z pamięci mogłem gdzieś zgubić klamrę przecinek lub średnik [syntax=c] //SET_BIT(ADCSRA, ADSC); - moje makro ustawiające bit w rejestrze,...
janbernat, dziękuję za pomoc :) Wszystko co opisałeś poprawiłem - powinno hulać, ale niestety jest tak jak na początku, program nadal nie działa. zastanawiam się ciągle nad tym o czym pisałem wcześniej: program nie działa gdy w funkcję wstawię dwa wiersze: L=1000; L=1; natomiast gdy to usunę to wszystko chodzi tak jek powinno. (zauważyłem, że gdy pamięc...
I zależy też od tego na jaką optymalizację kodu sobie możesz pozwolić. Optymalizując można zmiejszyć rozmiar "wsadu" 30-60% (zależnie od programu i typu optymalizacji), a to sporo. Trzeba jednak pamiętać, że optymalizują się również pętle, więc o dokładnych delayach zrobionych na pętlach można zapomnieć.
To czy i w jakim stopniu RAM mikrokontrolera pośredniczy w wymianie danych z LCD zależy od programu/bibliotek do LCD. Można operować bezpośrednio na pamieci wyświetlacza, jak również na buforze w pamięci RAM mikrokontrolera i ten bufor cyklicznie albo po modyfikacji przesyłać do LCD. ATMega32 powinna spokojnie wystarczyć do operacji bezpośrednio na...
http://obrazki.elektroda.pl/2762225800_1... Jedyny taki przenośny programator układów AVR. Pomoże wszędzie tam, gdzie trzeba zaktualizować oprogramowanie, a układ docelowy znajduje się w trudno dostępnym miejscu i nie mamy możliwości (lub chęci) ciągać ze sobą laptopa i mnóstwa przewodów. Banalnie łatwa obsługa, niski koszt wykonania, super...
(at)R-MIK Czytaj, proszę, ze zrozumieniem i bez nerwów. Pamięć NOR-flash jest względnie powolna i jest głównym ogranicznikiem taktowania rdzenia. Dodatkowo wymaga bardzo dużo miejsca na powierzchni układu, a jej skalowanie (zmniejszanie) jest bardzo kosztowne. Wielu producentów stosuje pamięć o szerokości znacznie większej niż szerokość magistrali...
Przyczyna jest w tych linijkach Trzeba też pamiętać, że jeżeli zdefiniujemy tablicę n elementową i spróbujemy zapisać coś pod indeksem równym lub większym n to kompilator nie zgłosi błędu, ale skutkować to może nieprawidłowym działaniem programu.
Rozmiar płytki 100x100 4 warstwy bo rozsądna cena na JLCPCB. Smd 1206 - planuje sam polutować. Co do umieszczenia usb na bottom pomyślałem że kabel niżej to i płytka będzie stabilniejsza. Płytka mogła by być mniejsza, ale to mój debiut więc chcę pierw posmakować co i jak. Jak płytka będzie gotowa zobaczę jakie błędy i co poszło nie tak. Wtedy będę miał...
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...
czasem problemem okazuje się niestała stała - tablice stałych można przypuszczać, że będą tylko w pamięci flash - przeważnie okazuje się, że kompilator owszem zapisuje sobie tablicę w pamięci flash, ale z początku programu kopiuje sobie ją do ramu - w ten sposób można się odwoływać do komórek takiej tablicy jak do zwykłej pamięci ram (przestrzeń). Może...
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...
Jak się istaluje linuxa z dyskietek zgrywa się image na dyskietki przy pomocy programu rawwrite. Sądzę że program zapisuje dyskietkę od sektora 0 do odpowiedniej długości pliku. Nie wiem czy rawwrite będzie umiało zapisać na SD. Z linuxa do SD prawdopodobnie dostaniesz się przez 'dd' Stąd jako image dyskietki zapisujesz swój plik na SD dd if=/dir/file.txt...
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...
Pliki można przesyłać protokołem Xmodem , Ymodem , Zmodem ten pierwszy nie przesyła nazwy i rozmiaru pliku ale kolejne już tak . Y i Zmodem posiadają też sumę kontrolną CRC-16 więc będzie pewność że pliki przesłane są prawidłowo . Jest jeszcze protokół "Kermit" Zorientowany pakietowo i wydajniejszy od X,Y,Zmodem . Za pomocą tych protokołów pliki można...
W sytuacjach, kiedy łączny rozmiar kodu wynikowego Twojego programu wraz z bootloaderem jest większy niż rozmiar dostępnej pamięci flash. Jeżeli nie ma takiego zagrożenia, programowanie po ICSP można sobie odpuścić.
Tak, przyznaję rację, zapomniałem ;) Słuszna uwaga co do wydajności procesora. Bardzo prawdopodobne (przy stosowaniu arduino), że procesor nie radzi sobie z tak szybką obsługą przerwań i zwyczajnie je pomija. Na razie polecam spróbować zmienić digitalWrite na bezpośrednią obsługę rejestrów wyjściowych. To znacznie przyśpieszy obsługę przerwania. EDIT:...
avr gcc i do dzieła, wszystko będzie jasne :D avr-gcc -Wall (printuj wszystkie warnigs) -Os (optymalizacja pod kątem rozmiaru) -fpack-struct (pakuj struktury bez dziur (not aligned) -fshort-enums (upakuj enumy do jak najmniejszego rozmiaru) -std=gnu99 -funsigned-char (char traktuj jako unsigned) -funsigned-bitfields (to samo z polami bitowymi) -mmcu=atmega88a...
Tzn programy kompilują się do normalnego hexa. Teraz już nie pamiętam, ale jakoś wciskało się ctrl+shift i myszą klikało w Verify i wtedy w okienku na dole gdzie lecą komunikaty o rozmiarze pokazywała się ścieżka do katalogu temp zawierającego naszego hex'a (w gąszczu innych informacji). EDIT: dokładnie Shift + myszką Verify w starszych wersjach, a...
[syntax=c]for(uint8_t index = 0;GGA_Buffer[index]!=','; index++){ ///nie potrafi się zatrzymac na przecinku Time_Buffer[time_index] = GGA_Buffer[index]; time_index++; PORTA |= (1<<PA2); //DODANE }[/syntax] 1) Szalenie ryzykowna pętla, gdy przyjdzie jakiś inny string bez przecinka lub ciąg znaków do przecinka przekroczy wielkość bufora Time_Buffer,...
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...
Mnie zastanawia jedna rzecz, skoro korzystasz z przerwań to po jakiego grzyba tam input? Zobacz jak mozna to rozwiazac: Odebrano: Disable Urxc ' wylaczenie przerwania na czas trwania aktualnego 'Jesli licznik znakow jest mniejszy od maksymalnego rozmiaru bufora to... If Licz_znaki < Max_znakow Then '...zwieksz licznik znakow, do buforu transmisji...
Znalazłem [url=http://www.autohotkey.com/forum/top... stronę na której jest napisane, że plik mp3 w nagłówku zawiera informację odnośnie ilości ramek w pliku, a każda ramka trwa 0,026 sekundy. W plikach VBR każda ramka ma natomiast różny rozmiar. Jednak korzystając z programu WinHEX nie mogłem znaleźć tych informacji :cry:
to jest wyświetlacz kupiony w sklepie sam go zrobiłem http://obrazki.elektroda.pl/5498330800_1... Dodano po 1 a jak bym połączył dwie atmegi i jedna by odpowiadała za wyświetlanie a druga za czytywanie czasu z RTC, te wszystkie liczby co są w voidach dać do switcha i ta druga atmega co zczytuje wysyłała tylko liczby. bo ogólnie to ten...
Kwarc 16Mhz, program pisze na Atmega 8 wiec na pewno OC2 odpowiada pinowi PB3. A wartosc _0_0125ms wynosi 24, wiec nie przerkacza rozmiaru licznika. Jakies inne sugestie ? :)
Takie właśnie jest moje wyobrażenie o językach wysokiego poziomu. jest bledne [; jesli ja sobie wyobraze, ze C51 ma kontroler kolorowych matryc LCD w rozdzielczosci HD z 128MB pamieci SDRAM, to wcale nie znaczy, ze jezyk wysokiego poziomu mi to zapewni. mylisz pojecia. jezyk wysokiego poziomu jest tak samo ograniczony rozmiarem zmiennych jak jezyk...
Podczas pisania programu i debugowaniu program zaczął się resetować. Po dojściu do tego miejsca program wywołuje nie ten podprogram co potrzeba. 0000EFDC 01.96 ADIW R24,0x01 Add immediate to word 0000EFDD 0e.94.f1.e5 CALL 0x0000E5F1 Call subroutine <== tu nie działa poprawnie po zrobieniu kroku idzie do poniższego adresu 00009598 c6.0e ADD R12,R22...
Po prostu zgrały się w nieodpowiednim momencie jakieś krytyczne czasowo elementy programu. Np. odczyt zegara RTC po I2C. Albo co gorsza jakieś wewnętrzne mechanizmy BASCOMa działające na przerwaniach. W normalnym języku programowania jak C, to definicja częstotliwości rezonatora nie ma wpływu prawie na nic (jedynie na funkcje opóźniające). A w BASCOMie...
http://obrazki.elektroda.pl/8902876500_1... Witam. Chciałem zaprezentować moją ostatnią, a zarazem pierwszą pokazywaną na elektrodzie konstrukcje. Jest to miniaturowa ściąga. Powstała ona z kilku powodów: 1. Przetestowania sposobu podłączenia wyświetlacza i karty pamięci do mikro-kontrolera. 2. Poziomu trudności napisania oprogramowania...
nie da sie wprost okreslic jaki rozmiar stosu bedzie potrzebny. mozna za to napisac sobie swego rodzaju funkcje kontrolujaca, ktora bedzie sprawdzala wartosc SP. najlepiej w postaci przerwania od timera. mozna tez recznie, w symulatorze lub debuggerze, podgladac wartosc rejestru SP. 4\/3!!
Skoro podejrzewasz złe użycie pamięci, użyj wbudowanych we FreeRTOSa sposobów sprawdzania użycia stosów dla poszczególnych tasków. Mowa konkretnie o tym http://www.freertos.org/index.html?http:... Podobnie jak koledzy uważam, że powinieneś jeszcze raz zaprojektować aplikację. Nie każda funkcja...
-Pozbądź się WSZYSTKICH ostrzeżeń kompilatora. -Poczytaj o eliminacji drgań styków (np.: https://www.google.pl/#lr=lang_pl&q=avr+... -Wejścia/wyjścia wystarczy skonfigurować raz (chyba że zmieniasz funkcje w trakcie wykonywania programu). Dobrze by było abyś dostosował rozmiar kodu do rozmiaru problemu :D i zachował w jego strukturze pewien...
Co do rozmiaru programu z użyciem _delay_ms() to wartość 3242 bajtów wydaje mi się mocno zawyżona. Cała pamięć attiny to 2KB chyba, że dla atmega 16 jest jakaś inna implementacja. Kurcze faktycznie, dopiero teraz zauważyłem, że próbę robiłem na jakimś starym projekcie z wyłączoną optymalizacją... Także - wycofuję się z tego co napisałem i przepraszam...
Zdają się być OK :/ http://obrazki.elektroda.pl/4397949700_1... EDIT: I przy okazji, AVRdude wyświetla taki błąd (zawsze ten sam adres): avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0100 0xff != 0x71 avrdude: verification error; content mismatch ale nie wiem, czy to naprawdę coś jest nie tak,...
Witam ponownie, Byłem pewien, że napisałem tutaj moje rozwiązanie już wcześniej, więc nie zaglądałem do tego tematu a tu pojawia mi się e-mail z propozycją napisania rozwiązania.. więc opiszę je. Ogólnie skorzystałem z porady Kolegi atom - odwołuję się do tablicy w sposób [y][x] - czyli mam tablicę (pikseli poziomych) tablic pionowych. Dało mi to możliwość...
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];...
http://obrazki.elektroda.pl/6167974300_1... Witam ;) Na elce coraz więcej projektów świąteczno-świetlnych, więc i ja coś dorzucę :D Już od dłuższego czasu chodził mi po głowie projekt kostki led, i w ostateczności zdecydowałem się na 8x8x8 z niebieskimi ledami. Projekt Wzorowałem się na projekcie z instructables.com, jednak zrobienie...
Cześć chłopaki. Natknąłem się na post na elektrodzie https://www.elektroda.pl/rtvforum/topic3... jest o programowaniu stm32 za pomocą arduino ide uczieszyłem się że mogę mieć moc obliczeniową jaką ma arduino due w cenie 14 zł ale po kompilacji pierwszego programu okazało że programy na stm zajmują dużo miejsca. ponad 20 razy więcej niż to samo...
:arrow: Mictronic: Predkosc transmisji to 9600! Ponizej wklejam wycinki mojego programu do obslugi tego modulu: '------------------------------- ' modul RFiD ' ' 9600.1.0 ' dane 0xff,x,x,x,x,x,crc8 '------------------------------- {...} $baud = 9600 ' predkosc transmisji Config Serialin = Buffered , Size = 100 ' rozmiar bufora {...}...
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...
No tak, to święta prawda. Do tego Bascom sam z siebie dodaje sporo zbędnych procedur. Najgorszym przykładem jest obsługa LCD - ok 1kb kodu. Ja teraz kończę obsługę I2C Slave bo Bascom oferuje to tylko za dopłatą. Bascom , jest jak ... klucz uniwersalny. Potrafi odkręcić wiele śrubek , ale jest jest duuuuużo większy od np. ósemki oczkowej ;) Tą z kolei...
ad 1/ Zwiększanie prędkości procka? Jeśli pojawią się pętle opóźniające, to w tym samym czasie procek zużyje więcej energii na wykonywanie pustej pętli (więcej instrukcji). Inaczej trzeba by na czas opóźnień (najlepiej wszystkich) usypiać procka. Jeśli w kodzie nie będzie żadnych opóźnień, to jeśli przy większej szybkości procek pochłania mniej mocy...
https://obrazki.elektroda.pl/2220939900_... Mikrokontrolery AVR cieszą się niezmienną popularnością, ze względu na swoją prostotę, a jednocześnie spore możliwości. Co ciekawe, mimo, że od lat wszyscy wieszczą rychłą śmierć mikrokontrolerów 8-bitowych, mają się one ciągle dobrze, a kolejne, nowe rodziny są wprowadzane na rynek. Jakiś...
Zgoda. Jednak i tak ekonomiczniej umieścić tablicę we Flashu a potem ją przepisać do ramu. Jeśli jej rozmiar jest duży, to można zaoszczędzić w granicy do 100% zapotrzebowania na flash. Tak też pomyśleli twórcy kompilatorów (przynajmniej CodeVision) i w ten sposób realizowana jest inicjalizacja tablicy w ramie. Zatem popieram kol. elektryka w tezie...
1. Dodam jeszcze, że jeśli chcesz używać nadal Attiny2313 to możesz jako przetwornik wykorzystać komparator i jeden kanał PWM do którego podpinasz filtr RC. Mając na jednym wejściu komparatora napięcie które chcesz zmierzyć a na drugim wyjście z filtra RC zwiększasz wypełnienie PWM, a komparator wykryje gdy napięcie z PWM będzie bliskie mierzonemu....
Już nie pamiętam, ale do tych driverów można słać dane dość szybko, Moja ATmega pracuje z 16MHz ale nie było sensu bić tu rekordów prędkości SPI, Jeśli mnie pamięć nie myli to zegar SPI był 1MHz, Niestety program mam na komputerze daleko stąd więc nie sprawdzę, Program to nic ciekawego ale jeśli chcecie to jak będę w domu to zgram i się podzielę nim...
mozesz sobie zacczac zapis od dowolnego adresu, ale pamietaj ze nie masz dostepu do pelnych 64k pamieci wiec tym samym sam sobie zmiejszasz rozmiar banku (ktora w twoim przypadku ma 128k na kostke i dwa wejscia CS) co wiecej od czasu wybrania kostki do czasu jakiegokolwiek udanego odczytu/zapisu ma minac okreslony czas - mam nadzieje ze to uwzgledniasz...
Program avr-size z WinAVR różni się od tego z oficjalnej dystrybucji binutils. WinAVR ma łatkę, w której dodaje wyświetlanie zajętości pamięci. Sprawdziłem kod i nawet w najstarszej wersji avr-size jest atmega406 i ma poprawny rozmiar 2kB ramu. Żeby avr-size poprawnie działał, to musi mieć przekazany paramter --mcu=typ_procesora. Wklej wszystkie komunikaty...
Witam! W tej chwili programuję w C mikrokontrolery ATmega 128 i 2561. Program ATmegi zawiera dołączany wsad do FPGA XILINX. Atmega po uruchomieniu urządzenia programuje FPGA tym wsadem. Ze względu na to że: - wsad do FPGA zajmuje relatywnie b. dużo miejsca - istnieje konieczność dodawania coraz to nowszych features do urządzenia (rośnie rozmiar programu...
Dziękuję za zainteresowane. Tak , grafiki będą wyświetlane zawsze w tym samym miejscu, na pełnym ekranie o formacie 240*128. Bitmapy jakie konwertowałem są monochromatyczne 1 bitowe. Rzeczywiście rysuję je ręcznie, piksel po pikselu (masakra) . Jeśli jest możliwość abym nie musiał ich konwertować to by było idealnie gdyż mogę sobie na bieżąco zmieniać...
#include<avr/io.h> //sam typ procesora wybiera się w opcjach #include "lcd.h" //tu są przypisane wyprowadzenia do lcd i prototypy funkcji do obsługi lcd #ifndef F_CPU #define F_CPU 8000000UL //to w sumie nie potrzebne bo wybiera się w oppcjach #endif char B1[21] = "Bascom";//w C dodatkowo 1 bajt na koniec łańcuch znaków...
Problem z dostępem do pól bitowych zostaje dokładnie taki sam jak był - dalej jest to data race. Ja tu data race nie widzę. Czy jest coś polem bitowym czy int-em. (i abstrahujmy od tego błędnego kodu autora, którego żeś się uczepił a jak Ci już pisałem specjalnie nic nie zmieniałem w treści funkcji). Data race może wynikać z programu a nie typu danej....
Witam. Z zainteresowaniem przeczytałem opis budowy zegara NIXIE-DCF przez Valdi2003. Także ukończyłem budowę takiego zegara. Jednak chciałem żeby był on względnie małych rozmiarów dlatego go trochę uprościłem. Zrezygnowałem z komunikacji z komputerem (a szkoda bo dzięki opisowi programu NCCC przez Valdi2003 mógłbym ograniczyć świecenie lamp NIXIE w...
No z tą teza w przypadku uK to bym polemizował. Dynamiczna alokacja jest dość karkolomnym, trudnym i niebezpiecznym narzędziem w przypadku uK. Bycie inżynierem zakłada myślenie. Jeśli mam szybką pamięć w MCU i wolniejszą dodatkową, a tak jest zazwyczaj w AVR, to nie ma sensu wszystkiego przekładać do tej wolniejszej. A już z pewnością nie ma sensu...
Rejestrator dość spory. Większość danych zbiera płytka nadajnika na Atmega328 i tam następuje praktycznie całkowita obróbka - oprócz danych z siedmiu DS18B20, jednego DHT11 oraz MPL115A2, odbieranie czasu z DCF77 i jego aktualizacja w PCF8563 przesyłane są dane o tym czy nie ma awarii czujnika ( zmienna Err ) oraz informacja o histerezie czujników DS18B20...
ADC - jest jakiś godny polecenia moduł? Czy zbudować trzeba? Mam dostęp do ADC0832CCN (2x 8bit) który byłby wygodny ze względu na rozmiar - mogę użyć też HX711 (24bit) ale niezbyt dobrze lutuję takie maleństwa. 24-bit jest naprawdę potrzebne? Wzmacniacze operacyjne, precyzyjne dzielniki rezystorowe, nisko szumne stabilizatory napięcie, to komponenty...
Mam nową at2561 i podczas kompilowania programu bascom wyrzuca error: 202.Po sprawdzeniu w kodach błędów okazuje się że procek nie obsługuje takiej funkcji jak getrc5.Czy to możliwe że taki "mocny" procesor nie obsługuje rc5?Może ja coś robię źle?Proszę o pomoc. Program testowy: Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . Proszę...
Z tego co ja wiem, sprawa wygląda tak: usbasp owszem nie ma już ograniczenia na rozmiar adresu przesyłanego po usb (moja łatka z przed iluś tam lat), ale jeszcze będę musiał dorobić wysyłanie po SPI komunikatu aktualizacji górnej części adresu. Roboty z tym dużo nie ma, ale potrzebuję mieć możliwość przetestowania kodu co będzie się wiązało z wgrywaniem...
Porównując PC z Atmegą stwierdzam, że mój program na PC wykonuje sie tylko 1,5 razy szybciej niż na AVR. To mnie niepokoi. Jeśli na PC działanie jest tylko 1,5 razy szybsze, to znaczy, że jest coś mocno nie tak z algorytmem. Śmiem twierdzić, że z powodów błędów implementacyjnych tego algorytmu (bo to nie problem z algorytmem tylko z jego implementacją...
Tutaj kod programu: #define ROZMIAR_TAB 185 #define ILOSC_KOLUMN 8 #include <avr/io.h> #include <avr/interrupt.h> #include "dane.h" volatile uint8_t licznik = 0; volatile uint16_t licznik_czas = 0; volatile char licznik_zbocze=1; //uint8_t tablica[9] = {0b11111111, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,...
Tak, jest kompilator C++. Głównie chodzi jednak o to, że język ten w niektórych zastosowaniach powoduje nadmierne obciążenie procesora lub zużycie zasobów (przydzielanie obiektów wymaga obecności sterty). W przypadku mikrokontrolerów ze względu na częstotliwość zegara często bardziej zależy na wydajności niż przenośności kodu, a pisanie w C pozwala...
Kidzar.. teoretycznie mozna wszystko miec w jednym pliku.. tylko jaki to ma sens? Wiele plikow stosuje sie z nastepujacych powodow: -tna kawalki kodu na jakies male, spojne czesci, ktorymi mozna latwo zarzadzac. -pozwala utrzymac poszczegolne pliki w jakis rozsadnych rozmiarach (a nie jedna kobyla na kilka tysiecy/milionow linijek) -mozna budowac projekt...
Witam. Domyślam się że mój temat zostanie przyjęty niezbyt chętnie bo w Internecie są już jakieś informacje na ten temat, ale ja niestety ciężko potrafię to zrozumieć. Z programowaniem procesorów 8-bitowych od Atmela mam już jakieś doświadczenie, jednak nigdy nie interesowałem się kwestią bootloaderów. Mam kilka pytań które chce zadać, ale najpierw...
Na atmedze2561 napisałem sterownik domowy.Wszystko działa jak należy do momentu, kiedy po mniej więcej czterogodzinnej "bezczynności" procesor zatrzymuje pracę całego programu tj. nie reaguje na polecenia pilota rc5 oraz nie liczy czasu (ma pokazywać bieżące min,sek,godz) .Po zresetowaniu procka lub jego ponownym włączeniu do zasilania zaczyna działać...
A ja lubie Bascom`a i tyle. Który kompilator przed skompilowaniem pliku określi ile będzie ważył kod wynikowy? Chętnie poczytam, albo dowiem sie czegoś nowego. Bascom potrafi zawrzeć w kompilacji date kompilacji..no to to chyba jest do obliczenia. Rozmiar kodu można pewnie policzyć samemu po kompilacji i dodać skrypt jakiś ..myślę, że w C też tego nie...
Najpierw opiszę objaw, domniemaną przyczynę a potem poprosze o rade: Mam program który pożera mi większość RAM, głównie za sprawą dużych buforów między innymi na dane pochodzące z 2 UART-ów (atmega 162) i innych zadeklarowanych tablic. Generalnie wszystko jest OK jednak kiedy powięszam wielkość zajętej pamieci RAM , tak gdzieś do zużycia jej w 80% program...
oto kawalek prostego programu, ktory nie dziala tak jak trzeba: Dim X As Byte Config Pind.7 = Output Gosub Czekaj Config Pind.7 = Input End Czekaj: For X = 1 To 255 Next X Return po wykonaniu petli program wraca do poczatku (chyba) oczywiscie wszystko sie dzieja po zaprogramowaniu procka, symulacja przeprowadzona w baskomie jest wporzadku. jeszcze...
Cześć wszystkim ;) Mam ogromną prośbę o pomoc w sprawie otwierania obrazków w formacie *.bgc ktore beda umieszczone na karcie pamięci i atmega ma je otwierać i wyświetlać na kolorowym lcd . Probowałem już kilka różnych sposobów ale za każdym razem obrazek się nie wyswietlał poprawnie . Serdecznie pozdrawiam Bartek Nizej kod programu do obslugi karty...
Witam Mój kod nie miał być idealny, chodziło mi tylko o to by Ci pokazać na przykładzie ideę z użyciem Int() :) Co do Twojego pytania: ROMSIZE : 2000 hex Całkowity rozmiar pamięci programu w formacie szesnastkowym (2000 hex = 8192 dec, czyli Twój kontroler ma 8192 bajty na program). ROMIMAGE : 7E6 hex -> Will fit into ROM Twój program zajmuje 7E6 bajtów...
Bardzo fajnie Ci to wyszło. Spróbuj dodać tekstury do tych brył. Jak bardzo skomplikowane modele możesz na tym pokazywać? Czy da się wyświetlić jakieś inne modele i skąd wziąłeś te bryły (tzn czy jakiegoś programu typu 3D Studio). Rozmiar programu wydaje mi się bardzo duży jak na 1000 linii kodu, chyba że to właśnie bryły tyle miejsca zajmują... Możesz...
Witam, Wstęp Zbudowałem układ na ATmedze2560-16AU + kwarc 16MHz. Całość ma działać pod Arduino ale problem jest raczej innej natury. Procesy wgrywania bootloadera i programu nie wykazują błędów ale ATmega nie wykonuje tego co zaprogramowałem (oczywiście dla testów program najprostszy z możliwych, ten sam program wgrany na płytkę bazową Arduino Mega...
http://obrazki.elektroda.net/72_12087645... Przedstawiam projekt analizatora widma na ATmega8. Wykonałem układ na podstawie układu z tej strony [url=http://diy.elektroda.eu/analizator.... Wyświetlanie odbywa się na LCD alfanumerycznym - 16*2 lub 24*2 (sterownik LCD HD44780). Ilość słupków zależy od wgranego programu do mikroprocesora....
Teraz sobie wyobraź że masz bootloader mniejszy niż ustawiłeś bitami BOTSZ0 i BOTSZ1 .. tam będą FFFF i procesor skoczy pod ten adres przy stacie i nic znaczącego się nie stanie bo on będzie czytał po kolei kolejne komórki pamieci flash aż w końcu napotka Twój Bootloader :D i zacznie działać. Dokładnie tak to sobie wyobraziłem ale teraz popatrz: ustawiam...
Ja też męczyłem się z uruchomieniem tych modułów sprawdzając wszystkie algorytmy jakie udało mi się znaleźć na sieci i nie działały... Powodem był brak antenki :) - te moduły po prostu bez niej nie działają, nawet jeśli znajdują się 5cm od siebie. Poniżej umieszczam bibliotekę do modułów RFM12B na pasmo 868MHz, napisaną w C z pakietowym przesyłaniem...
Oprócz rozmiaru pamięci, procesory te niestety trochę się różnią (np dostępnymi rejestrami). Najlepiej przekompilować program z uwzględnieniem różnic pomiędzy procesorami.
zapewne masz problem ze stosem. Jeśli po ograniczeniu ilości zmiennych które deklarujesz program działa , a tylko zmiana wielkości rozmiaru tablicy wpływa na to że program się wiesza to napewno tak jest. Spróbuj albo dać większy procek (z większym Ramem) lub też zwiększ rozmiar stosu. W bascomie służą do tego te polecenia $hwstack $swstack $framesize...
Trochę poczytałem i prosił bym o ewentualną korektę jeśli się mylę: 1. Odnoście ulokowania bootloadera w pamięci. Z tego co wyczytałem w 2. Odnoście podziału pamięci FLASH na RWW i NRWW Istnieje dodatkowy podział pamięci flash na RWW i NRWW (widać to na str. 272), czy dobrze rozumiem że jeśli bootloader ustawie na 512 i sekcja aplikacji powiększy się...
Pojawily sie dostepne w polsce uklady AT90USB1287. Uklad mam zrobiony na Atmega128, plytka idzie do druku ale jestem mocno zainteresowany przejsciem na nowy uklad ze wzgledu na USB. Nie mam juz czasu na to by zatrzymac projekt ale plytke moge jeszcze sprobowac dostosowac tak by mozna sie bylo przesiasc na AT90USB. Przrejrzalem note katalogowa tego ukladu...
Witam, chciałbym się zapytać czy ktoś próbował używać tego bootloadera z atmega 128 ? U mnie nie działa, ale nie jestem pewny czy wszystko dobrze ustawiłem. Próbuję połączyć się bezpośrednio przez RS (oczywiście max232 jest podłączony prawidłowo i działa - testowałem z programem do komunikacji atmega - pc wgranym bezpośrednio, bez bootloadera). Zgodnie...
Na początek proponuję sprawdzić kartę po nieudanym zapisie za pomocą jakiegoś programu, np. Hexplorer. Po włożeniu karty do PC pewnie trzeba będzie ją sformatować (wyczyścić FAT i ROOT, jeżeli to jest FAT16), ale już z tego co będzie zapisane w obszarze danych będzie można określić przyczynę problemów. Hexplorer nie wyświetla zawartości tablicy partycji....
Możesz też jeszcze spróbować zwiększyć rozmiar stosów, jeśli nie zrobiłeś tego w opcjach kompilatora. Poza tym: T1 = P * 0.0048875855327468230694037145650049 Skąd wziąłeś taką kosmiczną liczbę :)? Wymagana jest jakaś superprecyzja obliczeń? W końcu to tylko pomiar napięcia (temperatury)... Bardzo rozrzutnie gospodarujesz pamiącią. Te trzy działania:...
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...
Witam, mam problem - w moim sprzęcie audio padł wyświetlacz LCD. Wyświetlacz oparty na kontrolerze SPLC780, w jakimś stopniu kompatybilnym z HD44780. Wygląda jak 1x16 ale w rzeczywistości jest to 2x8 w jednej linii - ot taka dziwna organizacja. Chciałbym go wymienić na VFD również kompatybilne z HD44780. Znalazłem 2x20 w takim rozmiarze, że górna linia...
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?
a mam pytanie: jaki jest rozmiar programu urzywającego obsługi mmc/sd (minimalny, tak na oko). W tych darmowych 2 kb bascoma chyba się nie zmieści ;>. Pod pascalem coś czytałem o obsłudze sd i tam piszą, że kod prostego programu (oczywiście po kompilacji) to około 12 kb, więc dałem sobie spokój, bo pascal ma darmowe 4 kb :|.
Mam problem z wysyłaniem sms, wykorzystuję atmege128 i moduł sim900 na płytce Evb v1.01_pcb , proszę o rzucenie okiem na kod gsm.c [syntax=c]// PLIK: gsm.c // Dołączone biblioteki #include <avr/io.h> // Biblioteka obsługująca peryferia mikrokontrolera #include <avr/interrupt.h>// Biblioteka obsługująca przerwania mikrokontrolera #include...
Nadmierne używanie w programie Bascom instrukcji podprogramów SUB prowadzi nieuchronnie do nadbudowy stosu z, którym Bascom sobie nie radzi. Przykro mi to mówić, ale to programiści - w 90% - sobie nie radzą z właściwym obliczeniem (a nie podaniem na oko) rozmiaru stosu. Wystarczy przecież policzyć ile razy suby się zagłębią (HWStack), ile odłożą parametrów...
Witam, czy poniższe funkcje działają w sposób prawidłowy z logicznego punktu widzenia? Jeżeli ustawiam timer i OCR0 ręcznie to układ działa jak trzeba a po wykonaniu tych funkcji nie. tablica_uart jest to tablica charów o rozmiarze 5. np. "00064" czyli 100. Dodano po 47 I czy można zaininicjować timer w pętli glównej programu? Jeżeli robię to przed...
Póki co nie znam wszystkich możliwości tego typu procesora, Jest ich więcej niż potrzebujesz ;) 1. Jakiego języka programowania mogę użyć, żeby zaprogramować Atmegę i jak wygląda sprawa z programami komputerowymi (są darmowe czy płatne) ? Atmel daje potężne narzędzie Sposób 1: procesor można wlutować w płytkę, ale wówczas trzeba będzie wlutować również...
Witam Niestety problem o jakim wspomniał Ch.M. występuje również w Bascomie. Jeśli program ma spore rozmiary a zbyt dużo poumieszcza się w podprogramach to są błędy w działaniu na samym uC przy czym kompilacja jest jak najbardziej ok. -- pozdrawiam
Witam. Tez sie bawilem w FastAvr i uwazam ze jest znacznie szybszy od BASCOMA. Chodzi mi tu glownie o rozmiar kody wynikowego . Poza tym wszystkoe funkcje raczej sprawnie dzialaly. Niestety zrezygnowalem z niego podszas pisania kodu na ATmege 16. Mianowicie po przekroczeniu około 27 % pamieci ukladu program zacza sie sypac i nie moglerm znalesc tego...
Hejka ponownie. Przeanalizowałem trochę ten Twój program w wolnej chwili i faktycznie wychodzi na to, że masz zapętlone wywoływanie instrukcji GOSUB-RETURN Także zwiększanie parametrów stosu nic Ci nie pomoże bo wcześniej czy później i tak nastąpi przepełnienie. Sęk tkwi w podprogramie DODAWANIE. Jest on wywołany na samym początku (przed instrukcją...
z tego co pamiętam to ten program nie generował poprawnych bitmap, trzeba było zastosować inny, ale nie pamiętam który (znaleziony chyba na angielskiej stronie radzia, czy na tej polskiej, nie pamiętam, zajmowałem się tym pół roku temu, ale za pare miesięcy znów wracam do tej tematyki, bo muszę nieco zoptymalizować biblioteki radzia we względzie czyszczenia...
Po wgraniu programu do Bascoma i przeglądając go zauważyłem błędy: Config Pinc.0 = Input powinno być Config Portc.0 = Input I pozostałe Configi. Pinc.0 stosujemy przy odczycie danego pinu np. If pinc.0 = 0 then ........ Zobacz co na to bascomowy help: http://obrazki.elektroda.pl/1186147200_1... Niech autor spróbuje zwiększyć rozmiary...
Poddaję się. Pamięć jest nowa, wykrywana. Nie sprawdzałem zapisu i odczytu bajtów. Biblioteka zmodyfikowana wg: http://www.mcselec.com/index.php?option=... Chociaż przy kompilacji biblioteki kompilator komunikuje o 3 błędach. Kombinowałem z różnymi ustawieniami kwarcu i CONFIG TWI. Dodałem biblioteki do programu. Na...
https://obrazki.elektroda.pl/7228525200_... Witam wszystkich:) W szczególności miłośników światełek, iluminofonii, itp. Prezentowane urządzenie wyświetla widmo akustyczne w postaci 20 słupków po 16 punktów każdy. Trudno je nazwać analizatorem widma. Analizator kojarzy mi się bardziej z przyrządem pomiarowym, chociaż wyświetlanie częstotliwości...
Może ja źle myślę ale skoro wysyłam po kolei elementy tablicy i później je po kolei odbieram to wydaje mi się że powinno wszystko działać. Czy tylko mi się wydaje? Dobrze ci się wydaje, tylko ludzie piszą ci wyraźnie, że trzeba zorganizować sobie jakąś własną ramkę danych, jakiś własny protokół. Tymczasem kolega próbuje odbierać dane w sposób tzw:...
zmniejszyć rozmiar programu pisanie programu atmega odczyt programu atmega
zgrzyt renault filtr cząstek stałych buderus instrukcja serwisowy
hulajnoga xiaomi zasilacz klimatyzacja prawa
Jak przestroić radio Diana DST-301 z OIRT na CCIR? Lokalizacja bezpiecznika blokady kierownicy w Renault Scenic II