Nie wiem jak w BASCOMie to zrobic (kto w ogole pisze programy na procek z 256kB FLASH w tak dziwacznym jezyku?), ale jesli BASCOM wspiera kompilacje pod konkretny adres i odwolania do funkcji przez wskazniki (to mozna zreszta zrobic za pomoca wstawki w assemblerze), to najprosciej te funkcje umiescic pod jakims znanym z programu glownego adresem, przy...
https://obrazki.elektroda.pl/9340502200_... Witam, chciałbym przedstawić moją konstrukcję, którą jest urządzenie wspomagające leczenie bezdechu sennego metodą CPAP. Urządzenie to zostało stworzone w ramach tematu mojej pracy inżynierskiej. Zanim przejdę do opisu wspomnianego wyżej urządzenia, chciałbym w sposób bardzo ogólny wyjaśnić...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
http://obrazki.elektroda.pl/5613819300_1... Witam, Chciałbym przedstawić swoją konstrukcję, która była tematem mojej pracy na studiach inżynierskich. W dzisiejszych czasach prawie nikt już nie bawi się bramkami logicznymi, licznikami, rejestrami, które zostały wyparte przez sterowniki PLC. Urządzenia te wykorzystujemy do wykonywania...
ATmega 644PU, programator AVR BOX II,Kwarc 16Mhz. Konfiguracja Studio4 OK. Teraz wgrywam przez JTAGa hex-a Wszystkie komunikaty OK Miedzy nimi WARNING: FLASH byte addres 0x000 is 0x00 (should be 0x0C).. FAILED O co chodzi ? Jak to sie tłumaczyć na PL ?. Pomóżcie bo chyba nie drgnę do przodu z tą Atmegą.
Witam, dzisiaj miałem czas na zgranie kodu i wyrzucenie z niego tego co nie dotyczy tematu: Dodano po 7 Przepraszam za dziwne znaki w komentarzach ale przerzucałem z Windowsa na Linuxa i nie konwertowałem kodowania. Będę wdzięczny za pomoc. Sławek
Witam. Po przerwie wracam do tematu gdyż nadal nie mogę poradzić sobie z obsługą karty Compact Flash za pomocą mikrokonrolera. Sprawa wygląda w ten sposób że wykonałem układ do obsługi karty CF jak na poniższym schemacie. Poniższy schemat jest zaczerpnięty z Elektroniki Praktycznej z rocznika 2/2004 http://obrazki.elektroda.net/39_12252239...
Witam, Na SPI mam dwa CAN kontrolery i kartę MMC. Wszystko jest napisane na tych samych funkcjach. Tzn po ustawieniu SPI wysyłam dane do SPDR, czekam az zdejmie flagę wysyłania i ewentualnie odbieram z SPDR dane odebrane. Karta Flash działa idealnie. Wszystko się zgrywa i nie ma błędów. Natomiast z tymi CAN kontrolerali sa problemy. Tzn jeżeli wysyłam...
Hmmm. Programator to "Programator USB www.nestor-electronic.pl" :) No tyle wiem. Dość dawno kupiony. Do tej pory (zanim nie ruszyłem M128) wszystko było ok... Teraz tak : Mimo , że mam ten błąd weryfikacji, mam wrażenie, że sam program bootloadera działa (tzn. na razie widzę, że miga mi led - tak się zachowuje ten bootloader). Czy pozwala na załadowanie...
Witam Sytuacja, miejsce: system mikroprocesorowy, mikrokontroler AVR Atmega + zewnętrzna pamięć FLASH z dużą ilością danych. Komunikacja między nimi poprzez interfejs SPI więc bardzo łatwa do "podsłuchania". W pamięci FLASH znajdują się dane, których wprowadzenie kosztowało kilka miesięcy pracy (do postaci pliku BIN/HEX). Chcę zaszyfrować i zabezpieczyć...
Witajcie, siedzę i szukam błędu w bibliotekach do obsługi NRF24L01. Skopiowałem je z biblioteki, którą wykorzystuje w ATmega8. Działa nawet dobrze tam, niestety na STM32F0DISCOVERY już nie chce. Będę bardzo wdzięczny za pomoc. To najpierw kody, które wyrażają więcej niż tysiąc słów ;) : main.c http://obrazki.elektroda.pl/4732813300_1...
Witam. Potrzebuje zrobic cos takiego: Karta CF ----- Mikrokontroler ----- RTL8019 Ogólnie chodzi o cos takiego ze karta CF bedzie podpieta do mikrokontrolera a mikrokontroler do ethernet-u i chodzi mi o mozliwosc pobierania plikow z tej karty - moze byc poprzez http ale lepiej by bylo gdyby pliki te nie byly pobierane a uruchamiane. Ogolnie chodzi mi...
Moje problemy odbiegają od poprzedników ale temat zgodny, więc: Mam uP Atmega 8 oraz wyświetlacz zgodny z hd47780 2*16znaków. Gdy wrzucam jeden znak na wyświetlacz przy pomocy kodu niżej wszystko jest ok: while(1) { LCD_CLEAR; LCD_LOCATE(1,0); LCD_WRITE_DATA('d'); } return 0; } Mogę kilka takich znaków wrzucić...
Jest to wg projektu z EdW: ////////////////////////////////////////... // harddef.h - definicja sprzętu dla programu testującego możliwości wyświetlacza z noki3310 // przeznaczenie: "Programowanie procesorów w języku C (EdW)" // ////////////////////////////////////////...
Dobra już mam tego doka :) A te wyświetlacze będziesz multipleksował ? Ile ich będziesz podłączał ? One mają wspólne katody, anody ?
c) chodzi dokładnie o to co napisałeć, plus dodatkowo - skoro napisali w treści, że to call jest pod adresem 0x100 to zapewne autor oczekuje jeszcze, aby napisać jaka wartość znajdzie się na stosie. Tu mały problem w AVR - przestrzeń FLASH adresowana jest w słowach, więc adresy bajtowe trzeba pomnożyć razy 2. c) i d) można się jeszcze zastanowić o ile...
Tak ponieważ plik hex to plik tekstowy zawierający adresy pamięci, reprezentacje tekstową bajtów w hexie oraz sumę kontrolną na końcu każdej linii. Porównaj sobie np. pierwszą linię otwartego pliku bin w jakimś dowolnym hexedytorze oraz linię pliku hex to zrozumiesz. A więc Twój plik wynikowy nie przekracza 128kb, bo ma 116kb i tyle będzie go we flashu
Organizacja pamięci programu (flash) jest w słowach - 2 bajty, stąd kolejne adresy np 101 102 103 tak naprawdę przeskakują co 2 bajty. Wektory przerwań używają rozkazu jmp (nigdy rjmp) rozkaz jmp składa się z 2 słow czyli 4 bajtów. Powyższe nie dotyczy pamięci statycznej RAM - tam jest organizacja 1 bajtowa.
To zamiast nazw funkcji umieść w pliku ich adresy w pamięci FLASH MCU. Tego typu plik możesz stworzyć automatycznie wyciągając ofsety z pliku elf lub map. Mając adres tworzysz wskaźnik na funkcję i przy jego pomocy ją wywołujesz.
Dane do zapisania do pamięci FLASH wydobywa się ze skompilowanego pliku ELF, przy pomocy avr-objcopy , zarówno dla pliku HEX i binarnego. Makefile wygenerowany przez MS7 zwiera taki wpis: ihex na binary : [syntax=text]"...\avr-objcopy.exe" -O binary -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "test1.elf" "test1.bin" [/syntax] Ale...
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...
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
Wygląda na to że ATmega zaczął mnie słuchać :-) Pozbyłem się bootloadera Arduino i wszystko wróciło do normy: http://majsterkowo.pl/forum/programowani... Pora przesiąść się na AVR studio... Nadal pozostaje otwarte pytanie dlaczego avrdude zgłasza błąd przy flashowaniu, a konkretnie przy weryfikacji. Pozdrawiam
Nie wiem jak masz inicjalizowana strukture menu_state, ale przyjrzyj sie zmiennej statetext. Jest to statyczna zmienna bedaca wskaznikiem na char*. Funkcja lcd_puts_p spodziewa sie, ze bedzie to lancuch znakow zakonczonych zerem (null). Natomiast: statetext = pgm_read_byte(&menu_state[i].pText); powoduje, ze, czytasz tylko jeden bajt, a najstarszy bajt...
Jak to zwykło już, skoro atmel dał instrukcję lpm umożliwiającą dostęp do pojedynczych bajtów, to nagle pamięć flash jest zorganizowana w bajty. W rzeczywistości zakłada się, że komórka pamięci flash ma 2 bajty, stąd ta różnica pomiędzy wartościami: największa sekcja bootloadera to 0x1C00-0x1FFF, ale zważywszy, że komórka ma dwa bajty, po iście skomplikowanych...
http://obrazki.elektroda.pl/5325514500_1... Witam. Jest to mój pierwszy post na tym wielkim forum. Chciałbym się pochwalić swoją konstrukcją, ponieważ nie wierzyłem, że uda mi się stworzyć coś, co będzie wyświetlało wirujący sześcian. To było raczej odległe marzenie zainspirowane nagraniami wideo znalezionymi w internecie jeszcze przez zakupem...
Przejrzałem tego ButtLoad'a, za duży bałagan w źródłach jak dla mnie :) Super gdybyś odnalazł tą notę. W AVR910 jest trochę napisane ale to dosyć stare jest. Zauważyłem pewną niespójność, jedne procesory mają podane np 4ms w "minimum wait delay" dla operacji chip erase, a inne 9ms. No cóż, nie każdy który sprawdzałem nadążał czyścić pamięci w te 4ms....
Zazwyczaj przed podaniem dyrektywy w asemblerze .db podajesz jeszcze .org 0x0000, która do umieszcza dane pod tym adresem (0x0000). Innymi słowy, wszystkie dane, które zostały zamieszczone po .org 0x0000, są dostępne od adresu 0x0000. Zauważ, że jeśli korzystasz z pamięci flash w uC np. Atmega8 masz tam organizację pamięci 2 bajtową (WORD), a wszystko...
Zeby odczytac np bootsector (0x0000) to musze mu wpisac przesunie. Niestety bootsector czesto nazywany pierwszym sektorem dysku nie jest nim w rzeczywistosci....no w zasadzie jest ale nie fizycznie ;) Trzeba tu rozdzielic pojecia sektora i bloku karty. Polecam temat: http://www.elektroda.pl/rtvforum/topic28... Próbuję dociec w jaki sposób (w...
Co najwyżej nie będzie działać - nic nie popsujesz w sensie nie spali się ATMega. Porównaj adresy rejestrów i będziesz widział różnice.
"sbi DDRC,0" 1. Ponieważ jest tam ".org 0" to znaczy że rejestr "Program Counter" jest wyzerowany. 2. z niego wychodzi 16bitów adresu do pamięci Flash 3. z pamięci Flash wychodzi 16bitów instrukcji: 4. opcode SBI ma taką strukturę: 1001 1010 AAAA Abbb (AAAAA 5bitowy (0..31) adres rejestru IO, bbb - adres bitu w rejestrze do zapalenia (0..7) 5. DDRC...
Jak najbardziej znane jest mi to ustawienie ale ono określa położenie tablicy w Ram'ie (chyba że się mylę- aż sprawdzę). Moja tablica jest w pamięci Flash chyba że jakoś podobnie można to określić. Raspberry+LED myślę że nie będzie wyczynem w stylu strzelania do muchy armatą :D
Do USB ASP jest prosty, skuteczny i DARMOWY programik Khazama Programmer. Ściągnij wersję 1.62 bodajże i sprawdź na tym. Dodano po 2 Inna sprawa to kompilator bo jak rejestry mają inne adresy to wtedy nie będzie działać ale czy tak jest? Z poziomu Bascoma Atmega 32 to Atmega 32 (czy tam 16...) , nie ma znaczenia literka. One nie różnią się rejestrami....
Nie wiem jakie są korzyści ładowania przez bufor (możliwe że jest to szybsze , bo nie zajmuje tak długo magistrali). Problem rozwiązałem na razie w ten sposób, że zapełniam cały bufor liczbami 0x44, przesyłam to do main page, a potem odczytuję przez bufor któryś z elementów pamięci flash (odczytuję poprawną wartość 0x44). Zmieniłem też ustawienia rejestru...
Ta funkcja zwraca wartość ukrytą pod adresem który jest jej argumentem. Proste. Ponieważ w twoim przypadku, pod tym adresem kryje się wskaźnik, funkcja zwraca jego wartość czyli adres tego co ten wskaźnik wskazuje. O to chodzi w twoim kodzie bo rzutujesz to na inny wskaźnik potem. Wskaźnik na wskaźnik (**) to najfajniejsza rzecz w C (za wyjątkiem wskaźnika...
Po wyczuciu pozostaje odczytać co jest na liniach adresowych i danych, na jaki adres został wykonany dany rozkaz i jaka wartość została wysłana przy rozkazie OUT, można wykonać określoną czynność. Oczywiście, jedna czynność może składać się z serii rozkazów IN lub OUT, w zależności od ilości danych do wysłania lub odebrania. Czy to ma szansę zadziałać?...
Chciałbym użyć przykładowego bootloadera z AES z Microchipa AVR231 [url=http://ww1.microchip.com/downloads/... ]Link (oryginalnie dla Atmega 328PB) Jednak chciałbym go używać na Atmega4809. Najpierw zrobiłem drobne przeróbki i przeprowadziłem testy na 328P, wszystko działało poprawnie. Następnie przerobienie obsługi USART dostosowując...
Witam, Fusebit-y są zaprogramowane poprawnie. Ale kolega nic nie wspomniał o zabezpieczeniu bootloadera przed samonadpisaniem. Nalezy ustawić w tym celu odpowiednie Lockbit-y i tym samym uniemożliwić wykonanie operacji SPM w sekcji bootloadera. Kolejna sprawa, dlaczego kolega lokalizuje bootloader pod adresem7000?? Przy rozmiarze sekcji boot flash 2048...
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ś...
Używając etykiet w .eseg nie zastanawiasz się nad fizycznymi adresami, robi to za ciebie kompilator. Tym niemniej aby operować na tych danych należy oczywiście użyć "okienka podawczo - odbiorczego" w EEDR, zgodnie z notą katalogową ( http://www.atmel.com/dyn/resources/prod_... ). Wszystko z .eseg ląduje w pliku .eep, którym możesz za...
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].
Jeżeli stosować się do porady kolegi wyżej można by zastosować tablice tylko dwu-wymiarową.Chcąc mieć 3 poziomy wystarczy nam 3x n gdzie n będzie ilością funkcji danego poziomu a ostatni trzeci odnosnikiem do konkretnych funkcji (za pomocą właśnie wskaźnika) Przyznam że pomysł fajny i relatywnie prosty szkoda że sam tak nie robiłem w moim systemie...
Myślę ,że problem tkwi gdzieś w programowaniu bo pojawia się komunikat:Diference it 00000 po poleceniu 'Program". Czy raczej "Difference AT 00000" ? Dobrze myślisz. To nie jest ani wina w schemacie, ani wina w programie, tylko po prostu twoja Atmega się nie zaprogramowała. Występuje więc różnica (difference) między zawartością komórki Flash o adresie...
Niżej głupoty :P Lepiej w wiki sprawdzić :] nie 100% głupoty ale mija się z prawdą, (Link post niżej dał kolega) HEX jest zapisany jako liczba 16 w ASCII czyli 8 bitów zajmuje 16 + do tego adresy komórek początkowych co jakiś czas (bynajmniej tak mi się wydaje) :1000000012C02CC02BC02AC029C028C027C... Tak wygląda 1 linijka pliku HEX Adres: :10000000...
Chodzi o to że zmienna temp czyli tak naprawde wskaźnik do tablicy charów będzie żyła tylko w tej funkcji. To mi nie przeszkadza bo jak już przypisze jej wartość(wskaźnik) do mojej zmiennej wskaźnikowej to mam już globalnie adres do pierwszego elementu tablicy ze znakami. Nie wiem tylko jak długo ta tablica będzie zarezerwowana w pamięci. jeżeli wywolujesz...
Hej! Już opisuję. Pomysł wygląda tak: magistrala danych pamięci jest multipleksowana z magistralą adresową. Adres będzie wyprowadzany w trzech częściach. Każda o rozmiarze 8 bitów. Implementacja interfejsu nie należy do mnie. Tyle wiem na chwilę obecną. Dzięki za pomoc. Pozdrawiam gizmo
Problem dotyczy wszystkich języków programowania i wszystkich mikrokontrolerów. Chodzi o uszkadzanie się zawartości pamięci eeprom kiedy program idzie w krzaki. Zauwzyłem, żę kiedy traktuję atmegę zakłoceniami emc potrafi o ona zacząć wykonywać inny fragment kodu (bascom), jakby skoczyła pod jakiś przypadkowy adres. objawia sie to czasem podwójnym pisaniem...
Już przerabiałem ten temat, ale na toolchainie w wersji 4.7 wyciągniętym z AVR Studio. Generalnie działa to. Jeśli chcesz używać pamięci programu jako danych powyżej 64kB to musisz użyć kwalifikatora __memx. Jest trochę z tym problemów bo standardowe biblioteki nie są przygotowane na te nowości, po prostu trzeba uważać na to co się robi. Też obawiałem...
WARNING: FLASH byte address 0x0000 is 0x00 (should be 0x0C)… To co piszesz sugeruje że jednak Flash nie jest skasowany ponieważ wtedy jego wartość byłaby równa 0xFF. Wartość 0x0C to przeważnie pierwszy rozkaz po resecie mikrokontrolera, a jeśli we flash przed programowaniem w komórce o adresie 0x0000 jest 0x00 (zamiast oczekiwanego 0xFF) to wartość...
Może tmf to wyjaśni bo wersji tych makr jest co niemiara. Ale ideą jest to aby ich nie używać tylko "zwykłych konstrukcji" C. Przykłady poniżej __memx moim zdaniem to jest taka na siłę zrobiona proteza, błedów co niemiara. Trzeba uważać jaką wersją binutils sie używa i jaki masz plik linkera (bo możesz się zdziwić że wszystkie dane we flash mogą się...
Plik hex mozesz bezposrednio wgrac do ponyproga i nim zaprogramowac uklad - przy ladowaniu hexa wybierasz czy ma byc ladowany do FLASH czy EEPROM. A jesli nie masz hexa to w ponyprogu mozesz recznie edytowac zawartosc komorek. Co do odczytu to tak - wystarcza. Ale zamiast operowac na bezwzglednych adresach, co szybko zacznie stwarzac problemy lepiej...
Nie wiem jak zrobić obsługę bootloadera w BASCOMie, ale jeśli nie ma gotowych funkcji/bibliotek to bez asemblera się nie obejdzie. Przede wszystkim bootloader musi siedzieć w odpowiednim obszarze pamięci, nie musi być w całości w obszarze bootloadera, chociaż to wygodne, ze względu na odrębne lockbity dla tego obszaru pamięci. Trzeba zagwarantować,...
Na avrfreaks znalazłem taki pdf: http://www.avrfreaks.net/modules/FreaksF... Flash Tables for AVRs without the LPM Instruction Nigdy nie tworzyłem takich tablic i nie mam informacji książkowych na ten temat. Mam więc pytanie do szanownych forumowiczów - czy w taki oto sposób tworzy się takie tablice? Może ktoś z forumowiczów ma jakieś...
Z tablicy int[] zadeklarowanej jako PROGMEM czyta się inaczej poszczególne elementy, np.:[syntax=c]int p1 = static_cast<int>(pgm_read_word(NTC... + (ADC_Value >> 4)));[/syntax]W poście #12 podałem link do strony, gdzie jest to wyjaśnione. Funkcja pgm_read_word() jest tożsama z funkcją pgm_read_word_near() - jako argument podaje się adres...
nie roznica o 0180, tylko roznica pod adresem 0180. a co do tego ze raz chodzi a raaz nie: 1) sprawdz, czy wychodzi ze stanu RESET (program ladujacy z BASCOM'a czasem zapomina o deaktywacji pinu RESET) 2) sprawdzaj czy FLASH zostal skutecznie skasowany przed kolejnym programowaniem 3) skontroluj zasilanie (jak sa smieci na zasilaniu to moze gubic bity...
Te wszystkie ekspandery nie masz na jednej szynie? Raczej ze względu na adresację byłoby to niemożliwe. Jeśli adresacja jest totalnie zamieszana to najprościej chyba zrobić tablicę we FLASH, gdzie jest każdy pin (a właściwie co ósmy, bo tyle pewnie wyjść IO ma ekspander) i odpowiednie pozycje typu nr IO szyny I2C, adres ekspandera. A najprościej wywalić...
Natrafiłem na dziwny problem; Chodzi o atmegę128. Fusy 3F D4 FF (lata na kwarcu 14Mhz). Do tego jest bootloader 1kb na wejściu (przerobiony MCS bootloader do bascoma), no i sam program w bascomie. "normalna" procedura wygrywania softu jest taka: Za pomocą AVRDRAGON, spod Atmel Studio ustawiam sobie fusy. Następnie wgrywam plik HEX bootloadera. Wgrywa...
>tmf z czystej ciekawości się zapytam: a gdzie 'const'? Kompilator widzi to jako const i wskaznik do manipulacji danych z kwalifikatorem __flash ma wskazywac na const? Z tego co wiem to na AVRach nie przechodzi 'uniwersalny' wskaznik, bo przestrzen adresowa nie obejmuje liniowo FLASHa i RAMu. Jak wygląda deklaracja wskaźnika na typ __flash np. w funkcji?...
Czy jest jakaś możliwość określenia z wnętrza programu - jaka jest zajętość flasha ? Tzn. na jakim adresie miejscu kończy się program ? Może jest jakiś wskażnik w Bascomie ? W pasku Menu: Program-> Show result (Ctr+W) -> w tabeli z zakładką Report odczytasz procentową zawartośc; na przykład dla m8 "FLASH USED : 36%" Ponadto: klick na icon "Program...
w architekturze harward gdzie pamięć danych nie może być użyta do przechowywania wykonywanego kodu programu (w przeciwieństwie do organizacji von Neumana). Nie do końca jest to prawdą. W przypadku AVR owszem, ale takie uogólnienie na wszystkie procesory w architekturze harwardzkiej jest nadużyciem. Przykładowo STM32 - są wykonane w architekturze harwadzkiej...
RS232 wymaga zastosowania konwertera poziomów (najczęściej MAX232). Podłączasz go do pinów I/O : PD0 (RxD) i PD1 (TxD), konkretnie piny 14 i 15. Sposób podpięcia MAX232 znajdziesz na większości schematów urządzeń wyposażonych w RS232, gdyż jest to typowy i najpopularniejszy układ do tego celu. Poszperaj w sieci. (np. jest application note na www.avrfreaks.net)...
O ile adresy FLASH wykorzystywane przez program i bootloader się nie pokrywają to tak. Bootloader może być formalnie w dowolnym miejscu FLASHa, tylko sama instrukcja SPM musi być w tzw. sekcji NRWW, która jest na końcu pamięci - jej adres i wielkość wybiera się fusebitami. assembler jak zwykle wie, że gdzieś dzwoni tylko nie wie gdzie. O ile dla urządzeń...
Witam. Czytam właśnie notę: http://www.atmel.com/images/doc1644.pdf Proszę o pomoc w interpretacji (str. 4, wiersze 3-4) Page Erase All Flash memory updates are done page by page. Before writing new data to a page, the page must be erased. The Z-register is used to select the page to be erased. Set up the Z-register to point to a byte in the page to...
Lulubella proszę, oto przykład kopiowania z flash do sram pisany na mikrusa XMega. Dodano po 23 − liczby dla których bit B3=0, − liczby dla których bit B3=1 i B1=0, − liczby dla których bit B3=1 lub B1=0, W tych przypadkach w zupełności wystarczy SBRC i SBRS Można i tak: [syntax=vbnet]ldi R18, &b11111111 andi R18, &b00100000 breq...
Przejrzałem posiadane noty katalogowe mikrokontrolerów AVR i stwierdzam, że producent nie zawsze całkowicie zatajał informacje o "ukrytej" stronie w pamięci FLASH, która zawiera m.in. sygnaturę i bajty kalibracyjne. W większości not jedyną wzmianką o tym obszarze pamięci jest: "The three bytes reside in a separate address space." - chodzi o 3 bajty...
Mam oscyloskop. Kiepski ale jakieś przebiegi do 1MHz pokazuje. Sygnał z DS18B20 co 1 sekundę jest cały czas. Obciążenie wyjścia ma 4k7 tak jak w aplikacji. Wyjście DEB cały czas na 1 (5V) . Nie widzę żadnego sygnału 1 s. DIN - na teście, jest sygnał, potem zero. LOAD na teście jest, potem 1.CLK na teście jest, potem 0. Dodano po 3 Dla sprawdzenia: TINY85,...
No niestety nie jeden błąd się wkradł ale niestety nie wiem jaki :) Oto kod biblioteki : Kompilacja rozpoczęła się. Projekt „DMX MULTI FUNCTION OPERATOR.cproj” (elementy docelowe: Compile): Kompilowanie przy użyciu wersji narzędzi „4.0”. Element docelowy „Compile” w pliku „C:\Program Files...
Potwierdzam: STK200 + XP + mega128 - kupa błędów i poprawne zaprogramowanie co piąty, dziesiąty raz. rozw. 1: jeżeli Twój program ma możliwość wyboru prędkości programowania - zmniejsz ją. Przy ISPprog to pomogło. Płytki mam na 11 lub 16Mhz. W ISPprog ustawiłem 2Mhz i błędów jest o wiele mniej (za to wrzucanie 60kb do flashu trochę trwa...). rozw. 2:...
Dlatego, że FLASH jest zorganizowany w postaci słów - nie ma możliwości umieszczenia instrukcji pod nieparzystym adresem. Umieść wszystko w jednej linii z .DB lub jako słowa i będzie ok.
Problem w tym, ze zapewne tablica fontow siedzi we FLASH (chociaz z zalaczonego programu wcale to nie wynika). A skoro jest we FLASH to nie mozesz odwolywac sie do tych danych poprzez zwykla dereferencje wskaznika, bo AVRy maja architekture Harvardzka i rozlaczne przestrzenie adresowe. W efekcie do danych we FLASH musisz sie odwolywac poprzez specjalne...
FuseBity mówią o tym gdzie fizycznie w pamięci jest bootloader a dodatkowo on tam musi być. Czyli musisz tak "zlinkować" program bootloadera, żeby znalazł się na końcu pamięci FLASH pod adresem fizycznym (bajtowym) 1E000H (odpowiada word:F000H). Nie znam Twojego kompilatora i nie pomogę w konkretnym ustawieniu. Praktycznie, żeby sprawdzić czy plik wynikowy...
No jak 6 bajtów to tak jak pisałeś :) ldi r16, 'C' subi r16, 'a' ; masz numerek literki w macierzy teraz mul *nie pamiętam składni* r16, LICZBA_WIERSZY (mul sux:P) No i jesteś na początku tej literki w flashu teraz adres do Z i lpm;)
Zastanawiam się czy układ pamięci na i2c da rade przesłać odpowiednio szybko dane z pamięci do procka i dalej. Najprościej to chyba by było zrobić jakiś dekoder adresu do atmegi i zastosować zwykłą pamięć szeregową z wyjściem danych na drabinkę rezystorową i mamy dźwięk. Jednak pamięci flash są tanie. Może na ISP da się wystarczająco szybko przesłać...
Są 2 zasadnicze sprawy: 1) Chcesz pamięć na grafikę. Grafika zapisana na stałe, dużo zajmuje i zależy ci tylko na szybkim odczycie - użyj pamięci data-flash na SPI. 2) Potrzebujesz zewnętrzną pamięć SRAM do szybkiego odczytu i zapisu - FRAM odpada bo ceny są złodziejskie, SRAM na SPI największe są tylko 64kb (masz w TME). Możesz też użyć taniej SRAM...
Widzę ze kolega wyżej czytał dokładnie 1 pierwszy post :). Może się komuś przyda na przyszłość sekcję zapisująca dane przenosimy do zakresu pamięci przeznaczonego dla bootloadera void boot_program_page (uint32_t page, uint8_t *buf) __attribute__ ((section (".bootloader"))... Oczywiście wcześniej trzeba zadeklarować...
Witajcie. Mam do napisanie w sumie prosty sofcik do atmegi 32 ale napotkałem problem nie do przeskoczenia. Otóż mam do procka podpięty na nóżkach PINA.6 i PINA.7 i2c z zewnętrznym podwieszeniem 3.3k do 5V. Problem polega na tym że jak próbuję coś odczytać to soft się wysypuje przy próbie zapisu adresu to znaczy wywala go poza adres flasha. Problemu...
Witam,sprawa jest taka,otóż na przykładzie Atmegi 8 (albo i nawet pamięci flash) chciałbym żebyscie przybliżyli mi sprawę programowania mikroukładów,szczególnie chodzi mi o te w samochodach,czyli ETL,Motora HC, TMS ale to później. Nie chodzi mi o to jak podłączyć atmege do Isp Programmera!!!:) Chodzi mi o to,abym mógł za pomocą np. Data sheetów i innych...
Rzeczywiście, może teraz być tak, że te fonty zaczynają się pod koniec pierwszego 64KB. Ale jak nad tym zapanować w Bascomie ? Dopisz na początku programu dyrektywę $MAP , po kompilacji z raportu dowiesz pod jaki adresem zapisane są dane fontów. Zrobiłem mały test, spreparowałem dane tak żeby zaczynały się przed adresem 0x7FFF, a kończyły powyżej 0x7FFF...
A na przykład gdybym chciał wgrać bootloader z obsługą USB to za pomocą takiego programatora było by to możliwe. Każdym programatorem (jeżeli jest sprawny i poprawnie skonfigurowany soft do jego obsługi na przykład AvrDUDE) możesz ‘wgrac’ odpowiedni bootloader. Bootloader to też program dla processora jak każdy inny. Różnica polega na innym...
Witam Potrzebuję kopiować dane z pamięci trwałej (np. flash) w której zapisane są dane do pamięci SRAM typu KM684000ALG-7 512Kx8 (4MBit). Pamięć z której będą kopiowane dane to np. taką jaką znalazłem o tej pojemności M29F040B90K1 pamięć Flash EPROM 5V 512Kx8 90ns PLCC32. Do przerzucania danych chę użyć procesora AVR np Atmega 16 lub 32. Nie używałem...
Wkleje plik includowany z obsługa LCD, który stosuje oraz czesc programu głownego: LCS.asm: ;=======================================... ; Obsluga LCD zgodnego z HD44780 dla 8-bitowej szyny danych v1.0 ; Nie obsluguje BUSY flag ani odczytu adresu z LCD ;!!! Znak lub komenda do wyslania do LCD przekazywane sa przez...
No dobra - małe podsymowanie do czego doszliśmy z "Liściastym" (wielkie dzięki za pomoc i poświęcony czas!!!). Do programowania używaliśmy PonyProgVersion 2.02c Beta do ściągnięcia za strony http://www.LancOS.com, programowany procesor - Atmega16 umocowany w zestawie uruchomieniowym z Nowego Elektronika (programator STK200/STK300 - zestaw do montażu...
(at)ElektrodaBot Nasunęły mi się jeszcze dwie kwestie podczas naszej rozmowy: 1) W listingu ISO week użyłeś linii dayOfYear += 28 + (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); zabiegu, który ja od dawna stosuję eliminując, gdzie możliwe instrukcje warunkowe. Jestem przekonany, że procesorom i uC łatwiej się liczy niż skacze po adresach...
Witam Są Arduino na 3,3V , mam takowe, chyba nazywają się Arduino Pro Mini. 5V na Uno wymusza zastosowanie kwarcu 16MHz, przy tej częstotliwości Atmega nie wyrabia z zasilaniem 3,3V, w wersji 3,3V jest kwarc 8MHz. Drugie przekłamanie to brak w tabelce złącza I2C w Arduino Uno, jak żywo w moim jest i używam wyświetlacza z tym złączem, a I2C Scanner znajduje...
Posprawdzam jeszcze dokładnie timingi układów które mam i jeśli nie będzie przeciwwskazań, to spróbuję programator zrobić i przetestować Jeśli ktoś będzie próbował bawić się pamięciami równoległymi to jest pewne przeciwwskazanie, o którym nie pomyślałem na początku: XMEM (przynajmniej w 162) nie ma sprzętowego wsparcia sygnału !CE. Nie zawsze jest...
Jak każdy człowiek mogę się mylić ale musisz wiedzieć że Atmel liczy położenie danego bajtu z słowach (dwa bajty= word itd..) Tak w ogóle to w word można zawrzeć najwięcej 65536 wartość co odpowiada 64kB.. MAKS Żeby adresować cokolwiek więcej to już wiadomym jest że zwykłe Word nie wystarczy. Nie wiem czy wiesz ale Bootloadery umieszcza się na samym...
No ja rozumiem ze właśnie w tym jest problem. Mam te funkcje: [syntax=c]bool LCD_PutText(uint8_t x, uint8_t y, char *txt) { LCD_trans *trans=malloc_re(sizeof(LCD_trans) + strlen(txt) + 2); bool ret=LCD_PutText_B(x, y, txt, trans, true); return ret; } bool LCD_PutText_B(uint8_t x, uint8_t y, char *txt, LCD_trans *buf, bool autodel) { buf->cmd=LCD_Text;...
Programator: ISPcable III; Oprogramowanie: WinAVR-20070525 / AVRStudio 4.13b528/SP1b577 Przy programowaniu wybieram opcje programatora: STK500 or AVRISP. Wszystko było w porządku dopóki program nie przekroczył 50 % pamięci. Po przekroczeniu 50%: ---------------- Device: atmega2561 Program: 132236 bytes (50.4% Full) (.text + .data + .bootloader) Data:...
Xmega obsłuży do 16MB RAM ? To byloby świetnie - jeszcze ich nie stosowalem. Czy ktoś ma schemat jak to podłączyć do procka ? EEprom i Flash nie moze byc, to ma być szybka normalna ram widziana najlepiej jako przestrzeń adresowa lub szybka szeregowa RAM.
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ę...
(at)ElektrodaBot Otwieram twój kod schematu kicad i zamiast zawartości otwiera mi się pusty arkusz bez symboli , potrzebne są jeszcze odwołania do bibliotek symboli kicad. Bezpośrednia odpowiedź Pusty arkusz oznacza, że KiCad nie znalazł symboli użytych w pliku `.kicad_sch` – program wyświetla wtedy tylko tło. W KiCad ≥ 6 symbole nie są już przechowywane...
Witam serdecznie wszystkich w nowym roku. Mam problem z bootloaderm napisanym w GCC. Zasada jego działania jest następująca: po resecie przez sekundę ma skanować port szeregowy i jeśli nadejdzie znak "0xaa" to rozpoczyna odbieranie paczek po 256bajtów i zapisuje je do FLASH'u. Kod źródłowy jest następujący: #include <avr/io.h> #include <avr/boot.h>...
http://obrazki.elektroda.net/6_117905757... Przedstawiam konstrukcję zupełnie nowego programatora cartridge'y do konsol Gameboy Classic, Pocket i Color. Programator GB Cart Flasher umożliwia zgrywanie gier z cartridge'y, zgrywanie i wgrywanie save'ów, a także programowanie odpowiednio zmodyfikowanych cartridge'y napisanymi przez nas grami i programami....
(at)trebuch1 A tak ogólnie to lepiej użyj nowych AVR, np. ATMega480x lub AVR Dx, Ex - one mają płaską przestrzeń adresową i nie jest potrzebne używanie żadnych modyfikatorów.
Nie do końca są dwie możliwości takiego działania pierwsza to OS czyli własny system operacyjny , druga to tak napisany boot-loader ,który ładuje sekcję aplikacji z karty SD producent podaje że można to zrobić 10000 razy dla flash co nie jest wcale taką małą liczbą i w przypadku nawet 10 krotnego kasowania układy w ciągu dnia daje to praktycznie 3 lata...
Będziesz mógł wgrywać program , możesz potem wgrywać inne, zmieniać itp. Jeśli bootloader wgrał się poprawnie to zrób sobie test wgrywając przykładowy program Blink. Oczywiscie, jeżeli potrafił wgrac bootloader to także będzie można wgrac dowolną ilosc kolejnych programów. Problem wyniknie gdy zechce ‘blinkac’ tym programem. Zamiast blinków...
Teoretycznie mozliwe Nie teoretycznie. Praktycznie. A bootloader byłby prosty - weryfikowałby tylko podłączenie pamięci zewnętrznej i przy pozytywnym wyniku ładował jej zawartość do flasha, a następnie skakał pod odpowiedni adres pamięci uruchamiając "aplikację". Niemniej nawet taki prosty bootloader wygląda na coś poza możliwościami autora :)
ak do memory settings dodam typ Sram z nazwą .xram adres 0x08110 Bo to nie jest poprawny adres RAM i dlatego linker myśli, że to kolejny segment wewnętrznej pamięci FLASH mikrokontrolera. AVR ma architekturę Harvardzką i trzeba odróżniać różne typy pamięci. Dlatego w toolchainie dla AVR przyjęto, że RAM musi zaczynać się powyżej określonego adresu...
http://obrazki.elektroda.pl/1051495700_1... Tysiące mililitrów kawy, setki demotywatoro-godzin, kilkadziesiąt „THE NIGHT OF CODE” i o to jest. Przed Państwem zielona płytka i kilka układów scalonych! Wstęp Nadeszła chwila w której, chciałbym zaprezentować mój projekt szerszej grupie elektroników. Od jakiegoś czasu, w przerwach...
Witam. Ten uC posiada tylko 512 bajtów SRAM. Jest to niestety niezbyt wielka ilość. Najprawdopodobniej wykorzystujesz pamięć w pełni i dlatego program się sypie. Zwróć uwagę na to, że zmienne, tablice i ciągi deklarowane w programie umieszczane są właśnie w pamięci ram, do tego jeszcze skompilowany program używa pamięci jako stosu. Im więcej zagłębień...
adres flash atmega adres flash atmega
satel integra guard radio skodzie odciąć wtrysk paliwo
krzywe ściany polecane lutownice
Błąd E68 w piecu Lozamet Thirode - przyczyny i rozwiązania Bezpiecznik prawego stopu w Peugeot Partner Tepee 2017