Hallo zusammen, gibt es ein Tool oder Programm um die Register während der Simulation im AVR Studio 4 zu loggen? So dass die Inhalte und Änderngen z.B.in einer txt Datei gelistet werden oder ähnlich? Danke!
Luigi, ein Simulation funktioniert nie zu 100% geschweige 100% richtig. So Überprüfe ich Programmabschnitte a) durch Ausgabe über einen seriellen Datenstrom - Uart, b) bilde den Programmablauf einer Funktion geschrieben in einer Hochsprache auf dem Papier nach und kann dann deren Funktionalität beweisen oder c) untersuche den Programmablauf einer Funktion auf Assemblerebene. Dazu benötigt man nur das erzeugte Assembler Listing und zum Verständnis der Anweisungen, das Atmel AVR 8-bit Instruction Set: * http://www.atmel.com/images/atmel-0856-avr-instruction-set-manual.pdf
Luigi A. schrieb: > Hallo zusammen, gibt es ein Tool oder Programm um die Register während > der Simulation im AVR Studio 4 zu loggen? Wozu, guck dir die kritischen Stellen an und denke mit.
Wolfgang A. schrieb: > Wozu, guck dir die kritischen Stellen an und denke mit. ... Um eine Routine zu verstehen würde es mir helfen die Veränderungen der Register beim Ablauf aufzulisten. .. Bitte geht bei mir davon aus dass ich sehr wenig Erfahrung habe und nicht so schnell die Hintergründe einer Routine nachvollziehen kann.
Luigi A. schrieb: > So dass die Inhalte und > Änderngen z.B.in einer txt Datei gelistet werden oder ähnlich? Die Information alleine ist aber (meist) wenig hilfreich, wenn man nicht auch die Programmstellen kennt, an denen sich die Inhalte ändern. Das mit zu protokollieren wäre bestimmt nicht trivial und außerdem umfangreich. Gruß Dietrich
Die Programmstelle müsste ich natürlich markieren können.. Sonst bleibt nur die manuelle Variante , Schritt für Schritt debuggen und die Registeänderungen auf Papier schreiben. Diese wollte ich damit vermeiden.
in memoriam KLEN DER INFORMATIONSVERDICHTER Stumm berechnet gern und viel darum ärgert ihn das Spiel des (fast niemals Angeguckten) Angezeigten, Ausgedruckten. Meiste Information steckt in sechs, acht Wörtern schon, doch ein dump auf hundert Seiten kann Entsetzen nur verbreiten. Es erfindet drum sein Geist etwas, was ihn dem entreißt: Subroutinen, die verdichten weil sie Redundanz - vernichten! Beispielsweise dies Produkt würd' - gelöscht, nicht ausgedruckt. Tausend K gefüllt damit gäben grade erst - Ein - - Bit!!
Luigi A., wie Du feststellen konntest, ist uns so eine Funktion nicht bekannt, deshalb auch die vielen anderen Wege. Es kann schon sein, dass ein Anwender so ein Tool mal programmiert hat, aber ober der deinen Beitrag hier liest, ist eher unwahrscheinlich. Bitte beschreibe genau um was es denn hier geht und was Dir unklar bei einem Programm ist. Hast Du den Quellcode, nur den Assemblercode oder nur ein Intel HEX- oder Binär Datei ?
... Es geht um die Routine hier aus dem Tutorial von P. Danneger. Unten habe ich meine Interpretation daneben geschrieben soweit ich es verstabden habe. Einige Schritte sind mir noch unklar.
1 | timer_overflow0: ; Timer Overflow Interrupt |
2 | |
3 | push r0 ; temporäre Register sichern |
4 | in r0, SREG |
5 | push r0 |
6 | push iwr0 |
7 | push iwr1 |
8 | |
9 | get8key: ;/old state iwr1 iwr0 |
10 | mov iwr0, key_old ;00110011 10101010 00110011 |
11 | in key_old, key_pin ;11110000 |
12 | eor iwr0, key_old ; 11000011 |
13 | com key_old ;00001111 |
14 | mov iwr1, key_state ; 10101010 |
15 | or key_state, iwr0 ; 11101011 |
16 | and iwr0, key_old ; 00000011 |
17 | eor key_state, iwr0 ; 11101000 |
18 | and iwr1, iwr0 ; 00000010 |
19 | or key_press, iwr1 ; gedrückte Taste merken |
20 | ; |
21 | ; |
22 | pop iwr1 ; Register wiederherstellen |
23 | pop iwr0 |
24 | pop r0 |
25 | out SREG, r0 |
26 | pop r0 |
27 | reti |
Hier meine Interpretation:
1 | mov iwr0, key_old ;alter Tastenzustand nach iwr0 sichern |
2 | in key_old, key_pin ;Tastenzustand abfragen |
3 | eor iwr0, key_old ;prüfen ob ein Flankenwechsel erfolgt ist |
4 | com key_old ;Tastenstastatus umkehren |
5 | mov iwr1, key_state ;? |
6 | or key_state, iwr0 ;? |
7 | and iwr0, key_old ;Prellzähler hochzählen wenn Taste gedrückt. |
8 | eor key_state, iwr0 ;? |
9 | and iwr1, iwr0 ;wenn Prellzähler Wert 3 erreicht Tastenzustand gedrückt weitergeben. |
10 | or key_press, iwr1 ;gedrückte Taste merken |
:
Bearbeitet durch User
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.