www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Intel Hex File --- PIC16F684


Autor: Robert Tunnicliffe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
da ich nun schon seit geraumer Zeit am grübeln, googeln und lesen bin 
und trotzdem nicht weiterkomme mit meinem Problem, wende ich mich an 
euch.
Hintergrund meines Werkens ist, dass ich einen Programmcode (bzw. INTEL 
HEx file) habe (eines PIC16F684), diesen in den Flash eines ATMEGA 
mitaufnehmen möchte, um den ATMEGA als Programmer für den PIC zu 
verwenden.
Ich beschäftige mich mit dem Intel Hex File. Wenn ich nun dieses File 
z.B. in einem Texteditor öffne, habe ich z.B. folgende Zeile:

:100018001B208312200E8300F00E700E0900A92009

Schau ich mir jetzt das gleiche File über den "PICKIT 1 Flash Starter 
Kit" an, so ergibt sich der Inhalt (ab Zelle 0018) zu

0000 102F 2814 1283 100C 3040 008F 0064

Wie passt das zusammen?

Desweiteren werden im Editor die Zellen bis 27E belegt, während im 
Programm "Starter Kit" nur bis 13E Daten stehen.
Mir ist auch bewusst, dass eine Zelle im Pic lediglich 14 Bit hat. Kann 
es sein, dass das Hex-File das künstlich auf 16Bit aufpeppt?!
Bin da gerade mächtig auf dem Holzweg.
Danke schon im Voraus für euer Bemühen.

Gruß Robbi

Autor: Thomas Bremer (Firma: Druckerei Beste) (virtupic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...so spontan kann ich da auch nicht helfen. Wenn du wissen willst, wie 
das Hex-FOrmat aufgebaut ist dann guck: 
http://www.piclist.com/techref/fileext/hex/intel.htm

virtuPIC

Autor: Robert Tunnicliffe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mahlzeit!
Habe das Problem gelöst.
Im HEX-File steht ja am Anfang die Adresse byteweise, während im "PICKIT 
1 Flash Starter Kit" die Daten Zellenweise (14 bzw. 16 Bit) dargestellt 
werden.
Deswegen gibt es einen "Versatz". D.h. 2 Datenbytes sind in einer 
Speicherzelle abgelegt.
Um das mal am Beispiel und vlt. anderen Leuten, die das gleiche Problem 
haben,
zu erklären, folgendes:

Im Hex File steht:
:100018001B208312200E8300F00E700E0900A92009
:10              16 Bytes
   0018          Anfangsadresse
       00        Record Type Daten
         1B      Daten im Byte 0x18
           20    Daten im Byte 0x19

Byte Nr.     Speicherzelle*   Wert
0x18         0x0C             1B
0x19                          20

*Speicherzelle ist Halber Byte Wert

Da die Speicherzellen im Format HighByte - LowByte aufgebaut sind, steht 
im Programm "PICKIT 1 Flash Starter Kit" an der Stelle der Speicherzelle 
0x0C der Wert 201B.

Gruß Robbi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.