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
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...
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.
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...
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...
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....
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...
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...
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...
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...
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...
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...
To właśnie te staruszki AT90S są programowane bajt po bajcie. Mam to też zrobione, ale po prostu nie zauważyłem że komenda "write program memory" ma identyczną wartość co komenda "load program memory page". Istnieje jeszcze inny sposób na sprawdzenie czy zapis się zakończył, komenda "Poll RDY/BSY" F0h 00h 00h data out Gdzie najmłodszy bit w data out:...
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ą.
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
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
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...
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...
Z tego co ja wiem, sprawa wygląda tak: usbasp owszem nie ma już ograniczenia na rozmiar adresu przesyłanego po usb (moja łatka z przed iluś tam lat), ale jeszcze będę musiał dorobić wysyłanie po SPI komunikatu aktualizacji górnej części adresu. Roboty z tym dużo nie ma, ale potrzebuję mieć możliwość przetestowania kodu co będzie się wiązało z wgrywaniem...
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,...
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...
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...
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...
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...
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...
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...
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.
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...
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...
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...
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...
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...
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...
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...
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...
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)...
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...
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ć,...
Podczas programowania procka ATmega8535 programatorem STK200/300 wyskakuje mi w Bascom'ie komunikat "Difference at 0180", czyli różnica o... 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...
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
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ć...
Chyba jest już późno bo nie widzę w podanym linku możliwość lokowania pod określonymi adresami danych, a jedynie możliwość odczytywania danych z pamięci Flash.
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:...
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ć...
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...
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...
Poświęciłem na to kolejne próby parę godzin i niestety bez efektów. Ostatecznie poskładałem obraz pamięci, tak żeby zobaczyć czy w ogóle mcu będzie startował, pod wskazany adres(0x0AA0) wrzuciłem program, który bootloader miał uruchamiać, program kompilowany z parametrem (Flash Segment .text=0x0AA0) BOOTEND i APPEND ustawiona na 0, ale za nic to nie...
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...
A mógłbyś się odnieść jeszcze do zamieszczonego programu? Jest prosty i wydaje się poprawnie napisany (no oprócz tego cli() o który powiedziałeś post wyżej, ale nie używam w tym kodzie przerwań) a mimo to napis "Uruchomienie watchdoga" nie wyświetla się co 1 s. Następuje tylko jedno wyświetlenie przy starcie programu a później nic... W ogóle mam jakieś...
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...
Podczas programowania nie ma problemu... chodziło mi raczej czy jak będę korzystał z pamięci to programator nie zgłupieje i np. nie zapisze mi czegoś do flash'a(mikrokontrolera) niepotrzebnie... W takim razie czekam dalej na pomoc w używaniu tej pamięci... //Może kostka jest walnięta ... mógłby ktoś sprawdzić dla mnie kod z pliku poniżej? Podłączenie...
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 ?
Nie zrozumieliśmy się ;] Mi chodzilo o to, czy kompilator sam pilnuje dostępu na dane spod wskaznika w wypadku: jeden raz generując asma uzywającego dostępu do RAM, to co zrobi kompilator, trafiajac na przypadek nr 2? Wygeneruje niejawnie drugą, 'identyczną' funkcję tyle ze uzywajaca instrukcji dostępu na flash? Logiczne by było, ze wskaznik, ktory...
Piszesz o płaskiej przestrzeni adresowej która występuje w megaAVR seri0, AVR DA, AVR DB i tinyAVR seri 1. Czy dobrze rozumiem jak to działa: - żeby zapisać zmienną dajmy na to we Flash dalej musimy makrodefinicji PROGMEM (lub jakoś inaczej poinformowac kompilator pod jakim adresem na znajdowac się zmienna. Kompilator musi w jakiś sposób wiedzieć o...
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...
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:...
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ś...
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...
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...
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 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ę...
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...
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...
Próbuję przeanalizować kod samplowy: $crystal - częstotliwość rezonatora $baud - prędkość transmisji po UART $regfile - deklaracja typu procesora b). konfiguracja automatyczna na podstawie wybranego uP: Loaderchip - stała - deklaracja, jaki uP będzie wykorzystany W zależności od tego ustawione zostaną zmienne: $loader - adres pod jakim znajduje się...
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...
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...
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...
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...
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...
(at)winio42 Nie czuj się 'zaburczany', tylko postaraj się spojrzeć na zadanie od strony funkcjonalnej, a nie od strony przyzwyczajeń czy osobistych preferencji. Atmega do tego projektu się nie nadaje. Dużo lepszym wyborem będzie kupienie taniej platformy rozwojowej typu Discovery (z rdzeniem F7, F4, ewentualnie L4), na której masz wszystko co trzeba...
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...
(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...
Witaj Kolego. Nie bój się nowych rozwiązań. Tak jak moi przedmówcy napisali dallasa możesz puścić na jednej linii tyle że będziesz musiał dorobić adresowanie układów i ich detekcję (to chyba jest najtrudniejsze) ale wykonalne. Klawiaturę to jest kilka możliwości albo przycisk do portu jeden na jeden (kiepskie rozwiązanie) albo zrób sobie matrycówkę...
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 :)
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...
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.
Z ukladami 573 to plytka wyszlaby strasznie skomplikowana. Do kazdego trzeba conajmniej 10 sciezek poprowadzic. Do tego dekodery adresu... A dla I2C tylko dwie sciezki do kazdego ukladu... Fakt ze az 64 uklady na 1 szynie to bufor w procesorze moze sie nie wyrobic. Pewnie bedziesz musial zrobic jakis bufor zewnetrzny. Co do problemu programistycznego...
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...
A jeżeli te bity blokujące są ustawione...? Da się wówczas ponownie coś tam wgrać? Np. wgrywam krótki program na początku pamięci, który adresuje mi reszte i wystawia dane. Później ten sam program wgrywam na końcu i adresuje od początku. Później to zlepiam i mam całość. Jest to możliwe w Atmelach? Programator Dragon z Atmela warta rzecz uwagi czy raczej...
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...
adres flash atmega adres flash atmega
obrotomierz diesel polonez polonez gasnie zimnym silniku mercedes schemat dmuchawa
waveshare rs485 zalany silnik pompy hydrofor
Aktywacja sterowania głosowego w ISUDAR Rootowanie radia Isudar - jak uzyskać uprawnienia?