Forum: Mikrocontroller und Digitale Elektronik PIC-Anfänger Programmierfrage


von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe hier eine Schaltung, die mit einem PIC 16F876 bestückt wird.
Sie wird mit einem 8MHz-Quarz betrieben.
http://usuaris.tinet.cat/fmco/dccgen_en.html

Damit ich den Kontroller programmieren kann, habe ich das Programm 
"IC-PROG"
installiert und mir einen sog. JDM-Programmer gebaut.

Es ist das erste Mal, daß ich mit einem PIC arbeite und daher habe ich
folgende Fragen:
1. Wie muß ich den Oszillator einstellen, damit er mit einem externen
Quarz von 8MHz arbeitet? LP, XT oder HS?
(RC scheint der interne Oszillator zu sein).

2. Wie müssen für oben genannte Bedingungen die Fuse Bits stehen?

Das Datenblatt ist mir nicht so ganz verständlich und ich habe bzw.
brauche diesen Kontroller nur einmal und will ihn nicht so flashen,
daß ich mich aus Versehen aussperre.

MfG Paul

von M. J. (manfred-64)


Lesenswert?

Paul Baumann schrieb:
> 1. Wie muß ich den Oszillator einstellen, damit er mit einem externen
> Quarz von 8MHz arbeitet? LP, XT oder HS?
> (RC scheint der interne Oszillator zu sein).

HS, steht aber eigentlich  verständlich im Datenblatt. Wenn Du was 
andres einstellst braucht er halt mehr Strom.
Wichtig is die Einstellung hinsichtlich des verwendeten OSC: interner 
RTC, externer  Quarz o. Keramikeresonator, ext. RTC, extern erzeugter 
Takt (ohne Zutun des µC).

Paul Baumann schrieb:
> Das Datenblatt ist mir nicht so ganz verständlich und ich habe bzw.
> brauche diesen Kontroller nur einmal und will ihn nicht so flashen,
> daß ich mich aus Versehen aussperre.

Keine Panik aus nem Pic kannste Dich nich wirklich aussperren :)

Gruß
Manfred

von Loonix (Gast)


Lesenswert?

Paul Baumann schrieb:
> 1. Wie muß ich den Oszillator einstellen, damit er mit einem externen
> Quarz von 8MHz arbeitet? LP, XT oder HS?

HS

> (RC scheint der interne Oszillator zu sein).

Stimmt.

>2. Wie müssen für oben genannte Bedingungen die Fuse Bits stehen?

Paul Baumann schrieb:
> Das Datenblatt ist mir nicht so ganz verständlich und ich habe bzw.
> brauche diesen Kontroller nur einmal und will ihn nicht so flashen,
> daß ich mich aus Versehen aussperre.

Kann eigentlich nicht passieren. Du kannst per ICSP doch immer wieder 
neu schreiben, auch die Config-Bits (Fuses).

von usuru (Gast)


Lesenswert?

für 8 MHz Quarz ist die Einstellung HS

Aussperren geht bei PICs (fast) nicht

JDM-Prommer sind eigentlich "für die Katz", aber für ein einmaliges 
Experiment akzeptabel, JDM läuft aber über die RS232 und funktioniert 
NICHT an USB-seriell-Umsetzern.

Die Fuses spielen dafür fast keine Rolle, stell die so ein, wie sie für 
das Programm vorgegeben sind. Allerdings braucht man meistens keinen WDT 
und keinen BODEN (Brownout), aber LVP MUSS unbedingt weg (sonst sperrst 
Du Dich tatsächlich aus). WRT ist der Schreibschutz für das Flash. PWRT 
ist ganz sinnvoll, dann wartet der PIC nach dem Einschalten erst mal 
70ms, bevor er losläuft.

von Paul Baumann (Gast)


Lesenswert?

@Manfred

Danke für die Auskunft. Ich habe das Datenblatt von Microchip 
heruntergeladen und darin nach dem Stichwort "Oscillator" suchen lassen.
 ->kein Treffer.

Soll ich die Fuse-Bits so stehen lassen, wie im Bild oben?

Das ist die Standardeinstellung nach dem Start von IC-prog.

WDT wird wohl der Watchdog-Timer sein.
BODEN der Brown-Out Detektor

aber was PWRT, LVP, CPD und WRT sind, finde ich auch nicht.

MfG Paul

von Paul Baumann (Gast)


Lesenswert?

Oh, wir haben uns überschnitten....

Danke auch an Loonix und Usuru.

Ja, in dem Link zur Schaltung hat der Verfasser nur die .hex-Datei
angegeben, aber keine Fuse-Einstellungen. Deshalb fragte ich Euch.

Ich habe hier noch einen richtig "guten" Rechner mit 2 "echten" 
seriellen Schnittstellen, da geht es noch anständig.

Na, da will ich den kleinen Kerl mal mit 13 Volt Programmierspannung
erschrecken...

;-)
MfG Paul

von Thomas W. (thomas0906)


Lesenswert?

Hallo Paul

Du hast den DCCGen gebaut?

Kannst Du mir eine Einkaufsliste geben, wo ich die Teile bekomme und
was Du genommen hast?

Hast Du noch eine Platine übrig?

Ich muß unbedingt noch den Source Code besorgen, weil ich das um 
XPressnet erweitern möchte. Dann kann ich eine Meldung an Zentrale/PC 
schicken, damit die PC Software weiß, was ich am DCCGen geschaltet habe.

P.S. Den PIC kann ich Dir brennen, wenn es nicht funktioniert...
Ich denke mal, man braucht keine Fuses anzugeben, da das alles im Hex 
File integriert sein sollte.

Danke Thomas

von M. J. (manfred-64)


Lesenswert?

Paul Baumann schrieb:
> Danke für die Auskunft. Ich habe das Datenblatt von Microchip
> heruntergeladen und darin nach dem Stichwort "Oscillator" suchen lassen.
>  ->kein Treffer.

??????

Also das man sich über all zu Viele Treffer im Datenblatt, mit dem 
Suchbegriff "Oscillator" beschweren könnte ist mir verständlich.
Aber damit gar kein Treffer zu haben ist auch ne Kunst :D


mfg
Manfred

von Carsten S. (dg3ycs)


Lesenswert?

usuru schrieb:
> aber LVP MUSS unbedingt weg (sonst sperrst
> Du Dich tatsächlich aus).

NEIN! Zumindest zum MUSS!
Man kann sich beim PIC (fast*) nicht aussperren - weder versehentlich 
noch Absichtlich. Und schon gar nicht mit der LVP Fuse.
LVP bedeutet ja LowVoltageProgramming und ermöglicht das Programmieren 
des Pics OHNE erhöhte Programmierspannung. ISt prinzipiell also eine 
Vereinfachung...

Allerdings ist das mit dem Opfer eines IO Pins verbunden, der dann auch 
im normalbetrieb nicht mehr zur Verfügung steht (PGM Pin, oft einer des 
PortB). Schlimmer noch, wander der PIN während des Programmierens auf 
High weil er nicht ganz sicher an Masse liegt, dann hält der PIC an und 
befindet sich im Programmiermodus.

Daher ist es ratsam diese Fuse einfach zu deaktivieren, dann hat man 
einen IO Pin mehr und das Problem mit dem versehentlichen Anhalten ist 
auch keines mehr.

Zum *(bzgl. Fast):
Einige wenige PICs mit hoher Beinchenzahl haben die Möglichkeit das man 
zwischen Zwei verschiedenen Konfigurationen für die Programmierpins mit 
einer Fuse umschalten kann. (ICD/ICSP Fuse).
So kann man zum beispiel bei einem Controller der normalerweise 40PIN 
hat, sich aber in einem TFQP GEhäuse mit 44 Pins befindet diese 
Programmier-/Debugleitungen auf die normalerweise nicht angeschlossenen 
(NC) PINs umleiten, so das man keinen IO Port doppelt nutzen muss.
Dummerweise lässt sich das aber bei den Varianten im 40Pol DIP Gehäuse 
(Je nach verwendeter Kombi ProgSoft/Brenner) mnachmal auch aktivieren. 
Da diese zuätzlichen Anschlüsse aber Physikalisch nicht vorhanden 
sind...

Eine abhilfe schafft hier dann ein komplettes Löschen des PICs...
ISt also auch nicht wirklich dramatisch...

Gruß
Carsten

von Paul Baumann (Gast)


Lesenswert?

@Thomas

>Du hast den DCCGen gebaut?

Noch nicht, -ich bin dabei, ihn zu bauen.

>Kannst Du mir eine Einkaufsliste geben, wo ich die Teile bekomme und
>was Du genommen hast?

Nein, denn ich habe alle Teile dafür hier gehabt.  Aber es sind ja auch 
nicht so viele Sachen nötig. Die Schaltung ist ja bis auf den PIC nicht
mit exotischen Teilchen bestückt.

>Hast Du noch eine Platine übrig?

Auch nicht, -ich stelle sie nur einzeln für mich selbst im 
Tonertransfer-
verfahren her.

MfG Paul

von bingo (Gast)


Lesenswert?

> Danke für die Auskunft. Ich habe das Datenblatt von Microchip
> heruntergeladen und darin nach dem Stichwort "Oscillator" suchen lassen.
> ->kein Treffer.

Brille ??? Kapitel 12, Seite 120 ff (Config und Oscillator)

Schau Dich mal bei www.sprut.de um, da steht alles über PICs, viele 
Beispiele etc.

zu LVP: http://sprut.de/electronic/pic/fallen/fallen.html#lvpon

von Paul Baumann (Gast)


Lesenswert?

@Bingo

Jetzt habe ich das "richtige" Datenblatt gefunden. Das, was ich zuerst
fand, war nur so eine Kurzinformation. Ja, das beantwortet mir meine
Fragen.

Ich will mich gar nicht weitergehend mit den PIC befassen, nur diese
eine Schaltung damit bauen. Sonst gehe ich lieber mit AVR um, weil
ich mich mit diesen Kontrollern begonnen habe und davon auch eine ganze
Menge verschiedener Kollegen vorrätig sind.

MfG Paul

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

In aller Regel sind bei übersetzten PIC-Programmen die Config-Bits in 
den .HEX-Dateien enthalten.
Man kann es evtl. überprüfen, indem man ein Config-Bit ändert und dann 
die Hex-Datei erneut lädt.

Wir PIC-Leute sprechen eigentlich nicht von "fuses", eher von 
"Config-Bits" oder -Register.

Mit dem High-Voltage-Programmer JDM kann man einen PIC immer wieder neu 
programmieren.

von holger (Gast)


Lesenswert?

>In aller Regel sind bei übersetzten PIC-Programmen die Config-Bits in
>den .HEX-Dateien enthalten.

Jupp, da ist es:

:02400E00723FFF

Configuration Word ist 0x723F

von Anja (Gast)


Lesenswert?

Paul Baumann schrieb:
> (RC scheint der interne Oszillator zu sein).

Der 16F876 hat gar keinen internen RC-Oszillator. R + C müssen extern an 
den Quarzpin angeschlossen werden. (Datasheet Kap 12 ff)

Gruß Anja

von Paul Baumann (Gast)


Lesenswert?

Alles klar. Danke noch einmal an alle Helfer und Ratgeber.
Es ist, wie es immer ist, wenn man etwas Neues ausprobiert: Man ist 
vorsich-
tig und fragt lieber mal Leute, die sich schon damit befasst haben.

Vorbeugen ist besser als nach hinten umfallen.
(alte mongolische Volksweisheit)

;-)
MfG Paul

von M. J. (manfred-64)


Lesenswert?

Paul Baumann schrieb:
> Vorbeugen ist besser als nach hinten umfallen.
> (alte mongolische Volksweisheit)

Alte Russische Weisheit
wenn de nach hinten umfällst geht der letzte Schnaps auch noch rein :)

von John (Gast)


Lesenswert?

holger schrieb:
> Jupp, da ist es:
>
> :02400E00723FFF
>
> Configuration Word ist 0x723F

Fast richtig.
In der Hex-Datei sind die Daten als Little-Endian gespeichert.
Das Config-Word ist deshalb: 0x3F72

Gruß
John

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.