Forum: Mikrocontroller und Digitale Elektronik verschiedene PIC kompiler -> gleicher hex code?


von frank85 (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem, ich programmiere meine 18F-PICs mit einem 
Evalboard. Jetzt hab ich ein Projekt bei dem ich ein LV PIC 18F45J11 
vewendet habe, die Platine auch soweit geätzt und bestückt (SMD), was 
jede menge Arbeit war.
Jetzt sagt mir mein Programmer, dass es sich um den falschen 
PIC-Programmer handelt. Da es ein LV Typ ist. Dafür benötigt man 
natürlich wieder einen anderen Programmer der natürlich gleich wieder 
incl. Versand 100€ kosten würde (brauch ihn auch verm. nur einmal).

Jetzt zu meiner Frage. Kann ich mit einem Compiler das hex File 
erstellen und mit einem anderen Compiler/Programmer (den ein Freund von 
mir hat), das hex file draufziehen? In dem hex file steht doch am Anfang 
jeder Zeile eine Adresse und dahinter der Code, der dort abgelegt werden 
muss (oder hab ich da was falsch verstanden?)

Vielen Dank im vorraus.

von ich (Gast)


Lesenswert?

frank85 schrieb:
> Jetzt zu meiner Frage. Kann ich mit einem Compiler das hex File
> erstellen und mit einem anderen Compiler/Programmer (den ein Freund von
> mir hat), das hex file draufziehen? In dem hex file steht doch am Anfang
> jeder Zeile eine Adresse und dahinter der Code, der dort abgelegt werden
> muss (oder hab ich da was falsch verstanden?)

Ein Compiler macht aus ASM-Code einen Hex-Code (Maschinencode) oder aus 
C einen Hex-Code bzw Maschinencode, ggf. zusätzlich noch ein ASM-Code.

Ein Compiler kann aber keinen µC beschreiben. Das macht ein 
Brenner/Programmer. Der Hex-Code beinhaltet dein Programm + Settings + 
PIC-Typ. Diesen Hex-Code kannst du mit jedem Brenner/Programmer auf den 
µC bringen. Also Hex erstellen, µC und Code nehmen, zu deinem Freund 
fahren und da brennen.


frank85 schrieb:
> Jetzt sagt mir mein Programmer, dass es sich um den falschen
> PIC-Programmer handelt.

Da scheint mir was nicht zu stimmen. Der Programmer sagt, dass er selbst 
der falsche ist? Das hab ich noch nie gesehen. Kann es sein, dass der 
Programmer sagt, dass der falsche (oder kein) PIC angeschlossen ist?

Soweit es keine brandaktuellen PICs sein müssen, kannst du den Brenner8 
von Sprut nehmen, der kann auch LV PICs beschreiben und kostet an 
Bauteilen ca 15-20€. Das PICKIT3 von Microchip direkt kostet incl. 
Versand knapp 70€ und ein Nachbau bzw PICKIT2, der auch nicht viel 
weniger kann kostet bei ebay unter 50€.
frank85 schrieb:
> Dafür benötigt man
> natürlich wieder einen anderen Programmer der natürlich gleich wieder
> incl. Versand 100€ kosten würde (brauch ihn auch verm. nur einmal)

von Karl H. (kbuchegg)


Lesenswert?

frank85 schrieb:

> Jetzt zu meiner Frage. Kann ich mit einem Compiler das hex File
> erstellen und mit einem anderen Compiler/Programmer (den ein Freund von
> mir hat), das hex file draufziehen? In dem hex file steht doch am Anfang
> jeder Zeile eine Adresse und dahinter der Code, der dort abgelegt werden
> muss (oder hab ich da was falsch verstanden?)

Musst du ausprobieren.
Aber normalerweise lautet die Antwort: ja das geht.
Das Hex-File ist meistens ein sog. Intel-Hex File und dessen Format ist 
standardisiert.

von frank85 (Gast)


Lesenswert?

>Da scheint mir was nicht zu stimmen. Der Programmer sagt, dass er selbst
>der falsche ist? Das hab ich noch nie gesehen. Kann es sein, dass der
>Programmer sagt, dass der falsche (oder kein) PIC angeschlossen ist?

Ja, wirklich doof beschrieben. Natürlich meinte ich, dass die Software 
erkennt dass der falsche Programmer dran hängt.

Trotzdem vielen Dank. Ich werd mal schauen was ich mit einem von Spruts 
Brennern anfangen kann.

von ich (Gast)


Lesenswert?

Welches Programmiergerät benutzt du denn und welche Software?

von Carsten S. (dg3ycs)


Lesenswert?

frank85 schrieb:
> Hallo,
>
> ich habe folgendes Problem, ich programmiere meine 18F-PICs mit einem
> Evalboard. Jetzt hab ich ein Projekt bei dem ich ein LV PIC 18F45J11
> vewendet habe, die Platine auch soweit geätzt und bestückt (SMD), was
> jede menge Arbeit war.
> Jetzt sagt mir mein Programmer, dass es sich um den falschen
> PIC-Programmer handelt. Da es ein LV Typ ist. Dafür benötigt man
> natürlich wieder einen anderen Programmer der natürlich gleich wieder
> incl. Versand 100€ kosten würde (brauch ihn auch verm. nur einmal).

Welchen Programmer verwendest du denn Jetzt?
Sicher keinen halbwegs aktuellen von Microchip?

Die 18LF45J11 können laut Liste ohne weiteres Zubehör mit dem PK2, dem 
PK3 sowie ICD2 & 3 gebrannt werden.
Falls du einen Programmer davon hast versuche mal die aktuellste "Final" 
Version von MPLAB (Nicht MPLAB X beta, geht evtl auch aber ist 1. noch 
beta, 2. Riesig) zu installieren, evtl ist deine Version auch einfach 
nur zu alt.

Ach ja: Wenn du gewillt bist etwas mehr mitzubestellen kannst du für zum 
Beispiel 70 Euro den PK3 Original plus weiteres Elektronikzeugs im Wert 
von 30-40 Euro bekommen. (Mindestbestellwert)
Ansonsten kostet der PK3 original incl Versand hier in DL so ab 50-60 
Eur.

Einen Nachbau bekommst du bereits für unter 30 Euro!


Und eins noch:
Finger weg von diesen ganzen nicht kompatiblen Selbstbaudingern...
Die Zeiten sind vorbei, Der Materialaufwand liegt nur geringfügig unter 
den Kosten eines gekauften Pickit (evtl. Clones) das 100% von Microchip 
in MPLAB unterstützt wird. Dafür braucht es Zeitaufwand den aufzubauen 
und deutlich mehr umstand bei jedem einzelnen Schreibvorgang. Und die 
Unterstützung zhukünftiger Pics ist mehr als ungewiss. Die Zeiten der 
Selbstbaudinger sind vorbei!

Gruß
Carsten

von frank85 (Gast)


Lesenswert?

>Welchen Programmer verwendest du denn Jetzt?

Also ich benutze das BigPIC4 von Microelektronika, welches ich 
modifiziert habe, damit ich viele andere PICs brennen kann. Dazu benutze 
ich den mikroC Pro for PIC Compiler.

Ich glaube ich werde mir das PICkit2 bestellen. Wobei ich mir irgendwie 
noch nicht sicher bin, ob ich ohne weiteres mit einem anderen Programmer 
den hex-Code aufspielen kann.
Das mikroC Pro for PIC ist zwar super comfehtortabel was das 
programmieren angeht, sprich fertige Funktionen, man muss sich selten um 
die Hardwaredetails kümmern usw.
Aber was schon mal blöd ist, ist das die ganzen headerfiles geschützt 
sind, ich meine ich kann sie nicht öffnen.
Dazu kommt noch, dass im Programmer der sich nach dem compilieren 
öffnet, es noch weitere Einstellmöglichkeiten gibt, sprich Watchdog, 
Brown-Out usw.
Und deshalb weiß ich nicht wie sehr eventuell das hexfile zusätzliche 
Informationen beinhaltet.
Aber ich hoffe, wie Karl Heinz Buchegger schrieb es sich um ein Standart 
handelt und somit keine Rolle spielt welchen Compiler man benutzt.
(Übrigens mein o.g. Freund sein Brenner unterstüzt die 18FJ PICs nicht).

von Joachim (Gast)


Lesenswert?

Also eigentlich sollte das gehen. Ich verwende die Microchip IDE+C18 und 
mir ist an dieser Stelle nichts davon bekannt, daß irgendein Programmer 
Fuse-Bits ändert oder ähnliches. Was allerdings geht, ist, per IDE die 
Bits zu setzen (vermutlich geht das auch mit deiner Softw, was sich aber 
bestimmt unterbinden lässt.)

Schade, daß es hier so wenig PIC-Enthsiasten und PIC-Projekte gibt.
Ich mag diese Biester eigentlich, habe vor Urzeiten mal mit nem 452 
einen Datenkonverter gemacht, aktuell hab' ich auf Olimex-Basis mit 
einem 18F67J60 einen Belichtungsreihen-Auslöser (z.B. für 
Zeitrafferaufnahmen für Sonnenuntergänge) zu Übungszwecken, damit Finger 
und Geist geschmeidig bleiben, gestrickt. Aber wahrscheinlich juckt das 
Dingens eh keinen...

Joachim

von ich (Gast)


Lesenswert?

Ich benutze auch den mikroC Compiler von Mikroelektronika. Bei den 
Projekteigenschaften kannst du den PIC und die Frequenz auswählen. 
Zusätzlich werden aus einer Datenbank die passenden Configs gelesen, 
sodass man nicht im Datenblatt nachgucken muss, für was jetzt z.b. das 
Config-Bit 10 steht. Dort hast du dann eine Überschrift, z.b. für den 
OSC, und dort kannst du dann einstellen, ob LP, RC, intern usw. Durch 
die ganzen Auswahlen wird dann das Configwort/wörter erstellt. Die 
Config und der PIC-Typ wird in der Hex-Datei gespeichert, damit die 
Brenn-Software (egal welche) kontrollieren kann, ob das richtige Bauteil 
drinne ist. Manche Brennsoftware, wie z.B. usburn, kann nachträglich die 
Configbits ändern. Das Programm erkennt aus der Hex-File, für welchen 
PIC-Typ das Programm ist und guckt dann in der Datenbank nach, welches 
Config-Bit für was steht und zeigt es an. Mit dem ändern der 
Einstellungen, ändert er nur den Bereich der Hex-Datei, wo auch die 
Config steht. Die Angabe der Taktung vom PIC hat ansich nichts mit der 
Hex-Datei zutun. Die wird nur dazu benutzt, um z.b. den Delay-Funktionen 
oder Software-I²C-Funktionen zu sagen, wielange sie warten müssen. Ein 
delay_ms(50) wartet 50 ms, dazu muss der Compiler bzw. die 
Delay-Funktion wissen, wie schnell der PIC läuft.

Hast du einmal die ("genormte") Hex-Datei kannst du es mit MPLab oder 
usburn oder Microelektronika brennen. Ich z.B. programmiere und 
compiliere den C-Code in mikroC, lade dann mit PicKit3 die Hex-File und 
brenne es auf den PIC.

Nebenbei, hat es schon jemand geschaft, den PICKIT3 in den mikroC zu 
integrieren? Bei mir ist er nie in der Liste der angeschlossenen 
Brenner.

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
Noch kein Account? Hier anmelden.