Attiny 85 auslesen
|
02.02.2021, 18:10
Beitrag #9
|
|||
|
|||
RE: Attiny 85 auslesen
Ich nutze für solche Dateivergleiche Total Commander.
Dort werden bei Unterschieden betroffene Zeilen, aber auch die betroffenen Bytes in der Zeile, in roter Schrift dargestellt. Gruß Arne Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort. |
|||
02.02.2021, 21:04
Beitrag #10
|
|||
|
|||
RE: Attiny 85 auslesen
Da ich des öfteren mit dem Total Commander arbeite habe ich diesen benutzt. Die Dateivergleichen Funktion kannte ich
bei ihm noch gar nicht. Die erste Variable habe ich heraus bekommen. Bei der zweiten habe ich noch kein System endeckt. Vielleicht endeckt ja einer von euch das System dahinter. Es geht um die Variable "t". Der Name des files entspricht dem Wert der Variable. t1.hex entspicht t=1 t2.hex entspricht t=2 Wenn ich t=0 teste kommt ein ganz anderes file heraus. Harry Wenn etwas nicht funktioniert -> Kondensator hinzufügen ![]() |
|||
02.02.2021, 21:08
Beitrag #11
|
|||
|
|||
RE: Attiny 85 auslesen
0 und 1 sind auch keine Werte, die man so leicht findet. Nimm zum Testen doch einfach mal 0x55 bei byte oder 0x5555 bei int. Die findet man leichter.
Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
02.02.2021, 21:32
Beitrag #12
|
|||
|
|||
RE: Attiny 85 auslesen
(02.02.2021 21:08)Tommy56 schrieb: 0 und 1 sind auch keine Werte, die man so leicht findet. Nimm zum Testen doch einfach mal 0x55 bei byte oder 0x5555 bei int. Die findet man leichter. Es ist einen const int Variable. Ich habe jetzt 0x5555 mit 0x6666 und 0x3344 mit 0x5566 verglichen ![]() Harry Wenn etwas nicht funktioniert -> Kondensator hinzufügen ![]() |
|||
03.02.2021, 12:31
(Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2021 14:46 von ardu_arne.)
Beitrag #13
|
|||
|
|||
RE: Attiny 85 auslesen
Ich kann in den Screenshots leider auch nichts erkennen was irgendwie einen Bezug auf die Werte der verwendeten Variablen erkennen lässt.
Vielleicht versuchst du es mal mit const unsigned int oder const uint16_t. Nachtrag: Ab 2791: steht z.B. unten rechts (0x6666) 43 45 43 34 43 45 43 45 Da fällt die 34 irgendwie aus der Rolle (bei allen anderen Werten betrifft es auch immer diese Stelle. Möglicherweise Steckt in der 34 das Vorzeichenbit? Noch ein Nachtrag: Es gibt in der IDE unter "Sketch" --> "Kompilierte Binärdatei exportieren" die Möglichkeit HEX-Files zu schreiben. Es werden dabei zwei HEX-Files erzeugt. Einmal mit und einmal ohne Bootloader. Vielleicht erspart der Weg den Tiny zu brennen und wieder auszulesen. Mit der IDE 1.8.13 funktionierte das bei mir aber nicht für alle Controllertypen. Aber mit der 1.8.12 geht es immer. Gruß Arne Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort. |
|||
03.02.2021, 22:46
(Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2021 22:56 von ardu_arne.)
Beitrag #14
|
|||
|
|||
RE: Attiny 85 auslesen
Die Sache hat mir keine Ruhe gelassen.
![]() Deshalb habe ich ein kleines Testprogramm (T_01) für einen Tiny85 geschrieben. Code: const uint16_t var1 = 0x5555; Über "Kompilierte Binärdatei exportieren" wird ein Listingfile (.lst) erzeugt. Damit kann man dem Compiler bei der Arbeit zusehen. ![]() Die einzigen Unterschiede zwischen T_01 und T_02 stehen in den Zeilen 296, 301 und 302. Interessant ist lediglich der erzeugte Maschinencode in den Zeilen 301 und 302. Für T_01 (0x5555) steht dort "85 e5 95 e5" Für T_02 (0xFFFF) steht dort "8f ef 9f ef" Genau diese Bytefolgen findet man auch im jeweiligen Hexfile. Im Hexfile, bzw. dem was du aus deinem Tiny ausliest, ist also nichts mehr vom Wert deiner ursprünglichen Variablen zu sehen. ![]() Vielleicht hilft dir ein AVR Disassembler bei diesem Wissen weiter. Gruß Arne Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort. |
|||
03.02.2021, 23:37
Beitrag #15
|
|||
|
|||
RE: Attiny 85 auslesen
(03.02.2021 22:46)ardu_arne schrieb: .... Das man die Konstanten im Hexcode nicht so leicht findet liegt daran das der 8 Bit Wert der Konstanten im Opcode auf 2 Bytes verteilt wird. Ist hier nachzulesen auf Seite 90. lgbk An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollte dann liest euch bitte diese Anleitung durch. 1+1 = 10 ![]() ![]() |
|||
04.02.2021, 09:40
Beitrag #16
|
|||
|
|||
RE: Attiny 85 auslesen
(03.02.2021 12:31)ardu_arne schrieb: Nachtrag: Bei "5555", "6666" und "5566" hätte ich vermute, dass die beiden vorderen Stellen in 2791+2793 und die beiden hinteren stellen in 2795+2797 liegen. t"3344" passt aber dabei gar nicht ins Bild. Über das Vorzeichen hatte ich mir auch schon Gedanken gemacht und mir überlegt ob er womöglich von Null aus geht und positiv und negativ abwächselnd hoch zählt da der Unterschied 2 und nicht 1 beträgt. 0, 1, -1, 2, -2 ... "3344" hat aber jegliche Idee nach einem System zu suchen verworfen. Bei deiner 0x5555 und 0xFFFF sind wenigstens die Zahlen noch zu Identifizieren und könnten so leicht manupuliert werden. Bei meinem ausgelesenen File ist davon gar nichts mehr zu erkennen. (03.02.2021 12:31)ardu_arne schrieb: Noch ein Nachtrag: Das brennen und auslesen ist kein Aufwand und geht sehr schnell. Viel interessanter ist aber die .lst Datei. Da sieht man den Maschinencode und die Register. Leider ist meinen Zeit mit SoftICE und co schon 30 Jahre her, da fang ich nicht noch einmal neu an. Ich werde meinen Sensoren neu einmessen. Hat aber mal wieder Spaß gemacht und vielen Dank füs ansehen meiner Files. Harry Wenn etwas nicht funktioniert -> Kondensator hinzufügen ![]() |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste