Re: AVR Assembler

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View

Quoted text here. Click to load it
Bytes
Z.
dazu
dass
16-bit
Quoted text here. Click to load it
zeigt
LPM-Befehl
Quoted text here. Click to load it

Geht nicht, SRAM ist schon voll!! Ich darf gar nicht an den Stack denken.

Quoted text here. Click to load it

Danke Andreas und den Anderen,

als AVR-NewBe gleich einen mehrfachen Protokollumsetzer anzugehen ist sicher
gewagt und bringt mich nicht nur an meine, sondern auch an die
Leistungsgrenzen eines ATmega8515. Wenn ich es geschafft habe, bin ich
glaube firm. Dank Eurer Hilfen.

In Best├Ątigung bzw. Erg├Ąnzung Eurer Beitr├Ąge kann ich folgendes sagen:

ATmega8515 kann den LPM-Befehl nicht nur zu r0, sondern auch in andere
Register  (AT90s kann dies nicht).
Genau wegen der 16bit-Struktur bekommt man wie in meinem Beispiel L├Âcher in
der Datenstruktur, wenn pro "Datensatz" eine ungeradzahlige Anzahl von Bytes
enthalten ist.

Also danke noch mal.


Peter

Quoted text here. Click to load it



Re: AVR Assembler
Quoted text here. Click to load it

Bei den neueren AVRs kann man auch direkt

      lpm  r16,Z

benutzen.

Re: AVR Assembler
Hi!

Quoted text here. Click to load it

Wo wir grade dabei sind:
Ist es m├Âglich den Flash voll auszunutzten und trozdem nur ein Byte in
eine Zeile des Codes zu schreiben?
Also wenn man .dw 0x1234 schreibt hat man ja den Speicher voll
genutzt, aber ne 16 bit Zahl is n├Âtig.
.db 0x12 0x34 ist glaube ich auch m├Âglich und generiert ebenfalls
einen 16 Bit Wert.
Der ├ťbersicht halber w├╝rde ich aber gerne sowas machen:
.db 0x12
.db 0x34
.db 0x56
.db 0x78
Aber ohne, dass mit da jedesmal ein Byte ungenutzt bleibt.
Geht das irgndwie?

Cu, Michael

Re: AVR Assembler

Quoted text here. Click to load it
in
Bytes

Mit dem AVR-Assembler: nein!
Du erh├Ąlst eine Warnung und es wird automatisch ein Pad-Byte eingef├╝gt.
Ist aber auch ein bisserl wiederspr├╝chlich, in Assembler zu programmieren
und dann von ├ťbersichtlichkeit zu reden. ;-)

Andreas

--
===================================================================
Andreas T├Ânne @ home
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler
Quoted text here. Click to load it

Echt? Was ist an PORTB = 0x40; ein Fremdk├Ârper? Beim AVRGCC hat sich einiges
getan.



--
Matthias Wei├čer
snipped-for-privacy@matwei.de
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler

Quoted text here. Click to load it
einiges

In dem Fall, mea culpa! Bin halt mit ICC so zufrieden, dass ich schon einige
Zeit nicht mehr beim GCC reingeschaut habe.

Ich kannte noch den Umweg ├╝ber outb(....) und das war nicht so prickelnd.

Andreas

--
===================================================================
Dipl.Inform. Andreas T├Ânne * Prokurist
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler
Am 26 Jun 2003 06:08:37 -0500 schrieb Andreas T├Ânne:

Quoted text here. Click to load it
 
Quoted text here. Click to load it
 
Quoted text here. Click to load it
 
Quoted text here. Click to load it

Du bist selbst Informatiker und weisst zweifellos, dass der wesentliche
Teil der Arbeit bei der Erstellung eines Programms erledigt sein sollte,
wenn man den Code hinschreibt. M.a.W.: alles, was du bis dahin an
Dokumentation geleistet hast, ist unabhaengig von Assembler oder
Hochsprache vorhanden und unabhaengig davon.

Ein Ansatz, der sich bei mir gut bewaehrt hat, um dann zu einem
uebersichtlichen (soweit moeglich) und wartbaren Programm zu kommen:
Das Programm wird in einem Pseudocode hingeschrieben. Dieser Code sollte
mindestens so lesbar sein wie C - das bedeutet schliesslich nicht viel.
Wenn man dann diesen Code mit Kommentarzeichen versieht und die
Assembleranweisungen hinter die entsprechenden Pseudocodezeilen
schreibt, kriegt man ein ordentlich strukturiertes Programm. Wenn man
stattdessen die entsprechenden C-Statements hinschreibt, kriegt man ein
ordentlich strukturiertes C-Programm.

Gruss
Michael

Re: AVR Assembler
Quoted text here. Click to load it

Das geht sogar ganz automatisch. Assembler und LPM nehmen automatisch ab-
wechselnd Lo- und Hi-Byte wobei ungerade Adressen im Pointer dann das Lo-
und gerade das Hi-Byte selektieren. Es geht auf jeden Fall kein Byte ver-
loren - es sei denn die Gesamtzahl der .dbs ist ungerade - dann wird *ein*
Padding-Byte eingef├╝gt.

cu,

 Aguja

::Update:: www.PROuC.de ==> Free AVR-, PIC- & 8051-Programmers, Apps & Tips

Re: AVR Assembler
Quoted text here. Click to load it

Mit welchem Assembler?

File:


.db 1
.db 2

Ausgabe des Assemblers von Studio 4: (Assembler Version 1.57)

Building project...
.......
G:\Test.asm(2): warning: A .db segment with an odd number of bytes is
detected. A zero byte is added.
G:\Test.asm(3): warning: A .db segment with an odd number of bytes is
detected. A zero byte is added.
.......
Assembly complete with no errors.
Deleting   'test.eep'

Der AVR-Assembler erzeugt bei jedem einzelnen Statement Vielfache von
Worten. Er ist nicht in der Lage, DB-Statementes intelligent zusammen zu
fassen.

Ciao,

Andreas

--
===================================================================
Andreas T├Ânne @ home
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler

Quoted text here. Click to load it


Mit einem richtigen. :-)

j@ida 816% cat > foo.s
.text
        rjmp    begin
mydat:
        .byte   1, 2, 3
        .align  2
begin:
        ldi     r30, lo8(mydat)
        ldi     r31, hi8(mydat)
        ld      r16, Z
.end
^D
j@ida 817% avr-as -o foo.o foo.s
j@ida 818% avr-ld -o foo foo.o
j@ida 819% avr-objdump -d foo

foo:     file format elf32-avr

Disassembly of section .text:

00000000 <mydat-0x2>:
   0:   03 c0           rjmp    .+6             ; 0x8

00000002 <mydat>:
   2:   01 02           muls    r16, r17
   4:   03 00           .word   0x0003  ; ????
        ...

00000008 <begin>:
   8:   e2 e0           ldi     r30, 0x02       ; 2
   a:   f0 e0           ldi     r31, 0x00       ; 0
   c:   00 81           ld      r16, Z
        ...


(Das ┬╗.align 2┬ź sollte man nicht vergessen. ;-)
--
J├Ârg Wunsch

"Verwende Perl. Shell will man k├Ânnen, dann aber nicht verwenden."
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler

Quoted text here. Click to load it

Mal ein konstruktiver Vorschlag an alle, die sich an diesem Thread beteiligt
haben:

warum gebt ihr diese fragmentarischen und aus dem Kontext gerissenen
Antworten?
ZB. Der OP hat eindeutig mit dem AVR Studio gearbeitet. Was n├╝tzt es ihm,
wenn er Tips erh├Ąlt, die damit nicht funktionieren und dann ihm nicht gesagt
wird, dass er daf├╝r einen anderen Assembler ben├Âtigt?
Oder auch die Antworten auf sein Verst├Ąndnissproblem zur Unterscheidung
zwischen Datenbytes im FLASH und SRAM.

Auch wenn die Antworten richtig sein m├Âgen, sind sie so gegeben, dass es dem
Fragenden unn├Âtig schwierig gemacht wird, sie zu verstehen und umzusetzen.
Wenn das Ziel ist, Fragende abzuschrecken, nochmals mit 'trivialen' Fragen
zu kommen, so sind hier einige auf dem besten Weg. :-(

Eine gute Antwort geht in drei Schritten vor: Auf die Fragestellung eingehen
und eventuell rekapitulieren, die Fragestellung analysieren und die
Grundlagen der Frage darstellen, eine L├Âsung anbieten.
Das ist keine Pflicht aber es kommen dann einfach qualitativ hochwertigere
Antworten raus.

F├╝r die Fragenden: liefere Hintergrundwissen und Details zur Frage. Die hier
lesenden Elektroniker sind neugierig und m├Âchten auch gerne wissen, f├╝r
welchen Zweck die L├Âsung dienen soll (auch wenn man dann Gefahr l├Ąuft, dass
die Antwort pauschal von oben lautet 'So macht man das auch nicht').

Vielleicht k├Ânnen wir uns auf einen Frage/Antwort-Knigge einigen, der dann
in der FAQ an prominenter Stelle verewigt wird?

Andreas

--
===================================================================
Dipl.Inform. Andreas T├Ânne * Prokurist
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler

Quoted text here. Click to load it

Ein St├╝ck Kontext ist dabei, f├╝r den Rest hast Du einen Newsreader.
Warum soll ich hier alles nochmal zitieren, was Du Dir mit einem
Mausklick oder einer Bet├Ątigung der <-- / --> Taste auch nochmal
ansehen kannst (bzw. sich jemand anders ansehen kann)?

Au├čerdem war da nat├╝rlich ein Smiley dahinter, den Du erfolgreich
ignoriert hast.  Was kann ich denn daf├╝r, wenn AVR f├╝r ihren Chip
einen v├Âllig paranoiden Assembler baut (bauen l├Ą├čt), der den
Programmierer mehr am Arbeiten hindert als ihn zu unterst├╝tzen?

Ansonsten schlie├č ich mich Matthias an: das Usenet ist zum Lernen da.
Auch ich habe dabei gelernt, da├č der ureigene Atmel-Assembler halt
nicht alles machen will, was ein Programmierer k├Ânnen wollte.
--
J├Ârg Wunsch

"Verwende Perl. Shell will man k├Ânnen, dann aber nicht verwenden."
We've slightly trimmed the long signature. Click to see the full one.
Re: AVR Assembler
Quoted text here. Click to load it

V├Âllig richtig, Deine fundierte Einf├╝hrung in zielf├╝hrendes Antworten.

Falls jemand sich an diese naheliegenden Regeln nicht h├Ąlt, hat er
wom├Âglich - neben dem Anliegen, eine Antwort auf eine Frage zu geben -
weitere Motivationen zum Schreiben:
- weiterf├╝hrende Aspekte zum Thema vortragen,
- die Fragestellung selbst in Frage stellen oder einen Vorschlag zu
  einer effektiveren Sichtweise liefern,
- einfach nur diskutieren wollen, um des (lehrreichen) Unterhaltungs-
  wertes willen.
(Unvollst├Ąndige und nicht wertende Aufz├Ąhlung)

Gr├╝├če,
Thomas.

--
Zum Thema "pr├Ągnant formulierter Sourcecode" f├╝r embedded control:
"Schon klar: wer nichts davon versteht kompakte Binaries zu generieren,
We've slightly trimmed the long signature. Click to see the full one.

Site Timeline