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...
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...
temat wałkowany już kilka krotnie. funkcje delay mają argument typu float jeśli podajesz zmienna jako argument do dodajesz również operacje zmiennoprzecinkowe na tej funkcji które .... dają efekt jaki uzyskałeś
prokopcio: tak, pod warunkiem, że ten plik nie został dograny na kartę po jakichś wcześniejszych bojach z innymi plikami, bo wtedy może ulec sfragmentowaniu i nici :/ Ale zapisując od razu po formacie taki plik na karcie możesz być spokojny - będzie w całym kawałku :) Potem wystarczy, że tego pliku nie będziesz usuwał ani zmieniał jego rozmiaru na kompie.
Petit Fat w żaden sposób nie powiększa rozmiaru pliku, po prostu nie modyfikuje tablicy FAT.
Witam, problem jak w temacie, po wyfrezowaniu (wierceniu) nie zgadza się rozmiar elementów np AtMega 8 ma 21mm zamiast 34, wszedzie jednostki ustawione na mm. Frezarka której używam to 3018. Wersja eagle to 9.6.2. https://obrazki.elektroda.pl/6784846500_... https://obrazki.elektroda.pl/1429170400_...
Zakłada, że rozmiar płytki i umieszczenie USB od spodu, są z góry z jakiś powodów wymuszone. Jeśli nie to płytka mogła by być mniejsza. Co do schematu to nie znam założeń do czego ta płytka, ale sygnały ze złącza USB warto by zabezpieczyć jak i ekran złącza nie podpinać bezpośrednio do masy. Tu masz płykład https://forum.arduino.cc/t/why-usb-shiel...
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...
Zapytałem z ciekawości ponieważ np moduły ZigBee mogą tworzyć sieć o rozmiarze 65535 modułó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!!
Odpowiedź jest niby prosta, wyslij po prostu "zmienna" nie używając sprintf. Pytanie jaki rozmiar ma owa "zmienna"?
mi zależy na grafice (głównie linie (nie koniecznie poziome), przy okazji znakach), tu już chyba atmega jest za wolna ? przy 'pisaniu' znaków jedynie 'przekopiowujesz' 'matryce' znaków na wyjście ? czy Twoje znaki mogą mieć mniejszy rozmiar niż ~8x8 ?
Pokaż ten program.
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 ? :)
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...
Wyjeżdżasz z indeksowaniem tablic poza ich granice - jeśli tablica ma rozmiar 4 x 1 to znaczy, że możesz indeksować jej elementy od 0 do 3 w jednej płaszczyźnie i tylko 0 w drugiej. Rozmiar tablicy to ilość jej elementów, a że w C indeksowanie jest od 0 to możesz dojść z indeksem tylko do rozmiar-1.
Jeśli chodzi o goto, to w C nie użyłem go ani razu - od 20 lat... A co do "makr", czyli funkcji inline - zależy od sytuacji. Jeżeli potrzebujesz funkcji, która jest krótka, a czas jej wykonania jest krytyczny - używasz inline. Jeżeli jednak czas nie jest aż taki krytyczny, nie robisz tego - zyskujesz wówczas rozmiar kodu mniejszy.
To jest mikroprocesor więc możliwości programistyczne wyznacza tylko umiejętności i wyobraźnia programisty oraz rozmiar pamięci a ten model ma 2kB FLASH. A co do samego programowania to ma całkiem sympatyczny asembler, ale też możesz pisać w C. Oprogramowanie jest darmowe.
Nawet w modelach lotniczych waga samego mikrokontrolera nie gra roli tak długo jak mówimy o SMD (...) Rozmiar tak samo. ATmega 8 SMD jest na tyle mała że nie ma to znaczenia. W zasadzie dopiero ATmega64 i pokrewne robią jakąś (nadal nie dużą) różnicę. Ale w modelach lokomotyw rozmiar ma znaczenie. Czy w skali N zmieści się TQFP32? Zmieści, ale nie...
Czy można jakoś wprowadzić parametr do strtod aby zaczynał z innego miejsca niż początek zmiennej? Użyj sscanf i odpowiedniego ciągu formatującego. No tylko, że domyślnie sscanf nie zawiera obsługi formatów zmiennoprzecinkowych. A włączenie jej "nieco" zwiększy rozmiar kodu wynikowego.
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...
zrób sobie unie: union dane { float f; unsigned int i; }; Zakładając, że float i uint mają ten sam rozmiar (sprawdź to) wpisując do float'a liczbe jaką chcesz, dostaniesz jej odwzorowanie bitowe w uint'cie. A dalej już jak wyżej.
Atmega 2560 , a gdzie się podłączyć ?
Są jakieś uniwersalne sposoby jak optymalizować programy, albo w jakiś inny sposób zaoszczędzić trochę miejsca? Jeżeli faktycznie program jest napisany w C++ (jak sugeruje tytuł wątku), to jest 1000 i jeden sposobów na jego optymalizację pod kątem rozmiaru kodu wynikowego ;) Niestety bez wglądu do takiego kodu, to może być taka ogólnikowa pogadanka...
Dobrze, rozumujesz. Mając mikrokontroler z wbudowaną obsługą CAN potrzebujesz tylko transcievera CAN. Aczolwiek skoro mowisz o małym rozmiarze, może jakiś mniejszy procesor. Jeśli koniecznie AVR to może np coś ala ATMEGA16M1? Tańszy i mniejszy. A z ciekawości zapytam, jakie auto? Też coś podobnego rozkminiałem, ale skończyło się tylko na łapaniu sygnałów...
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...
sprintf to dość potężna funkcja co jest okupione i szybkością, i rozmiarem zajmowanego miejsca, jak kolega Piotrus_999 zdążył napisać "taniej" będzie użyć utoa() i w zasadzie w tym przypadku wcale nie mniej wygodnie. A bufor c[] można wykorzystać dla różnych wielkości wielokrotnie.
Kurcze tylko mam kolejny problem bo mój program zajmuje już 40kb a będzie dalej rozbudowywany. Więc mnie blokuje znowu wersja demo. Chyba będe musiał zostawić tą atmege i zakupić atmegę64 i przegladnąć program i go jeszcze bardziej zmodyfikować, żeby zmniejszyć rozmiar. Dziwne jest to że mam wersję Bacoma 2.0.7.3 i tam również nie ma. Nie bardzo rozumiem...
Nie ma takiej zależności. Rozmiar stosu jest zależny od ilości zmiennych automatycznych i "łańcucha wywołań". 4\/3!!
Dzięki za odpowiedź. Programator USBASP 2.0 Q1 to pewnie 9014 lub 9015 zależnie jak z otoczenia wychodzi czy NPN czy PNP. PNP, po usunięciu zwarcia postawiłem 2SA950 i uzyskałem działanie podświetlenia ekranu po naciśnięciu przycisku test. Co to może być ten U3 jak wyglądają połączenia z innymi elementami Nie mam czasu się bawić w rozrysowywanie. czy...
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.
Czy znacie moduł zgodny z Arduino z interfejsem Ethernet zbliżony do ESP8266 pod względem: -ilości RAM -poboru mocy -wielkości -szybkości CPU -ilości FLASH -ceny ? O ile jestem świadom, nie ma takiego. Poza tym rozmiar komponentów potrzebnych do obsługi ethernetu już sporo przewyższa rozmiary całych modułów ESP. Oczywiście można podłączyć ENC28J60...
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...
Oczywiście że prościej dla mnie użyć teminala niż samemu dłubać przy programie na PC. Al wydaje mi się że aby iść po najmniejszej linii oporu to chyba prościej napisać swój programik i jakiś własny protokół. Ma to być maksymalnie proste. Biblioteka umożliwia aktualizację plików ale nie pozwala zmieniać rozmiaru plików i tworzyć nowych.
Płytkę zrobiłem celowo dużą aby na nią mógł zostać zamocowany wyświetlacz, więc rozmiar płytki jest przemyślany.
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...
Witam, Bufor nadawczy jest o rozmiarze jednego wysyłanego znaku (tak na prawdę jest to rejestr przesuwny samego UARTu). Zapisując dane do UDR jeśli bufor nadawczy jest pusty to od razu jest przepisywana do niego dana i rozpoczęcie transmisji. W innym przypadku jeśli w UDR są nowe dane a nie wszystko zostało wysłane to sprzęt czeka aż się wyślę i przepisze...
1. Używasz nowych wektorów przerwań, ale starej funkcji SIGNAL. Zamiast niej używaj ISR(): http://www.nongnu.org/avr-libc/user-manu... 2. Zmienna accumulator jest 16-to bitowa a nie dbasz o sprawdzanie, czy już przekroczyła rozmiar tablicy. 3. Poza tym, jaki sens mają dwa przerwania, skoro przerwanie od Timer2 opiera się o...
A ma ktoś pomysł na wysyłanie większej ilości pakietów w celu przesyłania strony html o większym rozmiarze? Obecnie wszystko odbywa się za pomocą jednej ramki danych.
[syntax=c]if (poz_odczyt > ROZMIAR) { poz_odczyt = 0; }[/syntax] tablice w C są indeksowane od zera. Jak masz rozmiar = 3 to ostatnim indeksem tablicy jest 2. Powyższy kod powinień więc wyglądać tak: [syntax=c]if (poz_odczyt > ROZMIAR - 1) { poz_odczyt = 0; }[/syntax]
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...
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...
To są szalency - sprzedają niby lepsze taniej :) To popatrz na XMEGi - jeszcze lepsze i zazwyczaj tańsze niż ATMega. A rozwiązanie zagadki jest proste - inny proces technologiczny, mniejsze rozmiary układu na krzemie to więcej układów na jednym waflu, lepszy uzysk i w efekcie niższa cena. Poza tym konkurencja też ich przyciska.
Dziękuję za odpowiedzi. Jak zwykle okazało się, ze proste pytanie nie jest takie proste. Mimo, że arturdip twierdzi inaczej, chyba jednak zastosuję tranzystor. Podam więcej szczegółów. Atmega oraz przekaźnik będą na osobnych płytkach. Znaczenie ma rozmiar, dlatego chciałem uniknąć prowadzenia dodatkowego przewodu zasilającego do przekaźnika. Nie jest...
Kompilator nie protestuje, bo automatyczne zmienne są umieszczane na stosie, a rozmiar tego jest kompilatorowi i linkerowi "nieznany" zasadniczo. 4\/3!!
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...
Szukam czegoś do smd o rozmiarze >0802 (jak dobrze pamiętam rozmiar) itp. Jakieś scalaki pokroju atmega itp :) ale mówie o rozmarach nie mniejszych :). Szukam też czegoś co odpowiadało by tak sławnemu grotowi typu minifala I trochę poza tematem, znalazłem coś takiego: http://allegro.pl/stojak-do-miniwiertark...
Ja bym postarał się o mniejszy rozmiar chyba że to do testów i w razie zablokowania procesora...
Jakakolwiek komunikacja bez kontroli danych jest do wyrzucenia. Co do pamięci to chyba powinieneś dopasować się do rozmiaru sekcji bootloadera w pamięci flash danego procesora ;)
http://obrazki.elektroda.pl/7819079000_1... Witam. Przedstawiam kolejną konstrukcję wyświetlającą modele 3D. W tym projekcie mikrokontroler odczytuje modele zapisane w formacie OBJ bezpośrednio z karty pamięci typu RS-MMC lub SD. Całość pełni funkcję miniprzeglądarki modeli OBJ. Wybrany model po wczytaniu jest skalowany do rozmiarów...
Datasheet mają wspólny. ...i jest w nim rozdział: Comparison Between ATmega48, ATmega88, and ATmega168 . Dodatkowo proponuję zwrócić uwagę na listę instrukcji, bo niektóre są dostępne tylko w ATmega168 (np. JMP). Przykładowo, mam aktualnie ATmegę168, chcę wgrać program z ATmegi88. Biorąc pod uwagę, że wektory przerwań mają inne rozmiary, raczej wątpliwe,...
To nie mikrokontroler "marnuje pamięć", a źle napisana biblioteka. Kod na uC 32-bitowy na ogół nie jest dłuższy niż odpowiadający mu kod na uC 8-bitowy, bo to samo da się zrobić mniejszą liczbą operacji. Za jakość bebechów biblioteki odpowiadają jej autorzy. Projekty, które na STM32 robią dużo więcej, niż da się zrobić na śrenim ATmega, na ogół zajmują...
Witam! Poszukuję ekranu led, w dobrej cenie. Rozmiar minimum 2x16. Jeśli możliwe jest proszę także o Atmega 8 :) Marka, typ i inne - wszystko obojętne, ważne by działało. Jeśli jest, prosiłbym też o adres aukcji na allegro :)
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ć.
Na rysunku wskazałem na żółto zbędne pogrubienie ścieżek, które przecież nie przenoszą takich dużych prądów http://obrazki.elektroda.pl/4361705800_1... Jest pokazana też ścieżka którą nie przeniosłeś na stronę Bottom. Zastanawiasz się co z niewykorzystanym miejscem z lewej strony, a ja tylko powiem że płytka spokojnie może być zmniejszona...
Mylisz się :) Aby znaleźć plik to już trzeba trzeba trochę kodu (czyli wystarczy petitFatFs) :) Ale żeby już zmienić jego zawartość to już sporo zabawy :) Należy: 1. Wyliczyć wielkość danych które chcesz zapisać (pestka) 2. Zlokalizować plik w RootDirectry (trochę trudniej) 3. Wyciągnąć interesujące nas informacja o pliku z RootDirectry 3. Zmienić rozmiar...
Witam, zmartwię cię: 1. to nie są stringi 2. sizeof() podaje poprawnie rozmiar :wink: Pozdrawiam, GSM
Z programowaniem przez Bascom tez mialem problem gdy przekroczylem pewien rozmiar kodu. Gdy zaczalem uzywac PonyProg-a to wszystko wrocilo do normy. Pozdro Dexter
Witam !! Czy mógłby Pan wysłać PCB poprawne ale w eaglu ??bo to które są w paczkach nie posiadają GND ... a nie wiem czemu jak drukuje z PDF rozmiar jest mniejszy niż ten z eagla i nie pasują nóżki ... Pozdrawiam.
(...) atmega jest jakby powiększona częściowo (...) To chyba nie jest możliwe. Zapewniam że footprint (jesli mowimy o tej samej bibliotece) jest zgodny z wymiarami podanymi w dokumentacji. Raczej doszukiwałabym się błędów na późniejszym etapie, najpewniej przeskalowany wydruk. Sprawdz czy w Page Setup nie masz czasem włączonego skalowania lub dopasowania...
Znowu nieco ponudzę, ale na razie udało mi się ręcznie przez terminal zaktualizować dane - program terminal ( Terminal v.1.9b ) ma zaznaczone dodawanie znaków końca linii. [syntax=bash] AT+CIPSTART="TCP","192.168.0.100",8080 CONNECT OK AT+CIPSEND=79 OK > Recv 79 bytes SEND OK AT+CIPSEND=26 OK > Recv 26 bytes SEND OK AT+CIPSEND=19 OK > Recv 19 bytes...
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...
Nom Atmega 32 ma jedną wadę, która też jest czasem jednocześnie zaletą. Mianowicie rozmiary (w obudowie DIP 40)
No to już na pewno nie jest wina Bascoma. Brak weryfikacji na niezależnym programie nie może mieć nic z tym wspólnego. Możliwe że problem powoduje równoległe połączenie SPI z programatorem i gniazdem karty. Ja staram się dawać złącze ISP podpinane na "czysto" do programatora lub na czas programowania odcinam się dipswitchem. A2560 jest trochę drogawa...
Musisz dokładnie wiedzieć, jaki rozmiar ma bitmapa aby ją poprawnie narysować -to raz. A dwa, jesteś pewny, że to logo wogóle jest w formacie poprawnym dla tego wyświetlacza? Bo tu musisz mieć kolejne bajty poskładane z pionowych, 8-mio pixelowych słupków. Znaczy zapis bajtu rysuje słupek 8 pionowo ułożonych pikseli, następnego następne 8 na prawo itd....
Dzieki za ten kod musze go przesledzic troche dokladniej :) A co do dzialania akcelerometru jak na zabawke za 30 zl dziala naprawde fajnie jest bardzo, bardzo czoly (trzymajac w rece nie jestemwstanie utrzymac lini prostej, dopieru umieszczenie go na konstrukcji dalo prosta linie) co do dokladnosci ciezko mi powiedziec poniewaz niemamgo do czego porownac...
zależy jak tą ramkę sobie zorganizujesz ale jeden z prostszych sposobów, gdy przesyłamy znaki ASCII to koniec ramki łatwo np odróżnić po tym, że nadleciał znak ENTER (0x0d). Gdy wykryjesz go w przerwaniu to już możesz powiadomić pętlę główną czy jakieś zdarzenie w tej pętli, że już jakaś cała i gotowa ramka czeka na odczytanie. Jeśli pętla główna będzie...
Witam, Buduję urządzenie oparte na uC AVR, zastanawiam się nad doborem pamięci zewnętrznej. Urządzenie to będzie dokonywać pomiarów elektrycznych sieci zasilającej mieszkanie. Będzie to watomierz cyfrowy. Chciałbym, aby uC wykonywał pomiary /używając zewnętrznego układu na SPI/, magazynował je w pamięci eprom. Oprócz tego chcę mieć możliwość pobierania...
Sprawdź czy nie ma więcej ograniczeń do 220 bajtów w kodzie
1. Dlaczego nie na przerwaniach? Taka biblioteka już milion razy w internecie była. Ta nie używa przerwań, blokuje działanie uC przy nadawaniu i odbiorze... Ma być jak najprościej i służyć do szukania błędów, a przerwanie też zabiera czas procesora jednordzeniowego. 2. Po co funkcje do wysyłania CR i LF? przerost formy nad treścią Jak w jednej linii...
Witam mam pytanie do łuki_mar44 jaki powinien być rozmiar tej płytki bo nie doczytałem? Oraz czy mógłbym prosić o spis elementów? Z góry dziękuję
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....
Powiedz mi jak w końcu mam wyświetlać tą zmienną, bo zgłupiałem teraz. Cały czas mam tylko białe tło. [syntax=vbnet]$regfile = "m644pdef.dat" $crystal = 16000000 $framesize = 80 $hwstack = 50 $swstack = 50 Config Graphlcd = 240 * 64 , Dataport = Porta , Controlport = Portb , Ce = 2 , Cd = 5 , Wr = 3 , Rd = 4 , Reset = 7 , Fs = 6 , Mode = 6 '$lib "glcd.lbx"...
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...
Witam, Mam dwa pytania: Czy w obszarze GPR przechowuje się coś innego poza zmiennymi globalnymi? i drugie pytanie: w dokumentacji Atmegi obszar GPR składa się z 32 rejestrów. Jeżeli jeden rejestr ma 8 bitów, tzn. że jeżeli zadeklaruje zmienną globalną o rozmiarze long long int (rozmiar 64 bity) to zajmie Ona aż 8 rejestrów?(8*8=64) a co dalej z tym...
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!!
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:...
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...
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ć.
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...
(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...
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...
Działa, dziękuję, ale wychodzi na to że mogę tak przesłać tablicę tylko jeśli podam jej rozmiar w deklaracji, a w moim założeniu chciałem przesyłać za pomocą funkcji dowolną tablice dwuwymiarową, o różnych wymiarach. Przecież przesyłasz: w1=y2-y1 w2=x2-x1 Poza tym rozmiar i tak musisz podać w deklaracji (tablicy). Chyba że zrobisz tablice dynamiczne.
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...
https://obrazki.elektroda.pl/2741391200_... Witam! Chciałbym przedstawić własną konstrukcję zegara matrycowego opartego na popularnych elementach. Konstrukcja powstała jako prezent dla ukochanej dziewczyny ❤️ Konstrukcja urządzenia Zegar w założeniu miał być typu stołowego, zasilany z zewnętrznego zasilacza. Skonstruowany...
Cześć, Pracuję nad bootloaderem, który umożliwi zaprogramowanie procesora plikiem z serwera. Plik pobieram i tnę na kawałki (dowolnej wielkości, aktualnie 128 bajtów) z pomocą modułu SIM868 (póki co w osobnym projekcie). Uruchomiłem projekt bootloadera optiboot w Microchip Studio 7. Były jakieś dziwne problemy, ale udało się wgrać program bootloadera...
Po wytrawieniu powinienem jeszcze przyciąć płytkę, gdyż na początku jej rozmiar ustalam zgrubnie (zwykle większy niż wynika to z projektu), stąd na brzegach już fragmenty wytrawienia - tam nie było przyklejonej maski.
A tak przy okazji to nie znacie jakiegoś sklepu z kołami, które by się nadały do mojego pojazdu? Na allegro i targowiskach szukaj starych, zepsutych zabawek. Można dostać za grosze albo gratis i pozyskać z nich koła, silniki, przekładnie itd. Oczywiście zostawie tam sam silnik w obudowie. Więc niech taki będzie napęd. A po co iść naokoło i budować...
Na początku powiem , że moja znajomość korzystania z płytek stykowych jest niska, jednak już brałem udział w budowie układów elektropneumatycznych. Czytając kilka postów słyszałem że najlepsze dla "świeżaka" jest mikroprocesor Atmega i procesor Atmel AVR, Chciałbym zrobić projekt który mógłby się rozwijać wraz z moim poziomem wiedzy, mianowicie kalkulator...
Diody się zapaliły się od razu po podłączeniu zasilania. Układ się zainicjował, gdyż przeszedł procedurę RTLinit(). Zawiesił się w funkcji RTLreceive_packet(). Co do realizacji Ethernetu to myślę, że jest to możliwe, ale nie można obsługiwać obszernych ramek. Ja przyjąłem rozmiar ramki na 128bajtów, stąd modyfikacja kodu z opracowania.
Nie wiem, czy tylko tu się pomyliłeś, czy w kodzie też. Napisałeś, że ustawiłeś GRAPHIC_HOME_ADRESS=0x2000, a ja miałem na myśli raczej 0x0200 . Jeśli LCD ma przykładowo 8K RAM, to wartość 0x2000 jest już poza zakresem. Trudno przewidzieć, co w takim przypadku będzie wyświetlane. #define GLCD_GRAPHIC_SIZE (GLCD_GRAPHIC_AREA * GLCD_NUMBER_OF_LINES)...
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...
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,...
Znacznie lepszym rozwiązaniem będzie jak dopasujesz rozmiarem wyświetlacz ze sterownikiem obsługa tego jest mało wygodna a dokumentacja to raczej tylko z analizatora ttl
W pierwszej kolejności zadeklaruj zmienne seconds , minutes oraz hours jako volatile . Modyfikujesz ich wartość w przerwaniu i odczytujesz w programie głównym (w tym czasie może wystąpić przerwanie). secondsBuffer , minutesBuffer oraz hoursBuffer musi być co najmniej 3. Funkcja itoa() dodaje znak końca łańcucha tekstowego.
Witam. Realizuję prosty projekt generatora wideo na VGA opartego o Atmegę1284p - obraz jest generowany z pamięci RAM dosyć chałupniczą metodą: aby osiągnąć rozdzielczość 53x240 pikseli (!) tworzę 53 tablice (rozdzielczość pozioma) uint8 o rozmiarze 240 wpisów (rozdzielczość pionowa) a następnie ustawiam PORTC po kolei każdą tablicą o indeksie linii....
Troszkę za dużym ogólnikiem rzuciłem... Tak, stos to HW Stack (sprzętowy) i Soft Stack (programowy). Należało by zwiększyć rozmiar stosu sprzętowego, bo używasz przerwania od Trmer1. Wywołanie obsługi przerwania powoduje zajęcie 32 bajtów stosu (czyli tyle, ile masz zadeklarowane), a nie tylko do tego jest on używany. Możesz ustawić np. dwukrotnie więcej....
Jaki procesor (o małych rozmiarach) by się do tego nadawał? np. atmega88 lub atmega168 stm32f0xxxxt6 lub stm32f1xxxxt6
Witam. Do Atmegi mam podłączony enkoder z drukarki na INT0 (obsługuje przerwanie). oraz rs232 , który komunikuje się z aplikacją na PC(też przerwanie). Opcja pierwsza: czytam dane z enkodera manualnie : mam o programie guzik "daj dane". Gdy kręcę enkoderem jak szalony to w lewo to w prawo a potem wciskam guzik "daj dane" to dostaje to co trzeba - znaczy...
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...
rozmiar programu atmega rozmiar alokacji rozmiar akumulatora
podswietlenie przyciskow radia revox tuner głowica tosca
hewalex sterownik hewalex sterownik
Korektor impedancji głośnika wysokotonowego w zwrotnicy Pomiar diody BAP401/200: wyniki i interpretacja