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
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
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...
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
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....
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...
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 =).
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!
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?!
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...