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...
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...
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ć...
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 ?
Wpadłeś w pułapkę liczb ze znakiem, domyślnych konwersji i Undefined Behaviour (UB) za jednym zamachem. [syntax=c]wartosc32 = (FLASH_0_read_eeprom_byte(addrEE)<<... | (FLASH_0_read_eeprom_byte(addrEE+1))<... | (FLASH_0_read_eeprom_byte(addrEE+2))<... ; [/syntax] kiedy wykonujesz taką operację to FLASH_0_read_eeprom_byte(.adres) jest...
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...
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....
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
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...
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
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...
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...
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...
O, wielkie dzięki! :) To może zapytam przy okazji o budowę adresu, bo tutaj też mam pewne wątpliwości. A widzę że Kolega w temacie :) W niektórych notach, w tabelce Serial Programming Instruction Set, w polach adresu jest tylko podane "adr MSB" i "adr LSB". W niektórych (np Attiny2313) te dane są pokazane w postaci binarnej i tam widać co gdzie należy...
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...
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.
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 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...
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....
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
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].
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...
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.
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...
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...
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ć?...
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...
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...
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...
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...
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ś...
>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?...
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ć,...
adres flash atmega adres flash atmega
schemat spawarki rockworth antena dookólna modemu zanussi serwisowy
wyważanie prania przed wirowaniem generator funkcyjny
Uszkodzone gniazdo haka holowniczego a czujniki parkowania Mazda Dwuteownik IPE 220, HEB 160 czy HEA 200 do podparcia ugiętego stropu betonowego 5x5m