tag:blogger.com,1999:blog-3960927205450249158.post7387622319100078019..comments2024-03-28T09:15:15.977+01:00Comments on mikrokontrolery avr język c, poradniki, kursy video - eagle: Tablica wskaźników we flash ( PROGMEM ) Atmel toolchainmirekk36http://www.blogger.com/profile/11690797724225993397noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-3960927205450249158.post-28224417935923600962018-03-19T18:39:39.461+01:002018-03-19T18:39:39.461+01:00Ja tam Panu Mirkowi w programowaniu nie dorastam d...Ja tam Panu Mirkowi w programowaniu nie dorastam do pięt... ale na tyle co już wiem. Skoro błędy zaczynają ci się sypać przy PROGMEM to czy zainkludowałeś bibliotekę ""?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-69183539255681938672016-05-31T23:25:59.074+02:002016-05-31T23:25:59.074+02:00SUPER podpowiedź! ;)SUPER podpowiedź! ;)mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-54986331554498458572016-05-31T21:09:04.765+02:002016-05-31T21:09:04.765+02:00W nowszym gcc można to uprościć:
__flash const ch...W nowszym gcc można to uprościć:<br /><br />__flash const char * __flash const MenuItemPointers[] = {<br /> (__flash const char[]){"Mirek"},<br /> (__flash const char[]){"Tomek"},<br /> (__flash const char[]){"Atnel"}<br />};<br /><br />Przy okazji pozbywamy się makr pgm_read_wordAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-86661373436129872532016-01-31T13:19:54.943+01:002016-01-31T13:19:54.943+01:00Bez urazy, aleś kolego teraz "namiąchał"...Bez urazy, aleś kolego teraz "namiąchał" tym opisem ! ;) masakra .... no masakra .... <br /><br />Zrób albo działaj zgodnie z tym co opisałem i będzie w porządku. A CAŁKIEM innym zagadnieniem jest jak dobierać się do danych .... o czym akurat w tym poradniku nie pisałem ;) a to też trzeba dobrze robić i to tyle.mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-53823678159072514592016-01-31T13:15:17.291+01:002016-01-31T13:15:17.291+01:00A to ja miałem jeszcze inaczej
miałem wszystko źle...A to ja miałem jeszcze inaczej<br />miałem wszystko źle gdy miałem:<br /><br />unsigned char tab0[3] PROGMEM = <br />{<br /> 0x00, 0x01, 0x02<br />};<br /><br />unsigned char tab1[3] PROGMEM = <br />{<br /> 0x02, 0x01, 0x00<br />};<br /><br />unsigned char* tab[2] PROGMEM = <br />{<br /> tab0, tab1<br />};<br /><br />i to nie chodzi o ten const, jak to ten atmel toolchain wymaga, ale chodziło o to, że jak odczytywałem bajty z flasha za pomocą pgm_read_byte to podawałem adres tab[0] czyli tak w zasadzie tab0<br />ale problem był taki, że jak miałem przy tej tablicy tab słowo PROGMEM to mi odczytywał w ogóle jakieś bajty z palca wyssane. Podejrzewam, że ta tablice tab wrzucił do flasha, a nie miał jej wrzucać i odczytywał bajty z tej tablicy i może jakbym dwa razy użył pgm_read_byte to wtedy by to działało. A tak to wywaliłem z tablicy tab PROGMEM i wszystko śmiga. Ta druga tablica tab ma przechowywać adresy innych tablic w pamięci FLASH i ona ma żyć w programie a nie we flashu. atrybut PROGMEM ma iść tylko do tych tablic tab0 i tab1Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-26559175387872368132016-01-15T13:33:10.492+01:002016-01-15T13:33:10.492+01:00Nie zauważyłem ? .... tylko kolega ma prawo się po...Nie zauważyłem ? .... tylko kolega ma prawo się pomylić ? mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-20838656727344341762016-01-15T13:27:37.281+01:002016-01-15T13:27:37.281+01:00Panie Mirku, przecież napisałem, że stworzę post n...Panie Mirku, przecież napisałem, że stworzę post na forum i tak też uczyniłem. Po co ta złośliwa tyrada? Ma mi być teraz głupio, że zadałem pytanie? Litości...Anonymoushttps://www.blogger.com/profile/16725353051614841986noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-44218612830239175812016-01-15T13:10:29.951+01:002016-01-15T13:10:29.951+01:00No dobrze ale powiedz mi co ja mam tobie powiedzie...No dobrze ale powiedz mi co ja mam tobie powiedzieć ? No sorki jasnowidzem nie jestem i nie widzę ani twojego kodu ani błędów jakie masz. Zastanów się proszę - jak można tak zadawać pytania w ogóle ? ... tracimy czas - nie sądzisz ?<br /><br />Co za problem - jeszcze raz powtarzam opisać wszystko dokładnie ale na forum, pokazać co robisz i jakie masz błędy ... wtedy można coś pomóc - a ty chcesz żeby zgadywać ?mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-30811277746796273522016-01-15T12:44:16.429+01:002016-01-15T12:44:16.429+01:00Panie Mirku, próbowałem każdej możliwości z tej st...Panie Mirku, próbowałem każdej możliwości z tej strony. Tej na końcu strony również (jak wyświetlić na ekranie LCD), wszystko mam dokładnie tak samo. Zawsze dostaje krzaki (tylko inne, przy każdej możliwości). Mam wersje Eclipse z pierwszego wydania bluebooka, Atmega32, programuje AVRUSBmkII. Założę odpowiedni post na forum, żeby składnia była ok.Anonymoushttps://www.blogger.com/profile/16725353051614841986noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-44542954014109732112016-01-15T12:35:48.405+01:002016-01-15T12:35:48.405+01:00Powycinało ci mówisz .... - bo takie pytania to si...Powycinało ci mówisz .... - bo takie pytania to się panie kochany zadaje na forum a nie na blogu - tu nie ma prawidłowego formatowania kodu w odpowiedziach. <br /><br />Poza tym wyżej (pod koniec artykułu pokazuję jak sobie z tym radzić a ty robisz odwrotnie i to kompletnie inaczej i dziwisz się, że ci nie dział :( ... Ja się nie dziwię, że ci nie działa ............ cóż mogę ci poradzić ??? hmmm przeczytaj proszę ten artykuł pod którym zrobiłeś swój wpis ... znajdziesz odpowiedź na swój problemmirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-73971136625983014312016-01-15T12:30:57.210+01:002016-01-15T12:30:57.210+01:00Powycinało mi treść stringów! Oczywiście w zmienny...Powycinało mi treść stringów! Oczywiście w zmiennych gpx_N są jakieś teksty.Anonymoushttps://www.blogger.com/profile/16725353051614841986noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-53984737354999572722016-01-15T12:30:04.981+01:002016-01-15T12:30:04.981+01:00Ten komentarz został usunięty przez autora.Anonymoushttps://www.blogger.com/profile/16725353051614841986noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-74639213668582602482015-12-01T14:39:43.241+01:002015-12-01T14:39:43.241+01:00"- trzeba po prostu uspokoić kompilator podaj..."- trzeba po prostu uspokoić kompilator podając mu środki uspokajające w postaci kolejnego specyfikatora const tuż przed nazwą tej zmiennej ;) o tak:"<br /><br />:D GCC zjedz snickersa tj. consta bo zaczynasz gwiazdorzyćAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-54765014848865284232015-10-06T16:00:57.686+02:002015-10-06T16:00:57.686+02:00Witam!
Generalnie to C (c++) jest jezykiem do masz...Witam!<br />Generalnie to C (c++) jest jezykiem do maszyn von neumana a większosć mikrokontroleów to maszyny o architekturze Harvard. I ta druga zakłada oddzielne przestrzenie na program i dane. Tak że żeby to pogodzić to trzeba cos kompilatorowi powiedziec. I tyle. Taka szybla konwersja z Harvard na Von Neuman albo vice versaAnonymoushttps://www.blogger.com/profile/09343347386374434839noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-40392235232536981582015-08-25T11:37:13.713+02:002015-08-25T11:37:13.713+02:00Kolega widać nie za bardzo zrozumiał o co chodzi w...Kolega widać nie za bardzo zrozumiał o co chodzi w tym artykule ... a chodzi własnie o to aby pokazać jak trzymać wskaźniki we Flash - nie ważne czy szybciej z RAM czy z FLASH - czasem bywa że i tak potrzebne są we FLASH a warto wiedzieć JAK to zrobić - a nie co będzie szybsze. Bo chyba sprawą dość oczywistą jest że z pamięci RAM będzie szybciej ;)mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-43041435885384671042015-08-25T11:25:07.778+02:002015-08-25T11:25:07.778+02:00z tego co widzę , napisy są we flashu ale tablica ...z tego co widzę , napisy są we flashu ale tablica wskaźników do nich też jest we flashu, trzeba dwa razy użyć "pgm_read_word" (tutaj chyba drugie użycie ukryte w "lcd_str_P "?)<br />lepiej jest trzymać wskaźniki w RAM odczyt flasha jest dużo dłuższy niż ram (jedna lub dwie instrukcje)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-43283221143109210522015-02-13T13:21:29.063+01:002015-02-13T13:21:29.063+01:00No dobrze, a jak mamy w taki sam sposób zdefiniowa...No dobrze, a jak mamy w taki sam sposób zdefiniowane ciągi liczb zamiast znaków?Chodzi o kilka tablic z liczbami, do których pointery też są w tablicy. Jak to potem przeczytać, adresując tablicę, oraz czytać liczbę po liczbie? Właśnie nigdzie nie mogę tego znaleźć a wszędzie są przykłady dla stringów.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-68813179033726767982013-12-29T11:25:37.084+01:002013-12-29T11:25:37.084+01:00Sorki ale to nie za bardzo wiesz co robisz, bez PR...Sorki ale to nie za bardzo wiesz co robisz, bez PROGMEM tworzysz zmienne w RAM a nie we Flash to po pierwsze, a z takim opisem problemu <br /><br />"u mnie nie działa"<br /><br />sorki ale pomóc ci może tylko jasnowidz :(<br /><br />zamiast pisać że coś ci nie działa to opisz jakie masz błędy, warningi itp - to dopiero wtedy będzie można coś pomócmirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-82696142636470438282013-12-29T10:50:05.751+01:002013-12-29T10:50:05.751+01:00Witam, u mnie nie działą poniższy kod,
const char ...Witam, u mnie nie działą poniższy kod,<br />const char MenuItem1[] PROGMEM = "Mirek";<br />const char MenuItem2[] PROGMEM = "Tomek";<br />const char MenuItem3[] PROGMEM = "Atnel";<br /><br />wszystko jest ok dopiero po gdy jest bez PROGMEM w definicji<br /><br />const char MenuItem1[] = "Mirek";<br />const char MenuItem2[] = "Tomek";<br />const char MenuItem3[] = "Atnel";<br /><br />const char * const MenuItemPointers[] PROGMEM = {<br /> MenuItem1,<br /> MenuItem2,<br /> MenuItem3<br />};Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-52994753466213565122013-11-22T14:50:46.400+01:002013-11-22T14:50:46.400+01:00No dobrze, trochę pomieszałem. Ale wziąłem się za ...No dobrze, trochę pomieszałem. Ale wziąłem się za ponowną lekturę i teraz to widzę tak...<br />ATMEL STUDIO = ble ble fuj. Nie dotykać, lepiej eclipse.<br />ATMEL TOOLCHAIN = patch do at studio i eclipse wspierający uC firmy ATMEL<br />AVR GCC = patch do eclipse i at studio wspierający uC firmy ATMEL<br /><br />Zgadza się ?<br />Wolę tu się tego dowiedzieć ( i przy okazji narazić się na hańbę :P ) niż krzyczeć na lewo i prawo co to tam kiedyś usłyszałem. Mam nadzieję że się rozumiemy :)MrWeb123noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-3980878168167891792013-11-21T23:53:48.427+01:002013-11-21T23:53:48.427+01:00a tak - słuszna uwaga.a tak - słuszna uwaga.mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-43723173281182572352013-11-21T23:08:06.811+01:002013-11-21T23:08:06.811+01:00Zapewne również chodzi o to, że GCC ostatnie z 201...Zapewne również chodzi o to, że GCC ostatnie z 2010r. nie obsługuje nowszych procków Atmela. Toolchain oficjalny wspiera wszystkie procesory tego producenta.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-52836581063549431492013-11-21T18:32:41.376+01:002013-11-21T18:32:41.376+01:00Kolega chyba coś MEGA ŹLE zrozumiał z moich wypowi...Kolega chyba coś MEGA ŹLE zrozumiał z moich wypowiedzi. NIGDY i NIGDZIE nie przestrzegałem nikogo przed toolchainem atmela. To już niestety wytwór wyobraźni kolegi ;) <br /><br />Ja jedynie mówiłem, że początkującemu, który zaczyna z typowymi prockami AVR jak najbardziej wystarczy stary pakiet WinAVR i wszystko będzie działać w najlepszym porządku. I jeśli się nie ma doświadczenia to warto nawet jeszcze na razie od tego zacząć bo będzie mniej kłopotów.<br /><br />Ale jeśli ktoś chce od razu przejść na Atmel toolchain to proszę bardzo są nawet poradniki na moim blogu jak tego dokonać a także na co zwrócić uwagę gdy się przechodzi bo zmienia się co najmniej kilka zasad (wymogów) kompilatora języka C<br /><br />Tymczasem tak myślę, że kolega czytając sobie zbyt pobieżnie moje wypowiedzi w różnych miejscach - skojarzył atmel toolachain z kocim ATMEL STUDIO (które rzeczywiście z pełną świadomością odradzam początkującym swoich sił w języku C dla AVR) .... ale to są panie kochany DWIE CAŁKIEM RÓŻNE RZECZY ... a ty je ładnie pomieszałeś ;)mirekk36https://www.blogger.com/profile/11690797724225993397noreply@blogger.comtag:blogger.com,1999:blog-3960927205450249158.post-64583079895616639962013-11-21T16:50:33.640+01:002013-11-21T16:50:33.640+01:00Jakie zalety ma ATMEL toolchain nad GCC ? Bo jak n...Jakie zalety ma ATMEL toolchain nad GCC ? Bo jak narazie pracuję na GCC i w książce oraz poradnikach dla eclipse przestrzegał Pan przez toolchainem Atmela. Że to dla bardziej wtajemniczonych, że to dla zaawansowanych itd. A ja (tak przy okazji tego poradnika) chciałbym się dowiedzieć w czym jest lepszy ? Oprócz tego że jest on specjalistycznym dodatkiem dla AVR'ów. Proszę nie odebrać mnie źle, proszę tylko Pana o wyjaśnienie mi różnicy po między tymi dwoma toolchainami. :)MrWeb123noreply@blogger.com