Forum: Mikrocontroller und Digitale Elektronik PIC läuft erst nach reset ....


von HAL9000 (Gast)


Lesenswert?

Hallo,
Hab das Problem, dass bei mir ein PIC16F876 erst dann läuft, wenn ich
ihn resette. Für meine Anwendung muss der aber laufen, sobald der Saft
angeht. Bei anderen PICs (84, 88, 648) geht das tadellos.
Wenn ich im reset-zustand (reset=0) anschalte, und reset loslassse
(reset=1) funktioniert es auch. Ich dachte, könnte das selbe durch
einen Tiefpass mit Kondis aller art lösen, dat mag er aber nicht :(
jemand Rat ?

danke und grüße, hal9000

von Peter D. (peda)


Lesenswert?

Das Datenblatt ist Dein Freund, einfach mal nachsehen, ob der überhaupt
ein internes Reset hat. Eventuell müssen Fuse Bits dafür gesetzt
werden.


AVRs haben ein internes Reset, welches man sich voll an die Backe
schmieren kann. Erst wenn man zusätzlich das Brown-Out-Reset
einschaltet, funktionierts wirklich.


MCs ohne internes Reset können durch ein RC-Glied (10k, 10µF) resettet
werden, wenn mindestens 10s der Saft weg war. Aber für 100%
Zuverlässigkeit brauchen die einen Reset-IC.


Peter

von HAL9000 (Gast)


Lesenswert?

das datenblatt ist leider mal überhaupt kein freund :(
habs eben sogar versucht den Reset mit Komparator & RC zu schalten,
oder gar Digital mit einem anderen PIC, das interessiert ihn alles
scheinbar nicht. Erst wenn er da kleine Oszillationen bekommt
(geprellter Taster, oder wenn ich zitternd das Kabel an Masse lege)
geht das...
jetzt bin ich mehr als verwirrt :( kaputten uC schließe ich aus...

von Peter D. (peda)


Lesenswert?

Dann gibt es noch die Möglichkeit, daß Dein Quarz nicht richtig
anschwingt und erst durch mehrere Pulse irgendwie in Gang kommt.

Ich glaub, die PICs habe auch verschiedene Fuses je nach Quarztyp.


Oder Variablen werden nicht richtig initialisiert und erhalten erst
durch Störpulse zufällig richtige Startwerte.


Hat denn Dein PIC ein Brown-Out-Reset und hast Du es aktiviert ?


Peter

von mc.emi (Gast)


Lesenswert?

hast du den "Power up timer" eingeschalten? der verzögert dir nach
anlegen der betriebsspannung den start des PICs um 72ms - vielleicht
hilft es ?

von akw (Gast)


Lesenswert?

Ich würd mal die Startup Time hochsetzen, vllt steigt deine Spannung
nicht schnell genug.

von HAL9000 (Gast)


Lesenswert?

Hab jetzt sowohl Brownout detect sowie powerup timer ausprobiert, bringt
beides nix ....
das mit den variablen schließ ich auch aus, ist momentan sogar nur ein
billiges LED-blink-testprogramm, um erstmal dieses problem zu lösen.
Quarz hab ich auch mal mit Keramikresonator und mit nen richtigen
Quarzoszillator ausgetauscht, hilft auch nicht... und ich mein mit
anderen PIC-typen funzt es ja...
HMMMM....

von akw (Gast)


Lesenswert?

RC-Glied schon probiert? Wenn garnix geht mal nen neuen nehmen. Oder n
REset-IC.

von HAL9000 (Gast)


Lesenswert?

jap, bei RC auch selbes Phänomen. Und hab schon 5 PICs reingelegt, daran
kanns auch nicht liegen...
apropos, weiß jemand, wie man im CC5X compiler in den configs den
internen oszillator wählt ? #pragma config FOSC=INTRC oder so geht
leider nicht... der mag scheinbar nur HC, XT und RS...

von Dieter Werner (Gast)


Lesenswert?

Falls Du den internen Oszillator im 16F876 benutzen willst, der hat
keinen.
Siehe Datenblatt Seiten 145 und 146.

von Thomas (Gast)


Lesenswert?

schreib doch mal deine picconfiguration hier rein. den funktionscode
kannst ja vorerst aussparen. und um das configword zu setzen könntest
du alternativ ja auch cc5x in mplab einbinden und dort das configword
im menü einstellen. zum debuggen ist die umgebung auch zu empfehlen =).

von HAL9000 (Gast)


Lesenswert?

uaaaa, danke für den Hinweis auf die Config, auch wenn das völlig ominös
ist, hab das problem gelöst:
habe zuvor meine Config immer nur mit "#pragma config WDTE=off" usw
gesetzt. Schreibe ich diese binär, (wo wiederum meine 88er und 648er
mucks machen) und setze dort noch irgendwelche codeprotection-bits,
geht es!! aber was zum teufel hat denn codeprotection damit zu tun,
dass der pic nicht bei powerup startet....
egal, danke an alle!

von tastendrücker (Gast)


Lesenswert?

Das schreit aber danach, dass dein Compiler nicht auf den richtigen PIC
eingestellt ist. Haben denn die anderen PIC's, - die, bei denen es
funktioniert (84, 88, 648) - identische Config-Bits wie der 876?

Könnte ja sein, das du bei falscher Controller-Wahl in CC5X z. B. mit

 #pragma config WDTE=off

beim 867 das Config-Bit für Power-Up-Timer auf "0" setzt, und nicht
für den WDT, wie du eigentlich wolltest?!

von HAL9000 (Gast)


Lesenswert?

hm also der power-up timer hatte zwar keine wirkung, aber das mit den
nicht identischen Config-bits ist interessant, vorallem wenn man sie
Binär schreibt. thx4 tip...

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.