Jaja w Atmelu 2313

Kurcze, meczylem sie od dluzszego czasu nad bledem w programie. W koncu namierzylem, ze za bledne dzialanie odpowiada instrukcja MUL, ktora mnozy zawartosc dwoch rejestrow. I co sie okazuje? Otoz 90S2313 nie posiada takowej instrukcji, czego Atmel w swoim pdfie "AVR Instruction Set" nie raczyl zaznaczyc. Co wiecej to koszmarne i zabugowane AVR Studio podczas kompilacji czy debugowania nie wyswietla zadnego bledu. Po prostu ta instrukcje ignoruje. Ciekawe ile jeszcze takich kwiatkow maja procesory Atmela. No nic, wyzalilem sie, milego weekendu, T.M.F.

Reply to
T.M.F.
Loading thread data ...

Te, projektant od siedmiu bolesci ;-))) A Atmel zaznaczyl, ze ma? Przeciez na poczatku trzeba obejrzec dokladnie liste rozkazow i juz... Zvykle AVR-y nie maja jednostki mnozacej, jak rowniez i tiny. I co, na

1200 tez bedziesz psioczyl, ze nie ma LPM? ;-)

To fakt - AVRStudio czasem ssie :-( Przerzuc sie na avr-gcc :-)))

To _nie_ jest zaden kwiatek procesora, tylko zwykly RTFM.

Pozdrawiam

Marcin Stanisz

Reply to
Marcin Stanisz

Raczyl, ale nie w tym, ktory czytasz. :-) Rzuc okiem na dokumentacje dla 2313 i tam jej nie znajdziesz.

A to jest inna sprawa. :-)

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

Zasugerowalem sie tym, ze we wspomnianym pdfie przy innych rozkazach zaznaczaja, ze np. nie ma ich w niektorych procach, albo ich dzialanie jest uzaleznione od czegostam. W przypadku operacji mnozenia nie ma nawet wzmianki, ze nie w kazdym procu jest. A w koncu po cos tego pdfa opublikowali.

Reply to
T.M.F.

Mozesz mi podac stronke? Bo nie widze tego w cytowanym dokumencie. Przy opisie instrukcji MUL ani slowa o tym, ze nie w kazdym procu jest zaimplementowana.

AVR Studio 4.08 - nie ma zadnego warninga. Za to jesli zdefiniujesz w segmencie .ESEG za pomoca dyrektywy DB ciąg o nieparzystej dlugości to masz komunikat:

D:\wycinarka\software\sterownik.asm(91): warning: A .db segment with an odd number of bytes is detected. A zero byte is added.

Oczywiści nie musze dodawać, że ten warning jest zupelnie bez sensu, a kompilator zadnego zera nie dodaje dla wyrownania dlugosci, o czym mozna sie przekonac analizujac plik eep. Ot taki kolejny blad. BTW. Moja lista bledow do tej wersji AVR Studio siega juz kilkunastu;)

Czasami warto upewnic sie, ze rzeczywiscie jest tak jak sie pisze;) Pozdrawiam, T.M.F.

Reply to
T.M.F.

2313 nie posiada instrukcji MUL i widac to wyraznie w spisie rozkazow na koncu PDFa do tego konkretnego procesora. "AVR Instruction Set" jest uniwersalnym spisem wszystkich mozliwych rozkazow, wliczajac w to nawet np. ELPM, ktora malo ktory AVR posiada.
Reply to
Adam Dybkowski

Bo nie musi. Za to we flashu dodaje.,

Reply to
Milosz Skowyra

Dokument ze strony Atmela z opisem instrukcji zawiera taka informacje. Poza tym, trzeba czytac note konkretnego procesora bo inaczej skad wiesz co on wogole ma ?

Alez ma. Sliczny warning: 'MUL' not supported on this device

Nikt nie twierdzi, ze program jest bezbledny, ale ten z tego watku jest wylacznie Twoim bledem.

Mam screenshota wyslac ?

Reply to
Slawomir Sidor

Mam dokument ze strony Atmela, bo skad mialby byc:) W "AVR Instruction Set" przy MUL nie ma zadnej wzmianki, ze nie wszedzie jest, a wlasciwie prawie nigdzie jej nie ma:) Podobnie przy MULS itd. Oczywiscie note do uzywanego proca przeczytalem, ale nie przyszlo mi do glowy, ze tej instrukcji w nim nie ma. Uwazam, ze w "AVR Instruction Set" powinni to wyraznie zaznaczyc, tak jak w przypadku innych instrukcji rozniacych sie implementacja, np. dotyczacych rej. X,Y,Z, RAMP itd. To, ze tam nie zaznaczyli tej odmiennosci uspilo moja czujnosc;)

U mnie nic nie wypisuje. Pomimo, ze jako procesor wybralem AT90S2313. Screenshota nie wysle:), ale oto zapis jego logu (sorki, ze takie dlugie, ale to tak, zeby nie bylo, ze cos wycialem:):

Building project... AVRASM: AVR macro assembler version 1.73 (Nov 12 2003 10:56:27) Copyright (C) 1995-2002 ATMEL Corporation Creating 'D:\wycinarka\software\sterownik.eep' Creating 'D:\wycinarka\software\sterownik.hex' Creating 'D:\wycinarka\software\sterownik.obj' Creating 'D:\wycinarka\software\sterownik.map' Assembling 'D:\wycinarka\software\sterownik.asm' D:\wycinarka\software\sterownik.asm(77): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(79): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(82): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(83): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(86): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(87): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(90): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. D:\wycinarka\software\sterownik.asm(91): warning: A .db segment with an odd number of bytes is detected. A zero byte is added. Program memory usage: Code : 316 words Constants (dw/db): 0 words Unused : 0 words Total : 316 words Assembly complete with no errors.

Wskazesz mi, gdzie mam tego warninga?:) Zreszta w tym wypadku to nie powinien chyba byc warning tylko error, niesadzisz?

Prosze bardzo:)

Reply to
T.M.F.

Nie dodaje. Programuje tym proca, zczytuje zawartosc i tych zer tam nie ma. Identycznie zachowuje sie ponyprog - nie wstawia zadnych zer. Zreszta dobrze, bo nie powinien. Nie ma powodu, dla ktorego dane w EEPROM mialyby byc wyrownywane do granicy slowa. Przy okazji z tym jest zwiazany kolejny bug - po odpaleniu debuggera AVR Studio nie inicjalizuje pamieci EEPROM, uzupelnia ja mniej lub bardziej losowa zawartoscia.

Reply to
T.M.F.

Building project... AVRASM: AVR macro assembler version 1.73 (Nov 12 2003 10:56:27) Copyright (C) 1995-2002 ATMEL Corporation Creating 'L:\Elektronika\AVRAsm\DemoTMF\demotmf.eep' Creating 'L:\Elektronika\AVRAsm\DemoTMF\demotmf.hex' Creating 'L:\Elektronika\AVRAsm\DemoTMF\demotmf.obj' Assembling 'L:\Elektronika\AVRAsm\DemoTMF\DemoTMF.asm' Including 'K:\Program Files\Atmel\AVR Tools\AvrAssembler\AppNotes\2313def.inc' L:\Elektronika\AVRAsm\DemoTMF\DemoTMF.asm(4) : warning : 'MUL' not supported on this device Program memory usage: Code : 1 words Constants (dw/db): 0 words Unused : 0 words Total : 1 words Assembly complete with no errors. Deleting 'L:\Elektronika\AVRAsm\DemoTMF\demotmf.eep'

To ja na liste tez tylko taki zapis. Program testowany:

.include "2313def.inc" MUL R0,R1

Powinien pewnie, ale nie jest.

Na priva wysylam.

Reply to
Slawomir Sidor

Masz racje, mialem poprzednia wersje tego dokumentu. W nowszej rzeczywiscie jest taka informacja.

Mam identyczna wersje: AVR Studio 4, 8, 0, 291 Platform AVR Simulator Build 1, 0, 0, 9 Part AT90S2313 Build 43

Operating System Major 5 Minor 2 PlatformID 2 Build 3790

Jak widzisz procesor tez mam odpowiedni :)

Reply to
T.M.F.

Przyznaje sie bez bicia, nie mialem tego includa. Rzeczywiscie po jego umieszczeniu w programie wywala warninga. Jakos sadzilem, ze skoro przy definicji projektu wybralem 90S2313 to wystarczy, mylilem sie. Ale mam jeszcze jedno pytanie - instalowales moze service packa do AVR Studio? Sciagalem go ze strony Atmela, ale nie chce sie zainstalowac, wypisuje, ze AVR Studio nie zostal prawidlowo zainstalowany. Oczywiscie reinstalka nic nie daje...

Reply to
T.M.F.

:)

To co wybierasz na poczatku ma znaczenie dla symulatora nie dla "kompilatora" czy jak tego assemblera nazwac.

Do Twojej wersji nie trzeba. Ten SP1 jest do starszych wersji, i uaktualnia do 4.08 chyba. Napewno usuwa niektore bledy wystepujace w starszych wersjach a nie wystepujace w 4.08.

Taki feature kolejny :)

Reply to
Slawomir Sidor

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.