Forum: Mikrocontroller und Digitale Elektronik Programmierung Assembler


von M. M. (blackcow)


Lesenswert?

Hallo Miteinander,

Ich schreibe grad ein Programm in Assembler für einen schimmligen 
Attiny2313 (dessen EEPROM, SRAM und Flash etwas knapp wird, aber das ist 
eine andere Geschichte) und bin ein bisschen am verzweifeln ;-)

Mich würde mal interessieren wie ihr eure Entwürfe macht. Eher mit 
Zettel und Stift oder Excel oder einfach drauflostippen? Also ich mein 
jetzt natürlich nicht simpelste LED-Lauflichtprogramme. Besonders 
GraphikLCD-sachen werden bei mir immer fürchterlich Spagetti!

MfG M.M.

von Hannes L. (hannes)


Lesenswert?

M. M. schrieb:
> mit Zettel und Stift

Genau so.

M. M. schrieb:
> Programm in Assembler für einen schimmligen Attiny2313

M. M. schrieb:
> GraphikLCD-sachen

Aha, Grafik-LCD-Sachen am schimmligen 2313... - Interessant.

...

von Niederer Stapel (Gast)


Lesenswert?

Graphik LCD Sachen wuerd ich nicht unter einem Mega32x machen.

von M. M. (blackcow)


Lesenswert?

Ich hab hald den kleinsten und billigsten AVR genommen dem ich meine 
Vorstellungen reinquetschen kann, sonst machts ja keinen Spaß XD.
Beim GLCD wird im Endeffekt nur ein Linegraph angezeigt + drei, vier 6x3 
Pixelzeichen. Dafür Reicht mein Speicher grad noch, wird hald knapp. 
Wobei ich die fünf obersten bits immer als einen Wert definiere, und der 
6. ist ein Flag, und die letzten zwei ergeben zusammengestückelt die 
restlichen Werte. Das macht Spaß XDD.
Da ich zum Schluss nur noch 8 byte frei habe, muss ich sichergehen das 
max 1 Interupt im Interupt auftreten kann, das passt soweit. Allerdings 
kann ich keine Calls mehr verwenden, was evtl. noch problematisch wird.

too much information, ich weiß, allerdings bin ich nach etwas 
geschreibsel wieder entspannter ;-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

M. M. schrieb:
> Mich würde mal interessieren wie ihr eure Entwürfe macht.

Nachdenken, Notizen machen, loslegen. Das Programm entwickelt sich dann 
um die Aufgabe, und zwar von innen nach außen. Was soviel heißt, wie 
zuerst allen Low-Level-Kram bauen und wenn der funktioniert, die 
Schönheiten schreiben, die der Anwender sieht. Hinterher noch aufräumen 
und vergessene Kommentare ergänzen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

M. M. schrieb:
> Dafür Reicht mein Speicher grad noch, wird hald knapp.

Nimm halt einen nicht ganz so schimmligen Tiny4313, der ist doppelt so 
"tief".

von Ralph (Gast)


Lesenswert?

M. M. schrieb:
> Mich würde mal interessieren wie ihr eure Entwürfe mach

Naja eigendlich recht einfach:
1. Überlegen WAS  ich machen will ( Papier )
2. Überlegen WIE ich es machen will ( Papier )
3. Überlegen WAS ich dazu brauche  ( Papier )
4. grobe Ablaufpläne erstellen  ( Papier )
5. Abschätzen welche HW und Tools dazu benötigt werden µC, Treiber, 
Spannungsversorgung,.......  ( Papier )
6. Nochmal zum Anfang und überlegen ob das so passt was da 
hingeschrieben hat
   Diese Loop solange bis man sicher ist das es passt
7. Hardwareaufbau
8. Und ja Man startet den Editor für die erste Codezeile.
9. Zurück zu 1) und prüfen ob alles noch immer passt oder Änderungen 
gemacht werden müssen. Beliebig viele Wiederholungen möglich.

==> Man hat eine gute Chance das das Projekt durchführbar ist.
Und je öfter man das macht ( Erfahrung) desto höher wird die 
Wahrscheinlichkeit das man Erfolg hat.

von asmhobbyist (Gast)


Lesenswert?

Ich skizziere in der Regel pro Modul mit Papier Bleistift vor. 
Erfahrungsgemäß gibt es entweder nur eine oder gar keine knifflige 
Stelle, und das kann man am besten wie beim Algorithmus mit Papier und 
Bleistift ausarbeiten.

Darüberhinaus ist Erfahrungsaustausch und Übung sehr wichtig (auch 
Codeanalyse professioneller Programme). Also üben üben üben (und 
(Grundlagen) vertiefen) und Codelösungen für verschiedene Probleme 
einfach mal hier reinposten zum Optimieren. Ich habe schon so einige 
schöne und effiziente Assemblerlösungen hier gesehen und gelernt.

(Und auch über Begiffe würde ich mir mal Gedanken machen, "Schimmlig" 
oder "Verzweifeln" (oder "Spaghetti-Code") assoziiere ich jedenfalls 
nicht mit Assembler. "Verdrängung",  "Unkenntnis" und "absurde 
Vorurteile" wäre schlicht passender.) ;)

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

M. M. schrieb:
> Ich hab hald den kleinsten und billigsten AVR genommen dem ich meine
> Vorstellungen reinquetschen kann, sonst machts ja keinen Spaß XD.

Sportlich! Ich finds gut. :-)

> Da ich zum Schluss nur noch 8 byte frei habe, muss ich sichergehen das
> max 1 Interupt im Interupt auftreten kann, das passt soweit. Allerdings
> kann ich keine Calls mehr verwenden, was evtl. noch problematisch wird.

Calls gehen auch ohne Stack, falls du z.B. die Z-Register nicht brauchst 
und mit einer Ebene zufrieden bist:
1
.macro zcall ;(target)
2
  ldi ZH,high(PC+3)
3
  ldi ZL,low(PC+2)
4
  rjmp @0
5
  .endmacro
6
.macro zret
7
  ijmp
8
  .endmacro

von M. M. (blackcow)


Lesenswert?

> (Und auch über Begiffe würde ich mir mal Gedanken machen, "Schimmlig"
> oder "Verzweifeln" (oder "Spaghetti-Code") assoziiere ich jedenfalls
> nicht mit Assembler. "Verdrängung",  "Unkenntnis" und "absurde
> Vorurteile" wäre schlicht passender.) ;)

keine Sorge, war nicht so ernst gemeint ;-) eig mag ich Assembler


Ich hab bisher auch immer mit Papier angefangen. Erst ein grobes 
Ablaufdiagramm und eine Speicheraufteilung erstellt. Danach hab ich die 
einfachen Module immer direkt Programmiert und die schwierigen erst mal 
mit ###################################################### markiert. 
Wenns danach bei denen nicht funktioniert gehe ich auf Fehlersuche. Wenn 
ich bei der Fehlersuche trotz ausgibiger Kommentare dann keinen 
Durchblick mehr habe >> Modul löschen und erst mal aufm Papier nochmal 
ganz genau den ablauf entwerfen. Danach funktionierts.
Jetzt hab ich eine Knifflige Stelle mit der ich bisschen mit excel 
rumprobiere. Das hat irgendwie Ähnlichkeit mit C. Nur in Zellen ;-)

Wird heut wohl nicht mehr fertig.

@ Markus Weber: danke für den Tipp! Problem gelöst.

von Peter D. (peda)


Lesenswert?

M. M. schrieb:
> Besonders
> GraphikLCD-sachen werden bei mir immer fürchterlich Spagetti!

Gerade bei Grafik muß man die Funktionen Schritt für Schritt aufbauen, 
wie Punkt, Linie, Rechteck, Füllen, Zeichen, Text usw.

In Assembler macht sowas überhaupt keinen Spaß, es sollte C sein.
Da gibt es auch Bibliotheken, die man nehmen kann oder sich zumindest 
abgucken, wie das geht.

Ich würde auch sagen, unter 32kB sollte man nicht anfangen, schon 
verschiedene Zeichensätze kosten viel Flash.
Man kann natürlich noch einen 24C512 ranpappen aber das kostet CPU-Zeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.