Forum: Mikrocontroller und Digitale Elektronik PIC16C711 durch PIC16F716 ersetzten??


von Martin M. (rst)


Lesenswert?

Hallo,

wir haben ca. 20 Jahre alte Geräte, in denen ein PIC16C711-20/P 
enthalten ist. Die Entwicklungsumgebung (Emulator) existiert schon lange 
nicht mehr. Die Programme wurden damals mit Assembler geschrieben.

Der Einkauf hat nun den Vorschlag bekommen, den PIC16F716-I/P als 
preisliche Alternative zu verwenden. Ich habe seit damals nie mehr mit 
PIC´s gearbeitet. Ich befürchte so einfach ist es nicht, man wird das 
alte HEX-File nicht einfach in den Ersatztyp brennen können. Oder sind 
die neuem Prozessoren Code-kompatibel zu den alten?

Gruß
Martin

von Teo D. (teoderix)


Lesenswert?

Warum schaust du nicht is Dabla???

Trotzdem hier meine Prognose (ich schau sicher nicht, für dich ins 
Dabla!), das wir funzen.

von Jürgen G. (Firma: Elektronikentwickler Aachen) (fjgensicke)


Lesenswert?

Wenn das Gerät noch läuft und die Bauteile noch verfügbar sind, macht es 
eigentlich nur ein einem einzigen Fall Sinn, über einen billigeren Erstz 
zu diskutieren:
Ihr verkauft von den Dinger mehr als 1000 Stück pro Jahr.
Beide PIC sind zB. bei Farnell noch zu kaufen:
PIC16C711-20/P: 2,14 @ 100Stk
PIC16F716-I/P: 0,866 @ 100Stk

Problematisch finde bei den beiden hier, dass Sie noch unterschiedliche 
Technolohie sind EEPROM / FLASH
Den C711 wirdst Du nur mit einem echten Programmer (von damals oder evtl 
Galep) programmiert bekommen, den F716 dagegen per ISP.

von Martin M. (rst)


Lesenswert?

Teo D. schrieb:
> Warum schaust du nicht is Dabla???
>

Fehlende Zeit für solche Altlasten...

von Martin M. (rst)


Lesenswert?

Jürgen G. schrieb:
> Ihr verkauft von den Dinger mehr als 1000 Stück pro Jahr.

wir verkaufen ca. 3.000 bis 5.000 Stück pro Jahr

von Klaus (Gast)


Lesenswert?

Martin M. schrieb:
> Oder sind
> die neuem Prozessoren Code-kompatibel zu den alten?

Code kompatibel könnten sie sein, aber es gibt wesentlich mehr Special 
Function Register, und die auch auf Adressen, die beim 711 RAM sind. 
Ohne das Programm anzupassen geht es nicht.

MfG Klaus

von pic (Gast)


Lesenswert?

Geht eigentlich problemlos, Timer1 OSC wurde verändert, BOR-PWRT 
entkoppelt
beim C->F .
Wenn ein paar Byte im code frei sind, geht die Migration
des 711 auf 716 problemlos auch ohne Sourcen, PWM ist dazugekommen, und 
ADC Register haben die Adressen geändert, sofern nicht indirect auf ADC 
zugegriffen wird, was eher unüblich ist.

von Daniel E. (everyday_fun69)


Lesenswert?

Schon mal geprüft, ob nicht auch ein PIC18F geht? Notfalls mit 
adapterleiterplatte. Mit MPLAB und neuem Programmet zeitgemäßer.

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Martin M. schrieb:
> Ich befürchte so einfach ist es nicht, man wird das
> alte HEX-File nicht einfach in den Ersatztyp brennen können. Oder sind
> die neuem Prozessoren Code-kompatibel zu den alten?

Das HEX file einfach so wie es ist weiterzuverwenden wird mit großer 
Wahrscheinlichkeit nicht gehen. Das Problem ist hier die Lage der SFR. 
HAt Klaus ja schon weiter oben geschrieben. Das Speichermodell des 
16F716 ist eine weiterführung des 16C715. Neben den zusätzlichen SFR ist 
hier vor allem die unterschiedliche Lage der ADCON register sowie 
reservierte Adressen die beim 711 noch GPR waren das Problem.

Es liegt aber letztendlich am derzeit vorhandenem Programm selbst ob es 
evtl. gehen würde. Sind die Register unterhalb 20h nicht verwendet und 
auch der AD Wandler ist nicht benötigt könnte es schon reichen das 
Abschalten der AD Wandler mit der richtigen Adresse hineinzupatchen.
Aber wenn eine der beiden Bedingungen nicht zutrifft wird es schon sehr 
schwierig...
(Das "Hineinpatchen" des "ADCON = 0" direkt im Binärfile habe ich z.b. 
bei der Portierung eines 16C84 Programmen auf 16F628 gemacht wo ich 
keinen Zugriff auf den Quellcode hatte. - hätte natürlich auch die 16F84 
nachkaufen können. Aber es war Samstag NAchmittag,ich war ungeduldig und 
von den 628 waren genug vorhanden...)

Eine Möglichkeit wäre sonst vielleicht noch das Programm durch einen 
Disassembler zu jagen, die Adressen zu ändern und ein neues Hex File zu 
erzeugen. Ist aber auch nicht ganz so trivial. Liegt wieder sehr stark 
am Programm ob das viel oder wenig Aufwand ist. Vor allem ist 
interessant ob im ROM Datentabellen liegen oder nur Programmcode.

Aber grundsätzlich sollte klar sein das bei einem Controllerwechsel alle 
Versuche auf basis des alten Hex Files sich das "neue" Programmierfile 
zusammenzubasteln nur ein allerletzter Ausweg sein sollten.


Martin M. schrieb:
> Die Entwicklungsumgebung (Emulator) existiert schon lange
> nicht mehr. Die Programme wurden damals mit Assembler geschrieben.

Du schreibst das die Hardware nicht mehr vorhanden ist...
Wie schaut es denn mit den Quellcodes (*.ASM) selber aus?
Das sind ja ganz triviale Textdateien...
Sind die noch Auffindbar?

Wenn ja, dann seit ihr richtig gut raus.
Wenn der ursprüngliche Programmierer auch nur halbwegs ordentlich 
gearbeitet hat, dann sollte sich eine Modifikation auf Basis der 
Quelldateien ganz einfach bewerkstelligen lassen.
Das reine editieren des Codes dürfte nur wenige Minuten in Anspruch 
nehmen.
Mit dem gründlichen Studium und vergleich der beiden Datenblätter sowie 
einer grundsätzlichen Kontrolle lass es für jemanden der diese beiden 
Controller nicht in den letzten Tagen noch bearbeitet hat einen 
Arbeitstag sein.
(Die Produkttests am fertigen Gerät kommen naürlich noch dazu...)

An HArdware braucht es nicht viel. Ein Pickit3 für ~20-40 Euro reicht 
aus.
(Was ich nicht aus dem Kopf weiß ist wie es mit dem Debugen aussieht. 
Also ob der F716 Debughardware on Board hat, man einen Debug Header (~30 
Euro) benötigt oder ar keine günstige Möglichkeit gibt.
Allerdings denke ich das bei einer reinen Anpassung der Adresse im 
funktionierenden Quellcode es auch sehr gut ohne Debugmöglichkeit geht.

Daher wäre es jetzt das erste was ich tun würde die Verfügbarkeit der 
ASM Quellen abzuklären.

Gruß
Carsten

von Carsten S. (dg3ycs)


Lesenswert?

Daniel E. schrieb:
> Schon mal geprüft, ob nicht auch ein PIC18F geht? Notfalls mit
> adapterleiterplatte. Mit MPLAB und neuem Programmet zeitgemäßer.

Um Zeitgemäß zu sein braucht es nicht unbedingt einen PIC18. Auch bei 
den PIC16 hat Microchip in letzter Zeit einige wirklich nette Varianten 
auf dem MArkt gebracht. Teilweise deutlich leistungsfähiger als ältere 
PIC18.

Nach dem auch beide Varianten vom gleichen Compiler unterstützt werden 
und die meisten neuen PIC16 dassselbe Schema beim Pinning haben wie die 
PIC18 sind die Grenzen zwischen dne beiden Familien ziemlich verwischt.

Allerdings wäre ein Umstieg auf PIC18 deutlich aufwendiger als der von 
16C711 auf 16F716. Immerhin gibt es ja schon ein laufendes Programm.
Und ich denke dem TO geht es darum den Aufwand beim Umstieg so klein wie 
möglich zu halten!

Zudem geht es ja um eine Kommerzielle Anwendung. Und da geht es einzig 
um die Frage ob der µC für die Aufgabe geeignet ist, ob die 
Verfügbarkeit gesichert ist und vor allem was der Kostet.

Solche Dinge wie "Zeitgemäß" sind da absolute Nebensächlichkeiten. 
Insbesondere bei bestehenden Produktlinien.

Wenn überhaupt, dann spielt es maximal bei der Neuentwicklung von 
Produkten eine Rolle. Aber auch nur soweit es Einfluss auf die 
Verfügbarkeit, den Preis oder den Entwicklungsaufwand hat.

Gruß
Carsten

von Martin M. (rst)


Lesenswert?

Quellcode ist noch vorhanden. Habe das Ganze auch mal mit MPLAB 
compiliert. Auch mit dem anderen Prozessortyp kommt das identische 
HEX-File am Ende raus. Scheint also diesbezüglich kein Problem zu sein. 
Nun müßte ich mal nach einem neuen preiswerten PIC-Programmer schauen, 
der einen DIP-Schnellspannsockel hat. Der von Microchip vorgeschlagene 
DV007004 (Programmer) und AC164301 (Adapter für DIP-Sockel) ist ja 
ziemlich teuer...

von Martin M. (rst)


Lesenswert?

Habe mal etwas gegoogelt: taugt das Microchip Technology 
Entwicklungsboard AC162049-2 was?

http://www.voelkner.de/products/532297/Microchip-Technology-Entwicklungsboard-AC162049-2.html?ref=43&products_model=D76421&gclid=CNjV1NGp8s0CFcrjGwodxmYA_A


Kostet ca. 104 €, also um Faktor 10 weniger als der DV007004 
(Programmer) + AC164301 (Adapter für DIP-Sockel). Klar, dafür hat es 
auch kein Gehäuse dran.

: Bearbeitet durch User
von stefan (Gast)


Lesenswert?

Kauf Dir doch ein Pickit 3
und den passenden Sokel dazu
Dann biste um die 30 Euro

von Pic T. (pic)


Lesenswert?

Bei microchip Gibt es den Programmier service. Könnte sich für euch 
eventuell lohnen.
Als production Programmer TPG100002 .

: Bearbeitet durch User
von Carsten S. (dg3ycs)


Lesenswert?

Martin M. schrieb:
> Quellcode ist noch vorhanden. Habe das Ganze auch mal mit MPLAB
> compiliert. Auch mit dem anderen Prozessortyp kommt das identische
> HEX-File am Ende raus. Scheint also diesbezüglich kein Problem zu sein.

HHHMM, Wirklich exakt dasselbe HEX file?
Würde jetzt zwar nicht viel Geld darauf verwetten das auf jeden Fall ein 
Unterschied da sein müsste, aber etwas Merkwürdig finde ich das schon.
Da kommt mir ein Verdacht...

HAst du GENAU DASSELBE ASM File genommen und einfach nur in MPLAB unter 
Devices den Controller umgestellt?
Dann ist das natürlich kein Wunder das die HEX file gleich sind.

Oder hast du das ASM File vorher doch schon an den neuen Controller 
angepasst?

WEnn ersteres:
ASM, gerade wenne s für die Verwendung mit den älteren Umgebungen wie 
MPLAB LAANGE vor 8.xx, geschweige den MLABX geschrieben wurde, ist nicht 
C.

Da nimmt der Assembler keine Automatischen Anpassungen am Code vor.
Mit der Einstellung des Devices legt man NUR die Einstellungen für den 
Brennvorgang fest. (Erwartete ID, Spannung und ggf. Algorithmus)

Aber es hat normalerweise zumindest bei älteren Quellcode keinen 
Einfluss auf die tatsächliche Zielhardware!
Gerade in den frühen Jahren war es zwingend notwendig im Quellcode 
selbst den Controllertyp und das jeweilige Prozessorspezifische Include 
im Code selbst einzutragen.

Am Anfang des Programms steht dann soetwas wie:
    list p=16f711
    include "p16f711.inc"

Und DIESE BEIDEN Einträge bestimmen in erster Linie ob das Hex File dann 
auf dem Zielcontroller funktioniert oder nicht.

Heute ist es IMHO auch bei PIC ASM nicht mehr zwingend notwendig das 
Anzugeben. Wenn die Einträge fehlen sucht die IDE m.W. wie bei C auch 
selbst die richtigen Includes für den in der IDE eingestellten 
Controller heraus. Wenn diese Einträge aber vorhanden sind, dann werden 
diese auf jeden Fall auch beachtet!
(Ganz sicher bin ich mir wegen der Automatik nicht, da ich aus 
Gewohnheit in den gelegentlichen Fällen in denen ich noch ganz neuen 
Code in ASM schreibe auch weiterhin wie ehedem im Quellcode selbst die 
Angaben machen)

Falls sich diese Zeilen also bei dir im Quellcode finden und du es nicht 
schon gemacht hast musst du diese auf jeden Fall anpassen.

Ausserdem musst du bei ASM ZWINGEND auch im Quellcode selbst überprüfen 
ob nicht evtl. Register benutzt werden die beim neuen Typ entwerde als 
SFR vorgesehen sind oder gar nicht mehr vorhanden sind da im Bereich 
mitten zwischen den SFR gelegen.
Einen Eintrag wie :

MeineVariable equ 0x1f
...
...
...
decfsz MeineVariable, 1

Der auf dem 711 absolut zulässig ist wird auf dem 716 ebenfalls 
"gebaut",
Spätestens beim DECFSZ aber haut es dir wie bei jedem anderen 
schreibenden Zugriff auf dieses Register die AD-Wandler Einstellungen 
auseinander. Einfach weil eben genau an dieser Adresse die ADCON 
Register liegen.

Daher müssen diese Fallstricke Manuell gesucht und entschärft werden.
Wenn der ursprüngliche Programmierer aber auch nur halbwegs sauber 
gearbeitet hat, so dürfte das aber kein Problem sein.
Dann hat er -beispielsweise mit "equ"- alle Register schön am Anfag des 
Quellcodes benannt und verwendet im Programm nur noch die Namen...
Dann reicht es aus kur zu schauen ob kritische Adressen verwendet werden 
und diese dann schnell abzuändern.

ISt nicht völlig ohne Arbeit, aber insgesamt ist de rAufwand wenn die 
Quellcodes vorhanden sind absolut überschaubar. Je nach Programm liegt 
der Aufwand irgendwo zwischen 5 Minuten und einem Nachmittag.

Kritisch wird es allerdings wenn der Ursprüngliche Programmierer im 
Programm selbst nicht mit Namen/Labels gearbeitet hat, sondern die 
Adressen direkt verwendet hat.
Wenn also z.B. statt "decfsz MeineVariable, 1" ständig "decfsz 0x1f, 1" 
im Code steht. -> Dann muss man leider zwingend das gesamte Programm 
Zeile für Zeile von Hand durchforsten.


> Nun müßte ich mal nach einem neuen preiswerten PIC-Programmer schauen,
> der einen DIP-Schnellspannsockel hat. Der von Microchip vorgeschlagene
> DV007004 (Programmer) und AC164301 (Adapter für DIP-Sockel) ist ja
> ziemlich teuer...

Wenn es nur um die Grundsätzliche Programmierung geht würde ich einfach 
nur einen PicKit3 und einen "textool" Adapter nehmen. Etwas in dieser 
Art:
http://www.ebay.de/itm/PIC-ICD2-PICKIT-3-2-Programmier-Adapter-PICKIT2-PICKIT3-Universal-Programmer-/252117924313?hash=item3ab36639d9:g:k0MAAOSw5dNWql8T

Bei Versand aus DL gerade mal 6 Euro, direkt aus China würde man den 
sogar für 3 Euro inkl. Versand bekommen...

Wenn man es Mechanisch richtig Toll haben will kann man sich den Adaper 
natürlich auch selber Bauen wie man möchte. Es ist eine rein elektrische 
Verbindung zum PK3 (PK2, ICD oder was auch immer...) ohne eigene 
Elektronik. Für Produktionszwecke im tausenderbereich würde ich schon 
einen sehr hochwertigen Socken auf einer festen Platte montieren.
Aber selbst da ist man noch locker unter 50 Euro, auch bei Original 
"Textool"

Oder man schaut ob man einen Universalprogrammer wie einen GALEP IV 
günstig gebraucht bekommt. die Vierer bekommt man so ab 100 Euro 
einigermaßen regelmäßig...

Entscheident für die Wahl des tatsächlichen Programmierinterfaces wäre 
für mich allerdings die tatsächlich Menge an zu programmierenden PICs. 
Für eine Handvoll am Tag und vor allem für gelegentliche Entwicklung 
reicht ein PK3 locker aus. (Ist im Verlgeich beim Programmieren eher 
Langsam)

Sind es aber mehrere hundert Controller Pro Tag, an mehreren Tagen die 
Woche und das fast  jede Woche im Jahr würde ich definitiv einen 
deutlich schnelleren Programmieradapter wählen. Da sind die "Production 
Programmer" von Microchip schon nicht schlecht.

Die ICD liegen Geschwindigkeitsmäßig irgendwo in der Mitte.

Wie die Galep IV im Vergleich liegen kann ich gerade nicht einmal
sicher sagen. Benutze meine beiden (IV &V ) im Pic bereich nur für die 
alten C typen. Kann bei Interesse aber gerne mal den 
Geschwindigkeitsvergleich zwischen PK3 <> ICD3 <> GALEP IV <> GALEP V 
machen. (Wobei ich aber ohne Not den GalepV nur für die PIC 
Progammierung nicht empfehlen würde, der IV ist solider und erheblich 
billiger gebraucht zu haben...)


Gruß
Carsten

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.