Forum: Mikrocontroller und Digitale Elektronik HEX-Datei erstellen


von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Wer kann mir eine HEX-Datei erstellen. Vorhanden sind:
MLAB ICD 4 Compiler ist vorhanden mit Adapter.
Programm MPLAB X IDE v. 5.45 ist vorhanden
C-Datei ist vorhanden
Include-Dateien sind vorhanden.

HEX-Datei soll hieraus erstellt werden.
(über TeamViewer, mit Zugriff auf Compiler incl. Adapter. Verbunden mit 
der Geräte-Hardware)

Wer kann das so zeitnah realisieren?

von Gerald K. (geku)


Lesenswert?

Welches Quellformat?

Für reine Binärdateiengibt es:

https://www.keil.com/download/docs/113.asp

Welches Hex-Format? Intel? Motorola?

von Reinhard B. (rb21)


Lesenswert?

Programm ist in C geschrieben. Hex wird mit dem C-Compiler in 
Microchip-Hex (müßte Intel sein) compiliert

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft das Dashboard weiter

von Reinhard B. (rb21)


Lesenswert?

Das sind die Fehlermeldungen!!

CLEAN SUCCESSFUL (total time: 26ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/ReinhardBritten/Desktop/brs501 
1.3/brs501 Release 1.3.X'
make  -f nbproject/Makefile-default.mk 
dist/default/production/brs501_Release_1.3.X.production.hex
make[2]: Entering directory 'C:/Users/ReinhardBritten/Desktop/brs501 
1.3/brs501 Release 1.3.X'
"C:\Program Files (x86)\Microchip\xc8\v1.41\bin\xc8.exe" --pass1 
--chip=16F877A -Q -G    --double=24 --float=24 
--opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore 
--mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default 
--summary=default,-psect,-class,+mem,-hex,-file 
--output=default,-inhx032 
--runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-dow 
nload,-stackcall,+clib    --output=-mcof,+elf:multilocs 
--stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" 
"--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: 
(%n) %s"     -obuild/default/production/display_74595.p1 display_74595.c
"C:\Program Files (x86)\Microchip\xc8\v1.41\bin\xc8.exe" --pass1 
--chip=16F877A -Q -G    --double=24 --float=24 
--opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore 
--mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default 
--summary=default,-psect,-class,+mem,-hex,-file 
--output=default,-inhx032 
--runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-dow 
nload,-stackcall,+clib    --output=-mcof,+elf:multilocs 
--stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" 
"--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: 
(%n) %s"     -o"build/default/production/brs501 Release.p1" "brs501 
Release.c"
"C:\Program Files (x86)\Microchip\xc8\v1.41\bin\xc8.exe" --pass1 
--chip=16F877A -Q -G    --double=24 --float=24 
--opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore 
--mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default 
--summary=default,-psect,-class,+mem,-hex,-file 
--output=default,-inhx032 
--runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-dow 
nload,-stackcall,+clib    --output=-mcof,+elf:multilocs 
--stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" 
"--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: 
(%n) %s"     -obuild/default/production/dac_74595.p1 dac_74595.c
display_74595.c:20: warning: (107) illegal # directive "IFNDEF"
display_74595.c:20: warning: (163) unexpected text in control line 
ignored
display_74595.c:27: warning: (107) illegal # directive "ENDIF"
display_74595.c:30: error: (194) ")" expected
display_74595.c:32: warning: (349) non-prototyped function declaration 
for "write_expanded_outputs"
display_74595.c:32: error: (313) function body expected
display_74595.c:34: warning: (349) non-prototyped function declaration 
for "output_low"
display_74595.c:34: error: (313) function body expected
display_74595.c:35: error: (313) function body expected
display_74595.c:37: error: (285) no identifier in declaration
display_74595.c:37: warning: (374) missing basic type; int assumed
display_74595.c:37: error: (314) ";" expected
display_74595.c:37: warning: (374) missing basic type; int assumed
display_74595.c:37: error: (314) ";" expected
display_74595.c:37: error: (285) no identifier in declaration
display_74595.c:37: warning: (374) missing basic type; int assumed
display_74595.c:37: error: (314) ";" expected
display_74595.c:42: error: (285) no identifier in declaration
display_74595.c:42: warning: (374) missing basic type; int assumed
display_74595.c:42: error: (314) ";" expected
dac_74595.c:20: warning: (107) illegal # directive "IFNDEF"
dac_74595.c:20: warning: (163) unexpected text in control line ignored
dac_74595.c:27: warning: (107) illegal # directive "ENDIF"
dac_74595.c:30: error: (194) ")" expected
dac_74595.c:32: warning: (349) non-prototyped function declaration for 
"write_expanded_outputs1"
dac_74595.c:32: error: (313) function body expected
dac_74595.c:34: warning: (349) non-prototyped function declaration for 
"output_low"
dac_74595.c:34: error: (313) function body expected
dac_74595.c:35: error: (313) function body expected
dac_74595.c:37: error: (285) no identifier in declaration
dac_74595.c:37: warning: (374) missing basic type; int assumed
dac_74595.c:37: error: (314) ";" expected
dac_74595.c:37: warning: (374) missing basic type; int assumed
dac_74595.c:37: error: (314) ";" expected
dac_74595.c:37: error: (285) no identifier in declaration
dac_74595.c:37: warning: (374) missing basic type; int assumed
dac_74595.c:37: error: (314) ";" expected
dac_74595.c:42: error: (285) no identifier in declaration
dac_74595.c:42: warning: (374) missing basic type; int assumed
dac_74595.c:42: error: (314) ";" expected
make[2]: *** [build/default/production/dac_74595.p1] Error 1
make[2]: *** Waiting for unfinished jobs....
(908) exit status = 1
nbproject/Makefile-default.mk:131: recipe for target 
'build/default/production/dac_74595.p1' failed
make[2]: *** [build/default/production/display_74595.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
(908) exit status = 1
nbproject/Makefile-default.mk:139: recipe for target 
'build/default/production/display_74595.p1' failed
make[2]: Leaving directory 'C:/Users/ReinhardBritten/Desktop/brs501 
1.3/brs501 Release 1.3.X'
nbproject/Makefile-default.mk:91: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/ReinhardBritten/Desktop/brs501 
1.3/brs501 Release 1.3.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 12s)

von Dirk B. (dirkb2)


Lesenswert?

Reinhard B. schrieb:
> display_74595.c:20: warning: (107) illegal # directive "IFNDEF"
> display_74595.c:20: warning: (163) unexpected text in control line
> ignored
> display_74595.c:27: warning: (107) illegal # directive "ENDIF"
> display_74595.c:30: error: (194) ")" expected
> ....

Wie wärs damit, erstmal die Fehler zu beseitigen - die Warnings zähle 
ich dazu.


Edit:
Also dac_74595.c zeigen

von Thomas W. (Gast)


Lesenswert?

Moin, -

Reinhard B. schrieb:
> Das sind die Fehlermeldungen!!
> --output=-mcof,+elf:multilocs --stack=compiled:auto:auto
> "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n)
> %s" "--msgformat=%f:%l: advisory: (%n) %s"
> -obuild/default/production/dac_74595.p1 dac_74595.c
> display_74595.c:20: warning: (107) illegal # directive "IFNDEF"
> display_74595.c:20: warning: (163) unexpected text in control line
> ignored
> display_74595.c:27: warning: (107) illegal # directive "ENDIF"

Ich wuerde in Zeile 107 in die Datei dac_74595.c gucken was drin steht. 
Der Rest wird vermutlich Folgefehler sein.

Oh we are so doomed.

Th.

von N. M. (mani)


Lesenswert?

Groß/Kleinschreibung von IFNDEF und ENDIF?

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Das sind die Fehler, was muß geändert werden?

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Das sind die Fehler, was muß geändert werden?

N. M. schrieb:
> Groß/Kleinschreibung von IFNDEF und ENDIF?

von Reinhard B. (rb21)


Lesenswert?

Wie muß ich wo und was verändern? Groß/Kleinschreibung von IFNDEF und 
ENDIF?
Benötige Hilfe

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Es muss heißen:
1
#ifndef ...
2
...
3
#endif

Also: Die beiden Schlüsselwörter müssen KLEIN geschrieben werden. In C 
ist Groß-/Kleinschreibung ohne Ausnahme relevant.

Hättest Du die Zeilen hier als Text reinkopiert und nicht als Bild 
gepostet, hätte ich den Code direkt anpassen und hier wieder 
veröffentlichen können. Den Inhalt eines Bildes abtippen ist mir zuviel 
Arbeit.

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Danke Frank, diese Fehler sind beseitigt. Was gilt es jetzt weiter zu 
tun?
Hier nochmals die restlichen Hinweise zu dac_74595

von HildeK (Gast)


Lesenswert?

Reinhard B. schrieb:
> Was gilt es jetzt weiter zu
> tun?

Die weiteren Errors und Warnings beseitigen?
Als nächstes den hier:
dac_74595.c:30: error: (194) ")" expected

Sieht ja fast so aus, als ob dac_74595.c und display_74595.c den selben 
Inhalt haben: gleiche Fehler in gleicher Zeile.

von Reinhard B. (rb21)


Lesenswert?

Das ist die komplette dac-Datei. Kann man die Fehler erkennen und was 
wäre zu tun?

#ifndef EXP_OUT_ENABLE1

#define EXP_OUT_ENABLE1  PIN_E2
#define EXP_OUT_CLOCK1   PIN_E1
#define EXP_OUT_DO1      PIN_E0
#define NUMBER_OF_74595x 1

#endif


void write_expanded_outputs1(BYTE* eox)
{
  BYTE ix;

  output_low(EXP_OUT_CLOCK1);
  output_low(EXP_OUT_ENABLE1);

  for(ix=1;ix<=NUMBER_OF_74595x*8;++ix)
  {
    // Clock out bits from the eo array
    if((*(eox+(NUMBER_OF_74595x-1))&0x80)==0)
      output_low(EXP_OUT_DO1);
    else
      output_high(EXP_OUT_DO1);

  shift_left(eox,NUMBER_OF_74595x,0);
     output_high(EXP_OUT_CLOCK1);
     output_low(EXP_OUT_CLOCK1);
  }
  output_high(EXP_OUT_ENABLE1);
  output_low(EXP_OUT_ENABLE1);

}

von Reinhard B. (rb21)


Lesenswert?

Es sieht so aus als ob die Fehler beider Dateien gleich sind. Hier auch 
die display-Datei:

#ifndef EXP_OUT_ENABLE

#define EXP_OUT_ENABLE  PIN_A2
#define EXP_OUT_CLOCK   PIN_A1
#define EXP_OUT_DO      PIN_A0
#define NUMBER_OF_74595 4

#endif


void write_expanded_outputs(BYTE* eo)
{
  BYTE i;

  output_low(EXP_OUT_CLOCK);
  output_low(EXP_OUT_ENABLE);

  for(i=1;i<=NUMBER_OF_74595*8;++i)
  {
    // Clock out bits from the eo array
    if((*(eo+(NUMBER_OF_74595-1))&0x80)==0)
      output_low(EXP_OUT_DO);
    else
      output_high(EXP_OUT_DO);

  shift_left(eo,NUMBER_OF_74595,0);
     output_high(EXP_OUT_CLOCK);
     output_low(EXP_OUT_CLOCK);
  }
  output_high(EXP_OUT_ENABLE);
  output_low(EXP_OUT_ENABLE);

}

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Das ist die komplette dac-Datei

Nein, das ist nicht die komplette Datei.

Weiter oben sagte der Compiler, dass das falsch geschriebene #ifdef in 
Zeile 20 auftaucht.
Bei Deinem Listing steht das (korrekte) #ifdef in der ersten Zeile.

Es ist ja absolut richtig nach Hilfe zu fragen.
Aber dann unvollständigen Code posten???

Häng die Dateien doch einfach mal komplett als Dateianhang an Deinen 
Post. Dann kann Dir (vermutlich) auch geholfen werden.

/regards

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Das ist die komplette dac und display-Datei

von N. M. (mani)


Lesenswert?

Da fehlen doch irgendwelche Header include.
Zum einen meckert der Compiler das er keine Prototypen für die 
Funktionen findet.
Zum anderen Frage ich mich wo die PIN defines her kommen sollen.

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Es ist richtig, es fehlen noch die header-Datei und die eine c-Datei, 
die ich als Datei angehängt habe. Zuerst einmal herzlichen Dank für Eure 
Hilfe.

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Das ist die komplette dac und display-Datei

Passt schon eher und erklärt das Problem.
Die C-Sourcen sind für den CCS Compiler. Du benutzt aber den Microchip 
XC8.

Der kennt zumindest den Typ BOOL nicht (zumindest meine etwas ältere 
Version).

Wir kommen am schnellsten weiter, wenn Du auch die Headerdatei 16f877a.h 
mal postest. Die gehört vermutlich auch zum CCS (beim xc8 heisst die 
pic16f877a.h)

/regards

von N. M. (mani)


Lesenswert?

Mach mal in die dac_74595.c noch ein
1
#include <16F877A.h>
gleich nach dem Header-Kommentar rein.

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Hallo Andreas, als Anlage habe ich die Header-Datei PIC16F877a.h 
angehängt

von Andreas H. (ahz)


Lesenswert?

Stop! Sekunde.
1
//------------------------------------------------------------------
2
//File:brs501.c
3
//Medec Systems GmbH
4
//Description: neu magnetic project
5
//
6
//
7
//Dipl. -Ing. Stefan Stoev
8
//Start:    11.03.2014
9
//Release_1.0:  27.05.2014   without sleep  
10
//Release_1.1:  06.06.2014   with sleep modus after 10 Minute
11
//Release_1.2:  01.02.2015  
12
//Release_1.3:  20.01.2016  Laufzeit Programm 29 angepasst   
13
//------------------------------------------------------------------

Das ist Code von einer Privatfirma.

Nur mal aus Neugier: Wieso darfst Du den haben? Und wieso darfst Du ihn 
posten?

/regards

von N. M. (mani)


Lesenswert?

N. M. schrieb:
> Mach mal in die dac_74595.c noch ein
>
1
> #include <16F877A.h>
2
>
> gleich nach dem Header-Kommentar rein.

Vergesse den Post von mir. Wird nichts bringen. Ich hab übersehen dass 
das unterschiedliche Hersteller sind.

Du wirst irgendwie noch die Datentypen und die Pins bekannt machen 
müssen.
Also richtige Header includieren und die PIN defines auf gültige Werte.

von Reinhard B. (rb21)


Lesenswert?

Ich bin der Eigentümer des Programmes. Es wurde aber Änderungen von 
einem weiteren Programmierer vorgenommen und seither habe ich Probleme.

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Ich bin der Eigentümer des Programmes.

Mhh, sorry. Kann ich nicht wirklich kaufen.

Die obige Datei ist von der Meditec. Und deren Eigentümer heisst doch 
Frank Lowas und nicht Reinhard B, oder?

Sry, aber ich bin da raus. SW Diebstahl ist nicht mein Spielplatz

von Reinhard B. (rb21)


Lesenswert?

Ich bin der Eigentümer, Medec ist schon lange insolvent und ich habe vor 
der Insolvenz die Programmierung machen lassen. Und genau durch diese 
Insolvenz ist der Programmierer ausgestiegen. Vielleicht hilft es Dir 
wenn ich Die eine eidesstattliche Erklärung abgebe, dass das Programm 
mein Eigentum ist. Nicht umsonst suche ich Hilfe im Netz.

von Toxic (Gast)


Angehängte Dateien:

Lesenswert?

Andreas H. schrieb:
> Sry, aber ich bin da raus. SW Diebstahl ist nicht mein Spielplatz

Ciao....

Reinhard B. schrieb:
> Wer kann mir eine HEX-Datei erstellen.

Unabhaengig von irgendwelchen Codefehlern und Kompatibilitaetsproblemen 
beachte bei der Compilierung ob du dies mit C-90 oder C-99 durchfuehrst.
Ich falle jedesmal nach einer Neuinstallation darauf 
rein:Standardmaessig wird C-99 verwendet,meine aelteren Programme habe 
ich aber mit C-90 geschrieben.Die Fehlermeldungen bei der falschen Wahl 
von C-90 oder C99 sind "verheerend"

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Medec ist schon lange insolvent und ich habe vor
> der Insolvenz die Programmierung machen lassen.

Das stimmt. Insolvenzverfahren am08.05.2018 eröffnet.

Ok. Aber dann hast Du da mehr Probleme ;)

Den CCS Compiler hast Du da nicht auch erhalten?

Ansonsten müsste man den Quellcode auf den XC8 umstellen. Und in der 
brs501.c sind diverse Timingsachen, die anscheined relativ präzise sein 
sollten.

Ist das ein Medizinprodukt?

/regards

von Reinhard B. (rb21)


Lesenswert?

der Prozessor ist: PIC16F877A und der verwendete Compiler: MPlAB ICD 4

von Reinhard B. (rb21)


Lesenswert?

Danke für die Rückmeldung. Es ist ein Medizin-Produkt. Einen CCS 
Compiler habe ich nicht erhalten. Der ehemalige Programmierer hat mir 
den MPLAB ICD 4 Compiler empfohlen, der würde funktionieren. War wohl 
mit Absicht falsch. Ich habe noch eine weitere Vorgängerversion mit 
einer bestehenden HEX und diese kann mit diesem Compiler auf den 
PIC16F877A Prozessor aufgespielt werden.

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> der Prozessor ist: PIC16F877A und der verwendete Compiler: MPlAB ICD 4

Du hast noch mehr Probleme als ich dachte ;)

Der Processor ist klar. Aber der ICD 4 ist der in-circuit debugger:
https://www.microchip.com/DevelopmentTools/ProductDetails/DV164045

Der Compiler den Du gerade benutzt ist einer aus dieser Serie:
https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-xc-compilers

Der Originalcode wurde mit einem aus dieser Familie geschrieben:
https://www.ccsinfo.com/content.php?page=compilers

(darum hat da auch das #IFNDEF geklappt. Eine echte CCS "Macke", die 
mich vor Jahren mal 2 Wochen gekostet hat)

Die Frage ist jetzt also, ob Du den Originalcompiler hast (sollte zur 
Konkursmasse gehört haben) oder ob der Code umgebaut und nochmal neu 
getestet werden muss.

/regards

von RB21 (Gast)


Lesenswert?

Welche ccs Compiler Lizenz wird benötigt? Es gibt verschiedene Versionen

von Andreas H. (ahz)


Lesenswert?

RB21 schrieb:
> Welche ccs Compiler Lizenz wird benötigt? Es gibt verschiedene Versionen

Hab eben mal nachgesehen. Selbstdie kleinste Version unterstützt Deinen 
Prozessor:
https://www.ccsinfo.com/product_info.php?products_id=PCB_full

Das ist die Command-line Version für $50. Ohne Entwicklungsumgebung, 
kann aber anscheinend in die Microchip IDEs (MPLAB X) eingebunden 
werden.

Ausserdem gibt es eine (für Deinen Prozessor ausreichende) Version mit 
IDE für $350:

https://www.ccsinfo.com/product_info.php?products_id=PCW_full

Ich vermute, die $50 reicht völlig aus.

> Ich habe noch eine weitere Vorgängerversion mit
> einer bestehenden HEX und diese kann mit diesem Compiler auf den
> PIC16F877A Prozessor aufgespielt werden.

Da hat Dein Programmierer auch recht gehabt. Die bestehende HEX kannst 
Du mit der MicroChip SW (MPLAB X) aufspielen. Es wäre dann aber die 
"alte" Version, von der Du eine HEX-Datei hast.

/regards

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Hallo Andreas, ich habe die Version für 50 $ gekauft, hat leider nicht 
funktioniert. Mit der jetzigen Version funktioniert es.
Es gibt noch Fehler, die ich als Anlage angehängt habe, vielleicht kann 
man mit weiterhelfen. Danke im Voraus

von VitalisLizenz (Gast)


Lesenswert?

https://www.brimed.de/brimed-institut-stellt-sich-vor/

Kauft/Lizensiert das Gerät wirklich jemand für 400€/Monat?
Puhh … das ist ja echte Goldgräber-Stimmung!

von Reinhard B. (rb21)


Lesenswert?

Wer kennt sich MPLAB X und ccs c Compiler aus? Die Fehler müssten mit 
dem Compiler in Verbindung stehen.
Diese Fehlermeldung tritt immer auf:

${MKDIR} ${OBJECTDIR}/_ext/201875814

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Hallo Andreas, ich habe die Version für 50 $ gekauft, hat leider nicht
> funktioniert. Mit der jetzigen Version funktioniert es.

Hallo Reinhard

Verstehe ich das richtig. Die BRS500 kannst Du kompilieren, die BRS501 
nicht?

In Deinem Screenshot sehe ich das der Compiler nicht weiss, welche 
Device er benutzen soll.
Hast Du den compiler in MPLAB X eingebunden, oder übersetzt Du das Ganze 
per Hand?

Das Bild das Du weiter oben (17.05.2021 17:35) gepostet hattest war ja 
aus MPLAB X.
Da gibt es aber das Problem, das MPLAB X anscheinend alle drei C-Quellen 
als Source hat. Also versucht MPLAB X auch alle drei Dateien einzeln zu 
übersetzen. Und das muss (!) hier schiefgehen (Don't Panik - kriegen wir 
hin ;)

Bevor wir da anfangen: Hast Du eine komplette (!!!) Kopie des gesamten 
Projekts irgendwo? Nur falls wir da was zernageln?

Danach (aber wirklich erst danach) löscht Du in MPLAB X unter "Source 
Files" (siehe das Bild vom 17.05.2021 17:35) die beiden Dateien 
display_74595.c und dac_74595.c.

Falls MPLAB X fragt, ob es die Dateien auch im Filesystem löschen soll, 
dann sagst Du NEIN.

Jetzt sollte nur noch die Datei brs501.c unter "Source Files" stehen.
Wenn das so ist, dann übersetze das Programm noch mal und poste das 
Ergebnis.

/regards

von RB21 (Gast)


Lesenswert?

Hallo Andreas,

Danke für die ausführliche Erklärung. Selbstverständlich habe ich alle 
Dateien kopiert und wir können alles versuchen eine Lösung zu finden. 
Wir können uns es auch über TeamViewer gerne gemeinsam anschauen und 
würde den Vorgang zeigen. Siehst Du hierin eine Möglichkeit, dann kannst 
Du alles genau ansehen.

Viele Grüße

von Andreas H. (ahz)


Lesenswert?

RB21 schrieb:
> Danke für die ausführliche Erklärung. Selbstverständlich habe ich alle
> Dateien kopiert und wir können alles versuchen eine Lösung zu finden.
> Wir können uns es auch über TeamViewer gerne gemeinsam anschauen und
> würde den Vorgang zeigen. Siehst Du hierin eine Möglichkeit, dann kannst
> Du alles genau ansehen.

Hallo Reinhard

Wenn Du die von mir vorgeschlagene Änderung gemacht hast, dann sollte es 
eigentlich schon erledigt sein.
Ich vermisse da das Logfile um das ich Dich gebeten hatte.

/regards

von Reinhard B. (rb21)



Lesenswert?

Danke für die Rückmeldung. Ich habe die beiden Dateien dac_74595.c und 
display_74595. c weggelassen und dann kam keine Error-Meldung. Dateien 
habe ich als Anlage angehängt. Was müsste ich jetzt tun? Mit dem Logfile 
bin ich überfordert, was genau benötigst Du? Nochmals vielen Dank.

von Reinhard B. (rb21)


Angehängte Dateien:

Lesenswert?

Ich habe die HEX aufgespielt und funktioniert einwandfrei. Kann es sein, 
dass ich die beiden Include-Dateien dac_74595.c und display_74595.c 
nicht als C-Datei mit einbinden muß? So steht es in der main-Datei 
brs501 Release 20.01.2016 (Als Datei angehängt)

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Ich habe die HEX aufgespielt und funktioniert einwandfrei. Kann es sein,
> dass ich die beiden Include-Dateien dac_74595.c und display_74595.c
> nicht als C-Datei mit einbinden muß? So steht es in der main-Datei
> brs501 Release 20.01.2016 (Als Datei angehängt)

Hallo Reinhard

Ja, genau darum habe ich Dich die Dateien ja auch bei den Source files 
entfernen lassen. Das war aber nur um zu sehen, ob da noch andere Fehler 
auftreten, z.B. fehlende Funktionen aus der CCS Library.

So wie das aktuell implementiert ist ist das aber allerunterste 
Schublade.
Es sind keine include Dateien, sondern C-Quellcode.
Den bindet man aber nicht über #include ein sondern übersetzt ihn 
separat.
Ansonsten bekommt man später massive Probleme.

Obwohl es jetzt läuft solltest Du den Code unbedingt in eine "saubere" 
Version bringen, damit man beim nächsten Mal noch mehr Probleme kriegt.

/regards

von Reinhard B. (rb21)


Lesenswert?

Hallo Andreas,

wie gesagt, das Aufspielen auf den Prozessor hat tadellos funktioniert 
und die Funktion der Geräte ist auch bestens. Was sollte ich tun um eine 
"saubere Version" zu haben? Was ist noch mit den 2 C-Quellcodes zu 
machen? Wie wichtig sind diese noch zusätzlich?

Beste Grüße

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Was sollte ich tun um eine
> "saubere Version" zu haben? Was ist noch mit den 2 C-Quellcodes zu
> machen? Wie wichtig sind diese noch zusätzlich?

Du solltest zuerst die beiden #include-Zeilen in 
rs501_Release_20.01.2016.c, Zeile 17 & 18, auskommentieren und die 
beiden Dateien wieder als Sourcen in das MPLAB X Projekt einfügen.

Dann bekommst Du wieder den ursprünglichen Fehler, dass der Compiler 
nicht weiss, welches Device er nehmen soll.
Das kannst Du aber verhindern, indem Du in die beiden Dateien 
dac_74595.c und display_74595.c, direkt nach dem Header (also Zeile 19?) 
ein "#include <16F877A.h>" (natürlich ohne Anführungszeichen) 
reinschreibst.

So wie in der brs501_Release_20.01.2016.c, Zeile 16.

Dann sollte das Projekt auch wieder kompilierbar sein.
Wenn es klappt, dann kannst Du in der rs501_Release_20.01.2016.c die 
Zeile 17 & 18 endgültig löschen.

Damit verhinderst Du zumindest, dass der nächste Programmierer beim 
lesen des Codes Weinkrämpfe bekommt.

Ansonsten gibt es diverses Verbesserungspotential. Ich habe jetzt nicht 
explizit darauf geachtet aber Fehlerbehandlung ist mir z.B. nirgends 
aufgefallen.

Weiterhin solltest Du abklären, inwieweit Du Deine Änderung bei der 
MPG-Prüfstelle abklären musst. Ich bin seit rund 20 Jahren aus dem 
Medizingerätebereich raus, kann Dir also leider nicht sagen was da noch 
an Änderungen etc. inzwischen aufgelaufen ist.

In anderen Bereichen muss man aber immer eine Rezertifizierung machen, 
wenn sich Software geändert hat.

/regards

von Reinhard B. (rb21)


Lesenswert?

Ich habe die beiden Dateien aus Zeilen 17 & 18 in das MPLAB eingefügt. 
Dann habe ich in dac_74595.c und display_74595.c je #include <16F877A.h> 
eingefügt in Zeile 19. Beim Kompilieren sind die Fehler wieder 
aufgetaucht. Auch hat das löschen der Zeilen 17 & 18 in brs501 
Release_20.01.2016 nichts gebracht.

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Ich habe die beiden Dateien aus Zeilen 17 & 18 in das MPLAB
> eingefügt.
> Dann habe ich in dac_74595.c und display_74595.c je #include <16F877A.h>
> eingefügt in Zeile 19. Beim Kompilieren sind die Fehler wieder
> aufgetaucht. Auch hat das löschen der Zeilen 17 & 18 in brs501
> Release_20.01.2016 nichts gebracht.

Schick mal bitte Screenshots

/regards

von Reinhard B. (rb21)



Lesenswert?

Guten Morgen Andreas,

anbei div. Screeshots.

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Guten Morgen Andreas,
>
> anbei div. Screeshots.

Hallo Reinhard

Danke für die Screenshots. Der Fehler wird anscheinend durch die .h 
getriggert (nicht durch die .c Files)

Anscheinend hat diese Version des CCS compilers die unsinnige 
Problematik, das man nur ein Source File in der IDE haben darf.

Das scheint ein viel diskutiertes Problem zu sein. Siehe z.B. 
http://www.ccsinfo.com/forum/viewtopic.php?t=46750

Ich bin mir relativ sicher, dass man das auch mit einem einfachen 
Makefile in den Griff kriegen würde. Ein Compiler der wirklich nur ein 
einzelnes File im Projekt haben kann wäre ja weitgehend sinnlos. Aber da 
müsste ich dann etwas tiefer einsteigen und einiges ausprobieren. Ohne 
Compiler relativ sinnlos.

Wenn Du keine weiteren Änderungen planst dann würde ich vorschlagen, 
dass Du die letzte, laufende BSR501 Variante, vom  20.05.2021 11:16, 
weiter benutzt. Da scheinen Display & Tasten ja zu funktionieren. Die 
2te Chain, die das Magnetfeldtiming macht hast Du vermutlich noch nicht 
überprüft.

/regards

von Stephan (Gast)


Lesenswert?

Andreas H. schrieb:
> Wenn Du keine weiteren Änderungen planst dann würde ich vorschlagen,
Und ich würde vorschlagen, dass Du Dir die ganze Mühe auch bezahlen 
lässt. Wie weiter oben zu lesen ist, ist das ja klar ein (teures) 
kommerzielles Produkt (auch noch MPG).

von Andreas H. (ahz)


Lesenswert?

Stephan schrieb:
> Und ich würde vorschlagen, dass Du Dir die ganze Mühe auch bezahlen
> lässt.

Welche Mühe? Bis jetzt hat das alles zusammen nur ein paar Minuten 
gekostet. Nichts was ich in anderen Threads nicht auch gelegentlich 
mache.

Wenn da wirklich "echter" Support nötig wäre, dann könnte der TO sicher 
auch jemanden dafür engagieren. SOO schwierig ist die Anwendung ja nun 
wirklich nicht.

/regards

von Reinhard B. (rb21)


Lesenswert?

Hallo Andreas,

zuerst einmal vielen herzlichen Dank für Deine Hilfe. Ich bin riesig 
froh einen so angenehmen und kompetenten Menschen gefunden zu haben, der 
mir weiter helfen konnte.
Was die 2te Chain, die das Magnetfeldtiming macht, soll das die Start 
und Stop-Steuerung sein? Was ist damit gemeint?

Herzliche Grüße
Reinhard Britten

von Andreas H. (ahz)


Lesenswert?

Reinhard B. schrieb:
> Ich bin riesig
> froh einen so angenehmen und kompetenten Menschen gefunden zu haben

Danke. Man merkt, Du kennst mich nicht ;)

> Was die 2te Chain, die das Magnetfeldtiming macht, soll das die Start
> und Stop-Steuerung sein? Was ist damit gemeint?

Ich hatte beim Überfliegen des Codes den Eindruck, dass es neben der 
Display/Tasten-Steuerung auch noch eine 2te '595 Kette gibt die das 
Magnetfeld ein und ausschaltet. Kann sein das ich mich da irre. Wie 
gesagt, hab den Code nur kurz überflogen, weil wir ja eigentlich Deinen 
Compilerfehler gesucht hatten.

Insgesamt war aber gemeint, dass Du ja irgendwie überprüfen musst, dass 
das **komplette** Gerät mit der neuen Softwareversion funktioniert. Also 
nicht nur den Teil den Du direkt sehen kannst.

/regards

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.