AVR STARTER KIT - PIERWSZE WRAZENIA - LONG



Masz problem? Zapytaj na forum elektroda.pl z bramką pl.misc.elektronika!

Poprzedni Następny
Wiadomoœć
spis treści
From: "Juliusz" <juliusz_at_nospam_wyscigi.multi-ip.com.pl>
Subject: AVR STARTER KIT - PIERWSZE WRAZENIA - LONG
Date: Fri, 11 Sep 1998 23:05:03 GMT


Czesc,

Dzieki uprzejmemu handlowcowi z firmy Gamma kupilem AVR STARTER za okolo
280zl (razem z VAT). Zamowilem przez internet i dostalem za 48 godzin
spedycja kurierska za pobraniem.

UWAGA NA CODICO !!!!! Sprzedaja to samo za co najmniej 600zl + VAT
!!!!!!!!!!!!!!!!!!

Co prawda myslalem, ze w zestawie bedzie kilka kostek, ale niestety byla
jedna, ktora zreszta padla zaraz na poczatku. Mimo to moglem puscic pierwszy
program wlasnorecznie napisany. Zamowilem dodatkowe kostki, ale pewnie
dostane je w poniedzialek lub wtorek.

Opakowanie dosyc duze o wielkosci jakby katalogu ELFY. W srodku plytka do
programowania wraz z "lampkami" i przyciskami, kabel RS232, ksiazka, 4
dyskietki z assemblerem, symulatorem i programatorem kostek. Do tego 1 chip
AT89S1200, dwa kabelki paskowe do wykonania krosow na PCB oraz katalog
Atmela na CD.

Uruchomienie zajelo mi 2 godziny z przeczytaniem dokumentacji wlacznie. Od
razu okazalo sie, ze Atmel narobil bykow w opisie PCB i mialem male
zamieszanie. Troche niedokladny opis jumperow, ale nie o to chodzi. Jakos
udalo sie miernikiem dojsc o co chodzi w PCB i przystapilem do zabawy z
programowaniem. Nie ma zadnych klopotow i kostka programuje sie wspaniale i
zaraz po tym przechodzi do trybu normalnej pracy.

Napisalem pierwsza wypocine aby zamigac ledami na PCB podlaczonymi do portu
B AVR-ka. Niby to kilka linijek, ale nie chodzilo. Przypadkowe dotkniecie
obudzilo procesor jakims dziwnym trafem, ale okazalo sie, ze sa same jaja.
Albo nie migaja albo migaja nie wszystkie. W koncu wszystko umarlo. Okazalo
sie, ze padl port B, do ktorego bezposrednio podlaczone sa LEDY. Znaczy
tak - podciagniety port zewnetrznym 10kohm nie ma "sily" przygiac do masy
stanu. Port bez obciazenia na oscylu wyglada niby normalnie.

Znaczy sie tak, na poczatku chodzilo, pozniej poszczegolne ledy przestawaly
swiecic, a na koncu padlo wszystko. Moze to wada kostki od poczatku lub zle
dobrali szeregowe rezystory z LEDAMI i wyssali zbyt wiele z linii, ktore
padly. Zmartwiony tym faktem odlaczylem ledy i teraz majac sprawny port D i
3 linie portu B bawie sie na oscyloskopie i generuje sobie prostokaty.

Zapanowalem nad konfiguracja portow i zabieram sie za uruchomienie jakiegos
timera z przerwaniem.

Na razie mam kilka drobnych watpliwosci i np. nie moge sie doczytac gdzie
defaultowo zaczyna sie STOS - moze ktos wie ? Jaka jest roznica miedzy
rejestrami R0 do R15 i R16 do R31 - moze ktos podpowie ?

Niby rozkazy wykonuja sie w jednym i 2 cyklach ale jakze brak poczciwego
DJNZ :))) Petle odliczajaca w dowolnym kierunku robimy generalnie 3
rozkazami co kradnie nam 4 do 6 cykli zegarowych. Czyli nie tak zloto jak to
w reklamach wyglada.

ldi R20,0xFF

loop: dec R20
cpi R20,0
brne loop

........ dalszy program

wyglada jakby cpi i brne w polaczeniu z dec dawalo nam ukochane DJNZ :))))

Mozna sie przyzwyczaic. Troche frustrujace jest pamietanie, ze w zaleznosci
od czynnosci jaka wykonujemy mamy do dyspozycji kilka roznych rozkazow niby
robiacych to samo, ale dla innej grupy rejestrow i czynnosci. Ale jednak
wydaje sie to logiczne. Niestety stale trzeba siedziec z otwartymi stronami
listy rozkazow.

Do zabawy w arytmetyke jeszcze daleka droga ale pisanie "maszynek stanow" -
cos wlacz i cos wylacz pod jakims tam warunkiem jest do opanowania chyba w
dwa tygodnie.

Na uwage zasluguje UART, ktory w przeciwienstwie do 51-ki ma buforowane TXD.
Przerwanie jest generowane po 8-mym bicie w chwili rozpoczecia generowania
bitu stopu. W 51-ce zostaje wlasciwie czas tego jednego bitu stopu na
obsluzenie przerwania co moze nie wystarczyc. Do AVR-a mozna pisac do bufora
i przy wysokich szybkosciach UARTu nie bedzie klopotu z opuszczaniem jednego
bitu pomiedzy ramkami podczas nadawania. Odbior RXD jest tak samo buforowany
jak w 51. Generalnie chodzi o to (info dla mniej zorientowanych), ze kiedy
nadaje sie wlasnie bajt to w buforze czeka juz nastepny i zostanie on
automatycznie pobrany.

Generalnie AVR-y to chyba przyszlosc. Za cene 30zl + VAT w DETALU NA SZTUKI
(nie wiem jeszcze ile wynosza hurtowe ceny) mamy pasujacy pin w pin
odpowiednik 89C52, ktory ma na dodatek 512 kB EEPROM i watchdoga, szybki
UART z pelnym buforowaniem i do tego mogacy pracowac bardzo szybko przy
kwarcu kilka MHz.

Assembler jest wystarczajaco dobry i do tego darmowy. Nie ma uzasadnionego
celu pisania w C ani niczym za co trzeba zaplacic grube pieniadze !!!. Nie
ma nawet sensu piratowac narzedzi, bo te co sa wystarcza do 99% zastosowan.
Ja zawsze mowie, ze jak ktos nie umie pisac to nie pomoze mu nawet piekne
GUI kompilatora z helpami jak dla idiotow :)))

Moze zanudzilem was za co przepraszam, ale moze tak pogadamy o AVR-ach tutaj
na tej grupie.

Juliusz




Poprzedni Następny
Wiadomoœć
spis treści
From: "Jan Słupicki" <jslupick_at_nospam_mtl.pl>
Subject: Re: AVR STARTER KIT - PIERWSZE WRAZENIA - LONG
Date: Sat, 12 Sep 1998 10:46:24 +0200


Takie informacje są zawsze potrzebne bo często można
oszczędzić parę groszy. (lepiej się uczyć na cudzych
doświadczeniach).
Zadałeś kilka pytań i może będę mógł pomóc - uwagi w
tekście.

Jan Słupicki
Juliusz napisał(a) w wiadomości: ...
...
<Tu wyciąłem>
...
Na razie mam kilka drobnych watpliwosci i np. nie moge sie doczytac gdzie
defaultowo zaczyna sie STOS - moze ktos wie ?

He,He. AT90S1200 ma tylko 3 poziomowy stos sprzętowy i nie ma do
niego bezpośredniego dostępu. Dopiero większe kostki z SRAM mają
stos umieszczony w tej pamięci.

Jaka jest roznica miedzy
rejestrami R0 do R15 i R16 do R31 - moze ktos podpowie ?

Taka że do R16..R31 można się odwołać w trybie immediate
Rd,k (czyli załadować stałą bezpośrednio). Dodatkowo
R26..R31 są wyróżnione do adresowania SRAM (jako 2 bajtowe
rejestry X,Y,Z). R30,R31 mogą adresować pamięć programu (Z)
a R26,R27 (X) nie ma trybu adresacji z przesunięciem:Rd,X+q.
Oprócz R26..R31 wyróżniona została para R24,R25 instrukcjami
ADIW i SBIW trybem Rd,k (dodanie lub odjęcie stałej od pary
rejestrów).

Niby rozkazy wykonuja sie w jednym i 2 cyklach ale jakze brak poczciwego
DJNZ :))) Petle odliczajaca w dowolnym kierunku robimy generalnie 3
rozkazami co kradnie nam 4 do 6 cykli zegarowych. Czyli nie tak zloto jak
to
w reklamach wyglada.

ldi R20,0xFF

loop: dec R20
cpi R20,0
brne loop

........ dalszy program

A do czego potrzebne jest CPI ? DEC przecież ustawia flagę Z.
Powinno być:
loop: dec R20
brne loop

...
<Tu wyciąłem>
...
Moze zanudzilem was za co przepraszam, ale moze tak pogadamy o AVR-ach
tutaj
na tej grupie.

Juliusz

Wcale nie i AVR warto pogadać.



Poprzedni Następny
Wiadomoœć
spis treści
From: "Juliusz" <juliusz_at_nospam_wyscigi.multi-ip.com.pl>
Subject: Re: AVR STARTER KIT - PIERWSZE WRAZENIA - LONG
Date: Sat, 12 Sep 1998 12:29:21 GMT


Na razie mam kilka drobnych watpliwosci i np. nie moge sie doczytac gdzie
defaultowo zaczyna sie STOS - moze ktos wie ?


He,He. AT90S1200 ma tylko 3 poziomowy stos sprzętowy i nie ma do
niego bezpośredniego dostępu. Dopiero większe kostki z SRAM mają
stos umieszczony w tej pamięci

No tak, ale jest tam takie cos jak SPL i SPH i mozna do tego pisac ? To
znaczy jak gleboko moge wolac podprogramy z podprogramow aby mi sie ten stos
nie zatkal ? Powiedz cos wiecej ?

--------------

ldi R20,0xFF

loop: dec R20
cpi R20,0
brne loop

........ dalszy program

A do czego potrzebne jest CPI ? DEC przecież ustawia flagę Z.
Powinno być:
loop: dec R20
brne loop



No tak, a skad on niby wie bez tego CPI, ze chce odliczyc od FF do 0 i
skoczyc jesli rozne i puscic jesli rowne ? BRNE to branch if not equal !!
ale to not equal to do czegos musi byc poriwnywane ?

Juliusz