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.
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. ...
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 ;-)
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.
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".
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.
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.) ;)
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 |
> (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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.