ATmega8 i asembler

Dec 12, 2005 18 Replies

Witam serdecznie,



Kiedy¶ robi³em cos nie co¶ na Z80 ;)...minê³o sporo lat...i chcia³bym wrócic do mikroprocesorków, a jest okazja:) Zamówi³em ATmega8 i programatorek ale chcia³bym go programowac w asemblerze. czy poleciliby¶cie mi jak±¶ ksia¿kê, wiem ¿e wydawnictwo BTC cos ma..ale jak nie moge przegl±dn±c to nie wiem co zawiera...a tak zamówiê przez internet. No i chyba jest dokumentacja na stronie atmel z lista rozkazów..ale nie dokopa³em siê... Jakie programy proponujecie, narzêdzia, jak szybko nauczê siê i z czego najlepiej..mo¿e ciekawe linki...co mo¿e mi przeszkadzac po doswiadczeniu z Z80?



pozdrawiam



elektronik..wtórny analfabeta;)



Wiesiek Olsztyn



Użytkownik RW napisał:

Witam Listę rozkazów do AVR-ów masz tutaj: ftp://ftp.control.slupsk.pl/pub/elektronika/elementy/CPU/ATMEL/AT90/AT90_Lista_Rozkazow.pdf

Z narzędzi polecam VMLAB firmy AMCTOOLS: ftp://ftp.control.slupsk.pl/pub/elektronika/programy/AVR/VMLAB/ (ostatnia wersja 3.10 i upgrade do 3.11) Jest to zintegrowane środowisko z symulatorem, który również potrafi "udawać" proste elementy elektroniczne podłaczane do procka (rezystory, kondensatory, LED-y, klawiaturę, wyświetlacz LCD, terminal itp.). Wersja demo ma ograniczenie wielkości kodu, ale do wielu zastosowań w zupełności wystarcza). AVR-ki przyjemnie programuje się w C. Jest b.dobry darmowy kompilator AVR-GCC i jego wersja przygotowana do pracy w środowisku Windows: ftp://ftp.control.slupsk.pl/pub/elektronika/programy/AVR/WinAVR/WinAVR-20050214-install.exe W pakiecie tym jest edytor, kompilator i programator.

Też sporo programowałem pod Z-80. AVR-y mają znacznie uboższą listę rozkazów (i bardzo dobrze, bo w Z-80 był to przerost formy nad treścią) ale rozkazy są dobrze przemyślane i w większości wykonują się w jednym takcie zegara, a nie tak jak w Z-80 średnio w 8-miu (rekordzistami były chyba rozkazy operujące na rejestrach indeksowych IX i IY z dodatkowym offsetem, które o ile mnie pamięć nie myli mieliły się przez 27 taktów zegara). Seria Mega posiada rozkaz mnożenia 8bit (4 takty zegara - tyle zajmowało elementarne przepisanie zawartości rejestów w Z80). Dodatkowo AVR to cały komputerek :-) Można go porównać do systemu złożonego z Z80CPU + Z80CTC + Z80SIO + Z80PIO + RAM + EPROM i EEPROM. Porównując wydajność np. z ATmega8 poganianym zegarem 16MHz to system z Z80 musiałby mieć zegar dobrze ponad 100MHz :-)

Pozdrawiam Grzegorz Kurczyk

Przy programowaniu w assemblerze bedzie Ci brakowalo przez jakis czas architektury von Neumana. AVR opiera sie o architektura harvardzka z rozdzieleniem pamieci programu i danych. Bedzie tez troche malo rozkazów warunkowych. I z tego co pamietam z80 bylo "troche szesnastobitowe". Ale za to bedziesz mial 30 rejestrów o funkcjonalnosci akumulatora, operacje mnozenia i wszystkie peryferia w jednej kosci. Poezja.

Wszelka dokumentacje i dobre narzedzie do programowania w assemblerze znajdziesz na stronie atmela.

U¿ytkownik "Grzegorz Kurczyk" snipped-for-privacy@control.slupsk.pl> napisa³ w wiadomo¶ci news:dnl3jj$ilc$ snipped-for-privacy@nemesis.news.tpi.pl...

Serdeczne dzieki :)...jeju, jak to przez 15 lat mozna siê uwstecznic....ale postaram sie pilnie nadrobic, pocieszy³es mnie co do listy rozkazów ..Z80 mia³em kiedys w paluszku;)..ale niestety, skleroza;) mam jeszcze taki system uruchomieniowy w³asnej produkcji, wejscia cyfrowe , Z80, Ram i Eprom. No i cztery wy¶wietlacze czteropozycyjne led i chyba tylko je wykorzystam do nowego procesora:)) Dziêkujê za linki do programów i pdf. A co z ksiazkami? zawsze to fajnie co¶ poczytac....albo mo¿e kto¶ mi wrzuci jakis program w asemblerze pod tego kontrolera Atmega8 do analizy z jakims opisem. Ogólnie chcê ten procesorek oprogramowac do sterowania silnikiem dosyc du¿ej mocy DC, ma modulowac szeroko¶c impulsu steruj±cego, czyli obroty silnika. Wskazywac pobierany pr±d, temperaturê, obroty i prêdko¶c pojazdu. napiêcie akumulatorów i ograniczac czas poboru pr±du przecia¿enia chwilowego silnika.

pozdrawiam

Wiesiek

Użytkownik RW napisał:

Hoho... też swego czasu maiłem wykutą na blachę listę rozkazów z Z80 i to razem z kodami hex :-)

Przy tego rodzaju zastosowaniach proponuję C. Też jestem zagorzałym fanem assemblera, ale nie należy przesadzać :-) (mnie juz powoli przeszło ;-) Oczywiście da radę to wyrzeźbić w assemblerze, ale przy większym programie idzie przy tym sfixować :-))) Osobiście stosuję rozwiązanie "hybrydowe" tzn. C i procedury assemblerowe w miejscach krytycznych czasowo gdzie walczę o pojedyncze takty zegara. Ostatnie wersje WinAVR dają naprawdę bardzo optymalny kod do tego stopnia, że w wielu sytuacjach ciężko w assemblerze wymiślić coś prostszego i działającego jakoś zdecydowanie szybciej.

Pozdrawiam Grzegorz

_Wszystkich_ rozkazów czy tylko listę oficjalną? ;->

A tak w ogóle, to Z80 fajny jest i basta!

[...]

U¿ytkownik "RoMan Mandziejewicz" snipped-for-privacy@pik-net.pl napisa³ w wiadomo¶ci news: snipped-for-privacy@pik-net.pl...

Widzia³em, ¿e do tej pory produkuje sie urz±dzenia z nowszymi wersjami Z80 na pok³adzie, które jak mi t³umaczono trudno prze¶cign±æ czymkolwiek innym, podobno to taki przemys³owy standard jeszcze.

Tue, 13 Dec 2005 00:31:59 +0100 jednostka biologiczna o nazwie "RW" snipped-for-privacy@poczta.onet.pl> wyslala do portu 119 jednego z serwerow news nastepujace dane:

Zaproponuję co innego niż koledzy: Zintegrowane środowisko - AVRStudio (do ściągnięcia ze strony Atmela) bardzo fajne, z dobrym symulatorem. Listę rozkazów razem z ich opisami masz w helpie, poza tym na stronie Atmela jest od cholery wszelakiej dokumentacji, wystarczy pogrzebać.

Do programatora pewnie oprogramowanie już masz, ale polecę na wszelki wypadek program ISPProg, autorstwa naszego grupowego kolegi:

formatting link
jest o tyle dobry że pozwala zadać własną konfigurację kabla programującego (i ogólnie jest dość poręczny, bo przeprogramowanie uC nową wersją programu sprowadza się do dwóch kliknięć - bardzo wygodne przy niekończących się poprawkach).

Użytkownik RoMan Mandziejewicz napisał:

No tylko oficjalną :-) NRD-owska wersja oznaczona jako U880D miała ich sporo więcej, ale niektóre były tak dziwne, że nie bardzo wiadomo do czego je zastosować :-)

Pozdrawiam

Użytkownik BLE_Maciek napisał:

Dawno nie bawiłem się AVRStudio. Któraś z wersji dała mi swego czasu nieźle popalić. Zwątpiłem w to co jest w dokumentacji (chyba to był AT90S8535). Program na symulatorze robił głupoty i ciągle szukałem błedu w algorytmie. Okazało się, że po wgraniu programu do procka wszystko śmiga jak należy. Czy najnowsze AVRStudio potrafi też emulować zewnętrzne środowisko procka ? W VMLAB-ie 3.11 jest możliwość tworzenia w C++ własnych bibliotek symulujących interaktywnie zewnętrzny świat uC. Porobiłem sobie przeróżne generatorki, dziwne wyświetlacze, klawiaturki, elementy dyskretne itp. Dodatkowo jest wirtualny oscyloskop, którym można wybadać co się dzieje w układzie. Choć i ten program nie jest wolny od błedów (np. niepoprawna symulacja PWM w trybie FastMode).

Pozdrawiam Grzegorz

Tue, 13 Dec 2005 21:42:52 +0100 jednostka biologiczna o nazwie Grzegorz Kurczyk snipped-for-privacy@control.slupsk.pl> wyslala do portu

119 jednego z serwerow news nastepujace dane:

Ooo nie wiedziałem że ma błędy. jak dotąd na żaden nie trafiłem.

Nie mam pojęcia. Ja mam v. 3.56 i nie umie.

Jak ktos potrafi wymienic liste rozkazow tak zeby wyszla oficjalna liczba [158 ?] to ja jestem ciekaw. Moze byc tez dla 8080.

Byl :-(

J.

Tue, 13 Dec 2005 21:52:47 +0100 jednostka biologiczna o nazwie J.F. <jfox snipped-for-privacy@poczta.onet.pl> wyslala do portu 119 jednego z serwerow news nastepujace dane:

Jest :->

Niedawno kupiłem sobie na Allegro za grosze stary terminal do kart kredytowych, model Verifone Jr XL. Super - wyświetlacz VFD, modem 300bps, fajna klawiaturka, czytnik kart

- wszystko w małym ładnym pudełeczku. Całość na Z80, a EPROMa można wygodnie i szybko wydłubać i zamienić. Aż brakuje pomysłów co z tego zrobić żeby wykorzystać wszystkie możliwości :-)

U¿ytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@4ax.com...

W pi±tek mia³em w rêku nowe urz±dzenie z Z84 na pok³adzie.

Pozdrawiam £ukasz

Użytkownik BLE_Maciek napisał:

Z tego co sobie przypominam, to chodziło o Input Capture Register na Timerze1, a konkretnie o zatrzaskiwanie stanu licznika TIMER1 w ICR wyzwalanym z komparatora analogowego. AVRStudio (któraś z serii 3.x) miało w głębokim poważaniu rejestr ICR. Nie działał ani przy strobowaniu z komparatora ani bezpośrednio z nogi ICP.

Pozdrawiam Grzegorz

Wed, 14 Dec 2005 00:53:33 +0100 jednostka biologiczna o nazwie Grzegorz Kurczyk snipped-for-privacy@control.slupsk.pl> wyslala do portu

119 jednego z serwerow news nastepujace dane:

Oki, będę miał na uwadze.

Grzegorz Kurczyk napisał(a):

(...) Problem również występuje w najnowszej wersji :( Chyba z 5 razy czytałem w dokumentacji o Timer1 (myślałem że coś źle zrozumiałem) aż nie załadowałem programu do fizycznego układu.

Pozdrawiam MD

Witam:) ja na w najwszej wersji AVR Studio mialem problem z przerwaniem od przepelnienia w liczniku 1 no i poprostu dzialy sie glupoty

Ech sorki ale mi sie za szybko wyslalo:))

no a kontynulujac to te glupoty byly takie: dziala sobie programik ktory byl bardzo prosty sprawdzal piny i reagowal na ich zmiane, licznik mial odmierzyc 0,5s. No i tu ciekawa sprawa poniewaz w symulatorze od czasu do czasu dzialo sie tak ze powrot z przerwania nastepowal w zupelnie inne miejsce niz powinien. tak jakby ze stosu sciagal zly adres powrotu. Dopiero przy symulacji w wersji 3.56 okazlo sie ze wszystko dziala poprawnie. Od tej pory nie uzywam nowych wersji AVRStudio:(

Pozdrawiam Artur

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required