hallo, gibt es eine möglichkeit daten aus excel in intelhex format zu konvertieren? Gibt es da ein Programm, oder ein Weg wie ich mir Daten die Hexadezimal in Excel sind in intelhex format konvertiere??? Ich habe paar Programme gefunden aber die erkennnen mir die Daten aus Excel als ascii Code und nicht als hexadezimal an. Danke
:
Verschoben durch Admin
> daten aus excel in intelhex format zu konvertieren?
Sind das in Excel einfach Standard-Zahlen im Bereich von 0-255?
Wie sieht die Tabelle aus?
Ich würde die Zahlen einfach in ein Textfile exportieren und dann kurz
ein C-Programm schreiben, das mir das Zeug in ein Binärfile konvertiert.
Und von Binär nach IHex gibt es Konverter wie Sand am Meer...
Ich habe mal ein C-Programm geschrieben, das liest im Moment ein Binärfile ein und konvertiert es zu Hex. Man kann einen beliebigen Array mit 8-Bit Werten füllen, der dann in ein Intel HEX-File konvertiert wird. Sollte einfach anpassbar sein.
Waoooo super danke für die Tipps! Zu den Werten nochmal, ich muss 8400 Werte die 12bit breite sind im Flash ablegen. Dann hat sich herausgestellt das mein Flash zwar 16bit Datenbusbreite hat aber nur 8 bit am Eval board angelötet sind. Somit habe ich die Werte gesplittet und lese zwei Byte aus und gebe sie "verklebt" aus. Was dann von 8400 Werten zu 16800 Werten geführt hat. Also so die zahl 4095 = 0FFF. Im intelhex muss das erste Daten byte 0F und das zweite FF sein. Ich lese das 0F aus dann das FF aus und dann gebe ich 0FFF aus. Was auch klappt. Mein problem ist das ich ich ca. 800 Kurven und diese ins intelhex format bringen muss. Ich habe auch geschafft Kurven von Excel über Intelhex zu bin2hex im Flash abzuspeichern. Das Problem ist aber das er nach 16 bit Adressen wieder von vorne anfängt, wo quasi er eignlicht den Code bringen müsste die erweiterte Adresseleitung zu machen (Intelhex Type 04) glaub ich. Aber da scheitert es, zum einem am Programm zum anderem an meinem Verständiss wie ich quasi nach 65535 weiter addressiere..... Wenn noch paar Tipps kommen wäre ich sehr Dankbar. gruß
Ich hab mir dein Code angeschaut, bin nicht der C checker aber so wie ich das verstanden habe geht er nur bis 10 bit addressen. ich brauchte aber 24 bit addressen, könnte man das umändern?
@Igor: Für solche Konvertierungsaufgaben (und ähnliches) lohnt es sich, sich eine Skriptsprache anzueignen. Ich empfehle Python, aber auch mit Perl oder Matlab läßt sich so eine Aufgabe lösen; notfalls auch mit C. Duke
ich hab mir jetzt nicht alles durchgelesen, aber evtl. hilft die die Funktion DEZINHEX oder DEZINBIN weiter
Jepp das hatt ich schon verwendet, lediglich gab es zwei versionen, die eine die nur 16 bit addresse unterstüzt, und die andere die auch die erweiterung auf 32 hat. hab die zweite dann gefunden und hat soweit geklappt. Gruß und Danke
@Igor Weiss nicht wie du drauf kommst, warum mein Code nur bis 10 Bit funktionieren soll. Falls ich dich richtig verstehe und du 24 Bit adressieren willst, also 4 MegaByte bezweifle ich eher, dass du das mit Excel hinkrigst, nach 65k Zeilen ist da nämlich Schluss. Wenn du im hexGenerator.c die folgende Zeile so anpasst, dann kommst du auf 65 MegaByte (ca. 26Bit), das sollte Reichen.
1 | #define MemorySize (65 * 1024 * 1024)
|
P.S. Bei solch grossen Datenmengen nimmt man normalerweise Binärdateien, da die Nutzdaten im Hex-File nur knapp die Hälfte sind.
Hi, >P.S. Bei solch grossen Datenmengen nimmt man normalerweise Binärdateien, >da die Nutzdaten im Hex-File nur knapp die Hälfte sind. Verstehe ich nicht so ganz. Wie gesagt ich muss 800 Kurven mal 16800 Byte ablegen. Mein Weg: EXCEL EXCEL => in HEX EDITOR KOPIEREN => als file.bin abspeichern 4095 0FFF 0000 0F FF 0F FE 0D DD . . . 4094 0FFE 4093 0DDD . . . => BIN2HEX file.bin file.hex Fertig!
Igor schrieb: >>P.S. Bei solch grossen Datenmengen nimmt man normalerweise Binärdateien, >>da die Nutzdaten im Hex-File nur knapp die Hälfte sind. > > > Verstehe ich nicht so ganz. ist doch nicht so schwer. > Wie gesagt ich muss 800 Kurven mal 16800 Byte ablegen. hat damit gar nix zu tun 1 Byte (0-255) wird im Intel-Hex-Format durch 2 Bytes (0-F) codiert. das heißt, dass der Nutzdatenanteil 50% beträgt. dazu kommen dann noch die Prä- und Postfixe vor/hinter jeder Zeile (Startbyte, Coount, Adresse, Typ, Prüfsumme), was je nach länge der Datensätze auch noch einen ordentlichen Anteil dazubringt.
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.