Dobra już mam tego doka :) A te wyświetlacze będziesz multipleksował ? Ile ich będziesz podłączał ? One mają wspólne katody, anody ?
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.
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
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ś...
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...
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...
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.
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...
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...
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....
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....
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...
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...
Witam Mam połączoną pamięć Flash AT45db161b z uP Atmega128. W poniższym programie dokonuje zapisu liczby 0x44 do Flash'a, jednak gdy potem odczytuję pamięć to zz=0xFF Czy coś może być nie tak w adresowaniu ? (od razu mówię, że jestem początkującym programistą uP i połączenie Flash'a z uP jest raczej ok) #include <avr/io.h> #define PORT_SPI PORTB...
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...
Hej. W nocie nie bardzo potrafię zrozumieć jak używać komendy "load extended address byte" przy adresowaniu pamięci flash większych jak 128kB (64K word) - może dla tego że praktycznie w ogóle tego nie wytłumaczyli :( Napisano jedynie że bajt ten służy do wybrania kolejnego "sektora" o wielkości 64Kword. Mam rozumieć że gdy w najmłodszy bit tego bajtu...
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...
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
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...
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ą.
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...
LcdTxt(pgm_read_byte(&tablica1),19,1,0) LcdTxt przyjmuje adres do ciągu znaków, a Ty jeden bajt próbujesz podać. Po prostu musisz stworzyć odmianę funkcji LcdTxt która jako argument przyjmie adres do Flasha. Takie uroki AVRów. Pozatym zapis &tablica1 nie ma sensu, albo tablica1 albo &tablica1[0].
Nie 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...
Kol. Autor pozwoli że doradzę coś ze swojego podwórka bo w swoim czasie borykałem się z wielopoziomowym menu. W moim przypadku zrobiłem to tak(po drodze założenia): załóżmy że menu ma 3 poziomy z czego ten najniższy kończy się wykonaniem konkretnej procedury a dwa poziomy po drodze to nic innego jak prompt-y których działanie sprowadza się kolejnych...
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...
Nie, w taki: getfaraddress(Picture++). Niestety, wywala błąd: error: lvalue required as unary '&' operand przy takim użyciu: Rozdziel to: Dodano po 3 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,...
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ć?...
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...
Ad.1 Odpowiedź ze strony producenta : DataFlash® is the world's number one selling serial interface flash family. Introduced in 1997, Atmel's Dataflash families (45 series and the recently introduced 26 series) are feature rich, low pin count, sequential access families ideal for program code, data storage, Serial EEPROM replacement, and the next...
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...
Raczej to jest nie bardzo możliwe, gdyż nie znamy adresu spod jakiego jest zapisywana strona. Możliwe że jest coś na ten temat w datasheet.Ewentualnie trzeba by po pierwszym zapisie strony wysłać cała zawartość RAM procesora prze uart. Może trochę żmudne ale powinno być skuteczne. Wtedy będzie porównanie co tak naprawdę jest zapisywane do flash.
portB 7-d7 portB 6-d6 portB 5-d5 portB 4-d4 PortB 0-Rs PortB 2-E Rw-Gnd Taktowanie procesora 16mhz [syntax=c]//----------------------------... // *** Obsługa wyświetlaczy alfanumerycznych zgodnych z HD44780 *** // // - Sterowanie: tryb 4-bitowy // - Dowolne przypisanie każdego...
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:...
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,...
(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...
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...
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...
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)...
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ć,...
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
Można użyc ich jako wstawek asemblerowych, bo ja piszę w C? Myślisz, że zatrzask 74HC573 wydoli dla Atmegi128L(3.3V,8MHz)? Czy może zaopatrzec się w wersje AHC? Jak najbardziej można operować asemblerem i w sumie jest to dość przejrzyste (trzeba sobie zmontować proste wstawki przeładowania zmienna<->RAM. Sorry za brak szczegółów co do samego...
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...
Wiec od konca. Adresy pamieci FLASH, EEPROM i SRAM pokrywaja sie. W zwiazku z tmy istnieja inne instrukcje assemblera umozliwiajace dostep do FLASH i SRAM. EEPROM nie jest mapowany w przestrzen adresowa procesora, do niego dostep odbywa sie za pomoca specjalnych rejestrow (z wyjatkiem XMega, gdzie EEPROM jest w przestrszeni adresowej). Dlatego nie istnieje...
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
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:...
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...
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ć...
Witaj! Nie musisz pisać deklaracji .DW. Możesz pisać deklaracje .DB. musisz pamiętać że Flash kontrolera to 2 bajty poj jednym adresem. Zapraszam do lektury http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/resources/prod_... Nie ważne jakiego kompilatora uzywasz gdyż jest dla danej rodziny kontrolerów...
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...
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...
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...
http://obrazki.elektroda.pl/8472920100_1... Witam! Jakiś czas temu zacząłem bawić się procesorami AVR. Jako programatora wykorzystywałem moduł FT232. Po jakimś czasie gdy zacząłem ów moduł wykorzystywać również do transmisji danych między procesorem a komputerem (UART) pomyślałem, że aby zmniejszyć kabelkologię (FT232 podłączony jako...
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ę...
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 ?
Po pierwsze twój pomysł jest raczej nietrafiony. FLASH zapisuje się stronami, co jest niewygodne do przechowywania danych przychodzących w pakietach innych niż wielokrotność strony. Ale co gorsze, ilość zapisów do FLASH jest ograniczona do około 10tys. Więc zupełnie nie nadaje się do przechowywania szybko zmieniających się danych. Już lepiej zastosuj...
>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?...
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...
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...
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...
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...
Karty Compact Flash w trybie podstawowym pracują w standardzie interfejsu PCMCIA, czyli funkcjonują jak dysk. Istnieje możliwość ustawienia interfejsu w standardzie szyny pamięciowej i wtedy karta ta będzie funkcjonowała tak, jak normalna kość pamięci. Jest tylko jeden problem - trzeba się przedrzeć przez PDF-a i zbudować prosty interfejs ustawiający...
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...
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ś...
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...
Zastosowałem Twoje wskazówki ale jest jedno ALE. Oto poprawiony kod: [syntax=c] /* * Watchdog_C.c * * Created: 2018-03-04 08:07:00 * Author : Jakub */ #include <avr/io.h> #include <avr/wdt.h> #include <avr/interrupt.h> #include <stdlib.h> #include <stdio.h> #include "hd44780.h" __attribute__((naked)) __attribute__((section(".init3")))...
kol atom w avrstrudio w opcjach projektu definiujesz sobie segment w pamięci Flash i nazwie .bootloader oraz adresie zależnym od ustawienia fusów. Natomiast w programie w obsłudze bootloadera tę część kodu która odpowiada za jej obsługę wpisujesz np coś takiego BOOTLOADER_SECTION void boot_loader(void){ i wszystko co się za tym znajduje...
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>...
Witam.. Złozyłem cały zegar i co teraz? wgrałem bootloadera ustawiłem fusbyt poprawnie ale cos nie poszlo chce znowu sprubowac wgrac i niewiem jak bo teraz niechce mi zczytac nazwy procka po wcisnieciu READ SIGNATURE:( mimo ze sa te same ustawienie to go nie widze w programie "ISP Programer" ale za to jak wybiore z listy procek AT89S53/9252 to wyskuje...
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...
W książce jest jak byk napisane: Dodano po 1 Post pod postem ale przynajmniej ktoś zobaczy, że działam/ walczę nadal ale bez efektu. Zmieniłem opcję linkera na: -Wl,--section-start=.text=0xF000 no i teraz program update kończy się sukcesem, że niby pomyślnie zaktualizowano procesor ale flash od adresu 0x0000 jest pusty (same 0xFF). PS. Co tak na prawdę...
(at)tronics IMHO układy typu ATMega256 nie mają sensu. Skomplikowana adresacja, jednocześnie zwykle przy takiej ilości FLASH chce się nieco większą moc obliczeniową lub więcej RAM, peryferia też nie są mocną stroną rodziny ATMega. IMHO ciekawie wyglądają nowe ATTiny - niby mają byc prostsze niż ATMega, a nowa rodzina ma zaawansowane peryferia z XMEGA...
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...
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...
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...
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;...
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...
Ok - ale ja właśnie myślałem, że to powinien pokazać mkAvrCalculator - że te fusebity oznaczają że uC spodziewa się zegara np. 16MHz. A nie pokazuje nic, stąd moje zdziwko. Dla twojego większego zdziwienia: żaden FuseBit Calculator nie wskazuje na konkretną częstotliweśc powyżej 8 MHz. Porównaj z : http://www.engbedded.com/fusecalc/ Masz tam tylko...
Tak na moje oko to te dane raczej chowa się w eepromie niż we flash-u ? Jak słusznie ktoś zauważył zamiast łamac sobie tym głowę ile razy można ... to temat bardzo męski :) lepiej jest zachować je w zewnetrznym eepromie i mieś sprawę z głowy. Albo też trzymac je w ram-ie i dokoptować układ który tuż przed spadkiem napięcia związanym z wyłaczeniem zasilania...
FTDI+Flash Loader Demo(v2.80)+wgrywam boot20_pc13.bin Aaaa. Czyli przez UART, zworki itd. . Tej informacji mi brakowało. To ok. W STM32 wgranie bootloadera jest identyczne jak każdego innego samodzielnego programu, bo w zasadzie niczym się od nich nie różni. Wgrałeś, wystartował i chodzi tak jak go autor napisał. Trudno mi się wypowiedzieć w kwestii...
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...
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 :)
Witaj Lulubella . Co prawda zbyt wiele Ci nie pomogę (sam sie uczę ASM), ale jednak lepsze coś niż nic. A więc zacznijmy od początku. Niezbędnym dla rozwiązania Twego problemu jest utworzenie tablicy 100-tu element owej w pamięci flash mikrusa. Oto ta tablica .org $2500 oznacza umieszczenie tablicy od adresu 2500 * 2 Teraz przyszedł czas na odczytanie...
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. Od dłuższego czasu męczę się nad rozgryzieniem pamięci DataFlash AT45DB011. Jest ona w module MMmega02 podłączona pod SPI mikrokontrolera Atmega128. Jak narazie udało mi się odczytać wartości z pamięci, jednak nie mogę nic zapisać i nie mam pojęcia dlaczego. Wartości jakie mi się wyświetlają na wyświetlaczu to "255 255 255". W załącznikach podaje...
artur134, Nigdy nie używałem pamięci DataFlash, widzę, żę Twój sterownik jest przygotowany na 2 połączone ze sobą kości. Ja mam tylko jedną, w dodatku nie wersję B tylko D, czyli AT45DB041D , czy ta różnica jest istotna? Przeczytałem w dokumentacji, że ten mój DataFlash ma: User Configurable Page Size –256 Bytes per Page –264 Bytes per...
Do pamięci takiego samodzielnego programatora trzeba przepisać pliki hex flash i eeprom oraz dane fuses i procesora. Czy spotkał ktoś opis jak wygląda ich mapowanie? Chodzi mi o adresy początkowe plików, czy są różne czy stałe? Chciałbym taki programator zrobić ale na razie nie spotkałem żadnego opisu na początek. N.
poczytaj sobie o strukturze wewnętrznej AVRków - jak są adresowane i jakie są możliwości dostępu czy to do pamięci EEPROM, RAM oraz FLASH - to dowiesz dlaczego nie można użyć zewnętrznego EPROMA o którym piszesz jako rodzaju zewnętrznej pamięci programu bo o to zapewne ci chodzi. To jest całkowicie bez sensu - jeśli potrzebujesz więcej pamięci programu...
Adresy urządzeń najlepiej zapisywać jako stałe preprocesora, a makra dostępu do rejestrów opierać właśnie o ten jeden adres (ewentualnie stworzyć strukturę i zrobić makro lokujące ją na stałe w przestrzeni).. coś w rodzaju: #define BASEADDR 0xFF00 #define rtl_io8(addr) (*(volatile u8*)(BASEADDR + (addr))) #define...
Witam.Chciałbym zasięgnąć porady bardziej doświadczonych kolegów w sprawie programowania AVR.Chce zapisać flash atmegi64 za pomocą SPI.Pamięć flash jest podzielona na 256 stron po 128 słów.Przeglądam tabelkę SPI Serial Programming Instruction set i nie wiem czy dobrze zrozumiałem ze aby programować muszę ustawić adres wewnątrz strony komenda Write Program...
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...
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.
Częsciowo sobie sam odpowiem bo o pewnych rzeczach po prostu nie wiedziałem: wpisując adres do mega48 D9E4 trochę nabroiłem: D9E4 to liczba szesnastkowa word, czyli binarnie 1101 1001 11 1 00100, i tak pierwsza część 8 znaków to low bits drugie 8 to high bits. Teraz tak: bity zaznaczone na zielono to kolejno nr 3,2,1,0 odpowiadają za wybór zegara, i...
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ć...
M128 ma więcej rejestrów do ustawiania z uwagi na rozmiar pamięci flash adresowany 17bit... z jakiej pamięci są pobierane dane do wyświetlenia ? Jakim programatorem jest to programowane ? Starsze wersje firmware w USBasp miały kiedyś z tym problem i należy aktualizować...
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 ponownie, dziękuję za odpowiedzi. (at)megao Sprawdziłem z ciekawości dzisiaj zapisywanie EEPROMu z poziomu programu dla AVRa (z racji, że cierpię na chroniczny brak czasu zrobiłem to dopiero teraz). EEPROM działa poprawnie (tj. zapisana liczba zostaje w EEPROMie). Przykładowo, wiem, że pierwszy bajt (często sporny bajt o adresie 0 z którym sporadycznie...
Przepraszam że nie potrafię tego wyjaśnić ale to nie ja pisałem ten program. Mam taki kod: http://obrazki.elektroda.pl/4548415200_1...
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...
adres flash flash atmega atmega flash
schemat lampy sygnalizacyjnej whirlpool zasilacz seicento klema
domofon hikvision liebherr zamrażarka
Rurka w czajniku elektrycznym: jak działa? Laser w pile ukośnicy Rywali świeci, ale nie wyświetla linii cięcia