PIC läuft erst nach reset ....

Gast #354629
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
#354630
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
Gast #354631
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...
#354632
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
Gast #354635
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....
Gast #354637
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...
Gast #354639
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 =).
Gast #354640
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!
Gast #354641
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?!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren